需求背景
蘇州天劍服務(wù)工程師在某項目交付過程中,需要為CentOS7.9的虛擬機通過yum安裝所需的軟件包,但是由于用戶的網(wǎng)絡(luò)限制,業(yè)務(wù)網(wǎng)段不允許訪問互聯(lián)網(wǎng),為快速部署業(yè)務(wù)經(jīng)與用戶溝通,提供了一臺允許訪問互聯(lián)網(wǎng)的虛擬機,我司服務(wù)工程師希望通過該臺虛擬機為業(yè)務(wù)虛擬機提供yum代理,以使業(yè)務(wù)網(wǎng)段虛擬機通過yum安裝所需的軟件包及依賴。
代理段部署
首先使用setenforce 0
臨時關(guān)閉SELinux,避免影響Squid的服務(wù)運行。
將以下bash腳本粘進(jìn)yum代理虛機,根據(jù)實際需求調(diào)整PROXY_IP的IP地址,并執(zhí)行該腳本。
vim setup_yum_proxy.sh
chmod +x ./setup_yum_proxy.sh
./setup_yum_proxy.sh
#!/bin/bash
# 設(shè)置變量
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" # 使用你的服務(wù)器IP地址
ALLOWED_NET="0.0.0.0/0" # 允許所有網(wǎng)段訪問
# 安裝 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 # 設(shè)置緩存目錄大小為10GB
EOL
# 啟動并設(shè)置Squid開機自啟
echo "Step 3: 啟動并啟用 Squid 服務(wù)..."
sudo systemctl start squid
sudo systemctl enable squid
# 檢查 Squid 狀態(tài)
if systemctl is-active --quiet squid; then
echo "Squid 服務(wù)已成功啟動!"
else
echo "Squid 服務(wù)啟動失敗,請檢查日志。"
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 已經(jīng)配置了代理設(shè)置。"
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 服務(wù)使配置生效
echo "Step 6: 重啟 Squid 服務(wù)..."
sudo systemctl restart squid
echo "本地 Yum 源代理配置已完成!現(xiàn)在你可以通過代理服務(wù)器 $PROXY_IP:$PROXY_PORT 使用阿里云的鏡像源。"
請記得關(guān)閉代理端操作系統(tǒng)防火墻或放行Squid默認(rèn)的3128端口。
業(yè)務(wù)端部署
首先備份默認(rèn)的源文件,并將源修改為國內(nèi)源,并為操作系統(tǒng)配置正確的DNS服務(wù)器,確保可以正確解析源域名,如ping mirrors.aliyun.com
進(jìn)行驗證。
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

驗證業(yè)務(wù)
可以使用 curl
或 wget
來測試代理是否正常工作,確保外部請求可以通過代理服務(wù)器訪問外部資源。
curl -I --proxy http://192.168.18.192:3128 http://mirrors.aliyun.com/centos/

也可以在代理端查看Squid日志檢查請求狀態(tài)是否正確。
sudo tail -f /var/log/squid/access.log
