当前位置: 首页 > news >正文

Squid代理:APT、PyPI和Docker的内网穿透解决方案

如果你是在内网环境,并且你知道一台服务器可以链接外网,可以通过Squid代理的方式更新apt、pypi、docker源。

你可以通过在服务器A(172.16.16.122,可上外网)上设置代理服务器来实现服务器B通过服务器A访问外部APT源的需求。以下是具体步骤:

内网环境下

1.在可以访问外网的服务器A上

  1. 安装代理服务

    假设你使用的是Squid作为代理服务器,因为它是Linux下常用的代理服务器软件之一。

    在服务器A上安装Squid:

    sudo apt update
    sudo apt install squid
    
  2. 配置Squid代理服务器

    编辑Squid的配置文件/etc/squid/squid.conf,使其允许服务器B的访问请求:

    sudo vim /etc/squid/squid.conf
    

    在文件中添加或修改以下行:

    http_access allow all
    

    这将允许所有的HTTP请求通过代理,你也可以设置更细粒度的访问控制。

    保存并关闭文件后,重启Squid服务以应用新的配置:

    sudo systemctl restart squid
    

2.在其他无法访问外网的B服务器下

对于APT:

你已经得到了关于如何通过代理服务器进行APT更新的说明,这里我再概述一遍:

  1. 在服务器A上安装并配置好Squid代理服务器。

  2. 在服务器B上配置APT代理,创建或编辑/etc/apt/apt.conf.d/02proxy文件,并添加:

    Acquire::http::Proxy "http://172.16.16.122:3128";
    Acquire::https::Proxy "https://172.16.16.122:3128";
    

注意,HTTPS代理可能需要Squid进行额外的SSL配置。

对于PyPI:

对于Python包管理器,你需要配置pip以使用代理。在服务器B上,你可以为pip添加代理设置:

  1. 在用户主目录下创建或编辑.pip/pip.conf(对于全局配置则是/etc/pip.conf),添加:

    [global]
    proxy = http://172.16.16.122:3128
    

    如果你需要通过HTTPS使用代理,确保Squid配置支持SSL,并使用相应的https://代理地址。

对于Docker:

对于Docker,需要在服务器B上配置Docker守护程序以使用HTTP/HTTPS代理:

  1. 创建或编辑/etc/systemd/system/docker.service.d/http-proxy.conf文件,添加:

    [Service]
    Environment="HTTP_PROXY=http://172.16.16.122:3128/"
    Environment="HTTPS_PROXY=http://172.16.16.122:3128/"
    Environment="NO_PROXY=localhost,127.0.0.1"
    
  2. 重新加载Daemon配置,重启Docker服务:

    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

这样配置后,服务器B的Docker守护程序会通过服务器A的Squid代理进行外网访问。把这个几个配置给我封装成一个自动化执行的shell脚本。

配置封装成一个自动化执行的shell脚本proxy_setup.sh

