使用 Squid 搭建代理服务

安装 Squid

$ ssh root@192.168.148.64
$ sudo yum info squid
$ sudo yum install squid
$ sudo systemctl enable squid --now
$ sudo systemctl status squid

配置 Squid

$ sudo vim /etc/squid/squid.conf
#
# 非常重要的配置:
# 添加 DNS 服务器 和 强制使用 /etc/hosts 文件:
dns_nameservers 223.5.5.5
hosts_file /etc/hosts

客户端命令行配置

$ vim /etc/profile

## 在末尾添加如下内容:
function setproxy() {
    export {http{,s},ftp,rsync}_proxy='http://192.168.148.64:3128'
		export {HTTP{,S},FTP,RSYNC}_PROXY='http://192.168.148.64:3128'
    export no_proxy='localhost,127.0.0.1,127.0.1.1,192.168.0.0/16,172.17.0.0/16'
    export NO_PROXY=$no_proxy
}
function unsetproxy() {
		unset {http{,s},ftp,rsync}_proxy
    unset {HTTP{,S},FTP,RSYNC}_PROXY
    unset no_proxy
    unset NO_PROXY
}

## 使其生效:
$ source /etc/profile && source ~/.bashrc

客户端命令行使用方法

$ setproxy

## 检查 Proxy 的配置:
$ env | grep -i proxy

## 尝试访问百度:
$ curl www.baidu.com

为 Docker 单独配置代理

$ sudo mkdir -p /etc/systemd/system/docker.service.d

$ sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://192.168.148.64:3128"
Environment="HTTPS_PROXY=http://192.168.148.64:3128"
Environment="NO_PROXY=localhost,127.0.0.1,127.0.1.1,192.168.0.0/16,172.17.0.0/16"

$ sudo systemctl daemon-reload && sudo systemctl restart docker

## 检查代理配置:
$ docker pull nginx

为 Tomcat 单独配置代理

$ sudo vim /usr/lib/systemd/system/tomcat1.service

Environment='JAVA_OPTS=-Djava.awt.headless=true 
		-Djava.security.egd=file:/dev/./urandom 
		-Djavax.servlet.request.encoding=UTF-8 
		-Dfile.encoding=UTF-8 -Duser.language=en 
		-Duser.region=US -Dhttp.proxyHost=192.168.148.64 
		-Dhttp.proxyPort=3128 
		-Dhttps.proxyHost=192.168.148.64 
		-Dhttps.proxyPort=3128 
		-Dhttp.nonProxyHosts=127.\*\|192.168.\*\|172.17.\*\|localhost'

$ sudo systemctl daemon-reload
$ sudo systemctl restart tomcat1

## 检查代理配置:
$ cat /usr/tomcat1/logs/catalina0.log | grep -i proxy

为 cURL 单独配置代理

echo 'http_proxy=http://192.168.148.64:3128' > ~/.curlrc
echo 'https_proxy=http://192.168.148.64:3128' >> ~/.curlrc