需求背景

苏州天剑服务工程师在某项目交付过程中,需要为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
使用CentOS 7.9创建yum内网代理

验证业务

可以使用 curlwget 来测试代理是否正常工作,确保外部请求可以通过代理服务器访问外部资源。

curl -I --proxy http://192.168.18.192:3128 http://mirrors.aliyun.com/centos/
使用CentOS 7.9创建yum内网代理

也可以在代理端查看Squid日志检查请求状态是否正确。

sudo tail -f /var/log/squid/access.log
使用CentOS 7.9创建yum内网代理

相关新闻

联系我们

联系我们

400-0512-768

邮件:support@sworditsys.com

工作时间:周一至周五 8:00 - 21:00

分享本页
返回顶部