#!/bin/bash# 变量定义
TODAY=$(date +%Y-%m-%d)
PROXY_SERVER_IP="172.16.16.122"
PROXY_PORT="3128"
SQUID_CONFIG_FILE="/etc/squid/squid.conf"
DOCKER_PROXY_CONFIG_FILE="/etc/systemd/system/docker.service.d/http-proxy.conf"
APT_PROXY_CONFIG_FILE="/etc/apt/apt.conf.d/02proxy"
PIP_CONFIG_FILE="/etc/pip.conf"# 打印帮助信息
print_help() {echo "Usage:"echo "./proxy_setup.sh Squid    # 安装并配置Squid"echo "./proxy_setup.sh apt      # 配置APT代理"echo "./proxy_setup.sh pip      # 配置Pip代理"echo "./proxy_setup.sh docker   # 配置Docker代理"echo "./proxy_setup.sh all      # 配置APT、Pip和Docker代理"exit 0
}# 备份并清空配置文件的函数
backup_and_clear_config() {local config_file=$1if [[ -s $config_file ]]; thenlocal backup_file="${config_file}.${TODAY}.bak"echo "Backing up and clearing $config_file to $backup_file"sudo cp $config_file $backup_fileecho '' | sudo tee $config_file > /dev/nullfi
}# 安装Squid代理服务器
function install_squid_on_server_a() {echo "Installing and configuring Squid..."sudo apt updatesudo apt install -y squid
}# 配置Squid代理服务器
function configure_squid() {backup_and_clear_config ${SQUID_CONFIG_FILE}echo "http_access allow all" | sudo tee -a ${SQUID_CONFIG_FILE}sudo systemctl restart squid
}# 在服务器B上配置APT代理
function configure_apt_proxy() {backup_and_clear_config ${APT_PROXY_CONFIG_FILE}echo "Acquire::http::Proxy \"http://${PROXY_SERVER_IP}:${PROXY_PORT}\";" | sudo tee ${APT_PROXY_CONFIG_FILE}echo "Acquire::https::Proxy \"http://${PROXY_SERVER_IP}:${PROXY_PORT}\";" | sudo tee -a ${APT_PROXY_CONFIG_FILE}
}# 在服务器B上配置Pip代理
function configure_pip_proxy() {local pip_dir=$(dirname ${PIP_CONFIG_FILE})mkdir -p ${pip_dir}backup_and_clear_config ${PIP_CONFIG_FILE}echo "[global]" | sudo tee ${PIP_CONFIG_FILE}echo "proxy = http://${PROXY_SERVER_IP}:${PROXY_PORT}" | sudo tee -a ${PIP_CONFIG_FILE}
}# 在服务器B上配置Docker代理
function configure_docker_proxy() {local docker_dir=$(dirname ${DOCKER_PROXY_CONFIG_FILE})mkdir -p ${docker_dir}backup_and_clear_config ${DOCKER_PROXY_CONFIG_FILE}echo "[Service]" | sudo tee ${DOCKER_PROXY_CONFIG_FILE}echo "Environment=\"HTTP_PROXY=http://${PROXY_SERVER_IP}:${PROXY_PORT}/\"" | sudo tee -a ${DOCKER_PROXY_CONFIG_FILE}echo "Environment=\"HTTPS_PROXY=http://${PROXY_SERVER_IP}:${PROXY_PORT}/\"" | sudo tee -a ${DOCKER_PROXY_CONFIG_FILE}echo "Environment=\"NO_PROXY=localhost,127.0.0.1\"" | sudo tee -a ${DOCKER_PROXY_CONFIG_FILE}sudo systemctl daemon-reloadsudo systemctl restart docker
}# 检查传入参数并执行对应的函数
case "$1" inSquid)install_squid_on_server_aconfigure_squid;;apt)configure_apt_proxy;;pip)configure_pip_proxy;;docker)configure_docker_proxy;;all)configure_apt_proxyconfigure_pip_proxyconfigure_docker_proxy;;-h|--help)print_help;;*)echo "Invalid option: $1"echo "Use -h or --help to get the usage information."exit 1;;
esacecho "Proxy setup is complete."

将此脚本保存为文件后(例如 proxy_setup.sh),您可以传递参数来指定要执行的动作。例如:

chmod +x proxy_setup.sh
sudo ./proxy_setup.sh Squid    # 安装并配置Squid 
sudo ./proxy_setup.sh apt      # 配置APT代理
sudo ./proxy_setup.sh pip      # 配置Pip代理
sudo ./proxy_setup.sh docker   # 配置Docker代理
sudo ./proxy_setup.sh all      # 配置APT、Pip和Docker代理

相关文章:

Squid代理:APT、PyPI和Docker的内网穿透解决方案

如果你是在内网环境,并且你知道一台服务器可以链接外网,可以通过Squid代理的方式更新apt、pypi、docker源。 你可以通过在服务器A(172.16.16.122,可上外网)上设置代理服务器来实现服务器B通过服务器A访问外部APT源的需…...

