需求背景
苏州天剑服务工程师在某项目交付过程中,需要为CentOS7.9的虚拟机通过yum安装所需的软件包,但是由于用户的网络限制,业务网段不允许访问互联网,为快速部署业务经与用户沟通,提供了一台允许访问互联网的虚拟机,我司服务工程师希望通过该台虚拟机为业务虚拟机提供yum代理,以使业务网段虚拟机通过yum安装所需的软件包及依赖。
代理段部署
首先使用setenforce 0
临时关闭SELinux,避免影响Squid的服务运行。
将以下bash脚本粘进yum代理虚机,根据实际需求调整PROXY_IP的IP地址,并执行该脚本。
vim setup_yum_proxy.sh
chmod +x ./setup_yum_proxy.sh
./setup_yum_proxy.sh
#!/bin/bash
# 设置变量
SQUID_CONF="/etc/squid/squid.conf"
YUM_CONF="/etc/yum.conf"
SQUID_CACHE_DIR="/var/spool/squid"
PROXY_PORT=3128
PROXY_IP="192.168.18.192" # 使用你的服务器IP地址
ALLOWED_NET="0.0.0.0/0" # 允许所有网段访问
# 安装 Squid 代理
echo "Step 1: 安装 Squid..."
sudo yum install -y squid
# 修改 Squid 配置文件
echo "Step 2: 配置 Squid..."
sudo cp $SQUID_CONF ${SQUID_CONF}.bak # 备份原始配置文件
sudo tee $SQUID_CONF > /dev/null <<EOL
# Squid代理配置
acl localnet src $ALLOWED_NET
http_access allow localnet
http_port $PROXY_PORT
cache_dir ufs $SQUID_CACHE_DIR 10000 16 256 # 设置缓存目录大小为10GB
EOL
# 启动并设置Squid开机自启
echo "Step 3: 启动并启用 Squid 服务..."
sudo systemctl start squid
sudo systemctl enable squid
# 检查 Squid 状态
if systemctl is-active --quiet squid; then
echo "Squid 服务已成功启动!"
else
echo "Squid 服务启动失败,请检查日志。"
exit 1
fi
# 配置客户端的 Yum 使用代理
echo "Step 4: 配置Yum使用代理..."
sudo cp $YUM_CONF ${YUM_CONF}.bak # 备份yum配置文件
if grep -q "^proxy=" $YUM_CONF; then
echo "Yum 已经配置了代理设置。"
else
echo "proxy=http://$PROXY_IP:$PROXY_PORT" | sudo tee -a $YUM_CONF
echo "Yum 代理已配置为 http://$PROXY_IP:$PROXY_PORT"
fi
# 更改为阿里云的CentOS镜像源
echo "Step 5: 更改Yum源为阿里云镜像..."
sudo tee /etc/yum.repos.d/CentOS-Base.repo > /dev/null <<'EOL'
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
EOL
# 重启 Squid 服务使配置生效
echo "Step 6: 重启 Squid 服务..."
sudo systemctl restart squid
echo "本地 Yum 源代理配置已完成!现在你可以通过代理服务器 $PROXY_IP:$PROXY_PORT 使用阿里云的镜像源。"
请记得关闭代理端操作系统防火墙或放行Squid默认的3128端口。
业务端部署
首先备份默认的源文件,并将源修改为国内源,并为操作系统配置正确的DNS服务器,确保可以正确解析源域名,如ping mirrors.aliyun.com
进行验证。
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
vim /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
修改/etc/yum.conf配置文件,添加代理地址。
proxy=http://192.168.18.192:3128
验证业务
可以使用 curl
或 wget
来测试代理是否正常工作,确保外部请求可以通过代理服务器访问外部资源。
curl -I --proxy http://192.168.18.192:3128 http://mirrors.aliyun.com/centos/
也可以在代理端查看Squid日志检查请求状态是否正确。
sudo tail -f /var/log/squid/access.log