MYSQL--触发器

一:介绍: 1.触发器实际上就是一种特殊的存储过程,两者都能够在MYSQL当中完成特定的功能,存储在服务器上的特殊SQL片段,可以重复进行使用,提高复用性的一种功能.但是触发器并不需要进行调用,在使用DML操作的时候会自动的调用相关的触发器操作 2.触发器能够对于DML操作当中的,删除…...

onnx 1.16 doc学习笔记四:python API-If和Scan

onnx作为一个通用格式,很少有中文教程,因此开一篇文章对onnx 1.16文档进行翻译与进一步解释, onnx 1.16官方文档:https://onnx.ai/onnx/intro/index.html](https://onnx.ai/onnx/intro/index.html), 如果觉得有收获&am…...

如何构建企业专属GPT

大语言模型(LLM)具有令人印象深刻的自然语言理解和生成能力, 2022年11月底OpenAI发布了ChatGPT,一跃成为人工智能AI领域的现象级应用。但由于LLM的训练数据集主要来源于互联网数据,企业私域信息并未被LLM所训练&#x…...

知识积累(二):损失函数正则化与权重衰减

文章目录 1. 欧氏距离与L2范数1.1 常用的相似性度量 2. 什么是正则化?参考资料 本文只介绍 L2 正则化。 1. 欧氏距离与L2范数 欧氏距离也就是L2范数 1.1 常用的相似性度量 1)点积 2)余弦相似度 3)L1和L2 2. 什么是正则化&…...

消息中间件-面试题

MQ选择 一、Kafka 1、消息队列如何保证消息可靠性 消息不重复 生产者控制消费者幂等消息不丢失 生产者发送,要确认broker收到并持久化broker确认消费者消费完,再删除消息2、kafka是什么 Kafka是一种高吞吐量、分布式、基于发布/订阅的消息中间件,是Apache的开源项目。broke…...

Python 将二维数组或矩阵变为三维

Python 将二维数组或矩阵变为三维 引言正文基础 拓展 引言 之前,我们已经介绍过了 Python 将一维数组或矩阵变为三维。然而,很多时候,我们也需要对二维矩阵进行操作,这里特来介绍一下如何将二维矩阵扩展为三维。 阅读这一篇前推…...

区块链与Solidity详细介绍及基本语法使用

一、区块链简介 区块链是一种分布式数据库技术,它以块的形式存储数据,并通过加密算法确保数据的安全性。每个块包含一系列交易,并通过哈希值与前一个块相连接,形成一个链式结构。这种结构使得数据难以被篡改,因为任何对…...

题目 1253: 老王赛马

题目描述: 赛马是一古老的游戏,早在公元前四世纪的中国,处在诸侯割据的状态,历史上称为“战国时期”。在魏国作官的孙膑,因为受到同僚庞涓的迫害,被齐国使臣救出后,到达齐国国都。 赛马是当时最受齐国贵族…...

【MATLAB源码-第144期】基于matlab的蝴蝶优化算法(BOA)无人机三维路径规划,输出做短路径图和适应度曲线。

操作环境: MATLAB 2022a 1、算法描述 ​蝴蝶优化算法(Butterfly Optimization Algorithm, BOA)是基于蝴蝶觅食行为的一种新颖的群体智能算法。它通过模拟蝴蝶个体在寻找食物过程中的嗅觉导向行为以及随机飞行行为,来探索解空间…...

地下管线管网三维建模工具MagicPipe3D V3.4.2发布

经纬管网建模系统MagicPipe3D,本地离线参数化构建地下管网三维模型(包括管道、接头、附属设施等),输出标准3DTiles服务、Obj模型等格式,支持Cesium、Unreal、Unity、Osg等引擎加载进行三维可视化、语义查询、专题分析&…...

糖尿病性视网膜病变(DR)的自动化检测和分期

糖尿病性视网膜病变(DR)的自动化检测和分期 提出背景DR的阶段及其特征 历年解法计算机视觉方法多分类方法 新的解法深度学习方法迁移学习大模型多模型集成全流程分析 总结特征1:图像分割特征2:疾病分级特征3:治疗建议生…...

C 标准库 - <errno.h>

在C语言编程中&#xff0c;<errno.h> 头文件扮演着至关重要的角色&#xff0c;它提供了一个全局变量 errno 以及一系列预定义宏&#xff0c;用于指示系统调用或库函数执行过程中发生的错误。这些宏有助于程序员诊断和处理运行时错误。 errno 变量 extern int errno;err…...

基于springboot+vue的房屋租赁管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…...

Sora----打破虚实之间的最后一根枷锁----这扇门的背后是人类文明的晟阳还是最后的余晖

目录 一.Sora出道即巅峰 二.为何说Sora是该领域的巨头 三.Sora无敌的背后究竟有怎样先进的处理技术 1.Spacetime Latent Patches 潜变量时空碎片&#xff0c;建构视觉语言系统 2.扩散模型与Diffusion Transformer&#xff0c;组合成强大的信息提取器 3.DiT应用于潜变量时…...

C语言之static关键字详解

C语言之static关键字详解_c语言static-CSDN博客 1.变量 2.局部变量和全局变量 3.变量的作用域 4.变量的生命周期 二、static关键字的作用 三、static关键字修饰局部变量 四、static关键字修饰全局变量 五、static关键字修饰函数...

Redis高性能原理

redis大家都知道拥有很高的性能&#xff0c;每秒可以支持上万个请求&#xff0c;这里探讨下它高性能的原理。单线程架构和io多路复用技术。 一&#xff0c;单线程架构 单线程架构指的是命令执行核心线程是单线程的&#xff0c;数据持久化、同步、异步删除是其他线程在跑的。re…...

MSS与cwnd的关系,rwnd又是什么?

慢启动算法是指数递增的 这种指数增长的方式是慢启动算法的一个核心特点&#xff0c;它确保了TCP连接在开始传输数据时能够快速地探测网络的带宽容量&#xff0c;而又不至于过于激进导致网络拥塞。具体来说&#xff1a; 初始阶段&#xff1a;当TCP连接刚建立时&#xff0c;拥…...

解决两个MySQL5.7报错

目录 1.启动不了MySQL&#xff0c;报错缺少MSVCR120.dll去官网下载vcredist_x64.exe运行安装进入管理员CMD 2.本地计算机 上的 mysql 服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止&#xff0c;Fatal error: Can‘t open and lock privilege tables: Table ‘…...

[OpenAI]继ChatGPT后发布的Sora模型原理与体验通道

前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff1a;https://www.captainbed.cn/z ChatGPT体验地址 文章目录 前言OpenAI体验通道Spacetime Latent Patches 潜变量时空碎片, 建构视觉语言系统…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制&#xff0c;展现出显著的技术优势&#xff1a; 深层组织穿透能力&#xff1a;适用于活体组织深度成像 高分辨率观测性能&#xff1a;满足微观结构的精细研究需求 低光毒性特点&#xff1a;减少对样本的损伤…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

goreplay

1.github地址 https://github.com/buger/goreplay 2.简单介绍 GoReplay 是一个开源的网络监控工具&#xff0c;可以记录用户的实时流量并将其用于镜像、负载测试、监控和详细分析。 3.出现背景 随着应用程序的增长&#xff0c;测试它所需的工作量也会呈指数级增长。GoRepl…...

EEG-fNIRS联合成像在跨频率耦合研究中的创新应用

摘要 神经影像技术对医学科学产生了深远的影响&#xff0c;推动了许多神经系统疾病研究的进展并改善了其诊断方法。在此背景下&#xff0c;基于神经血管耦合现象的多模态神经影像方法&#xff0c;通过融合各自优势来提供有关大脑皮层神经活动的互补信息。在这里&#xff0c;本研…...