本文由ilanniweb微信公众号提供友情赞助,首发于烂泥行天下
IT技术分享QQ群:571981257
最近有个新需求,两台服务器其中A服务器可以连接公网,B服务器无法连接公网,但是与A服务器内网互通。
现在要求B服务器可以连接公网,这包括B服务器可以解析公网域名,以及相关命令和软件也可以连接公网。
要达到上述需求,我们可以通过squid与dnsmasq集成来实现。
有关dnsmasq的相关文章,可以参考《烂泥:dnsmasq搭建简易DNS服务器》,本篇文章我们主要介绍squid的相关搭建与使用。
PS:在此A服务器的IP地址是10.10.10.128,B服务器的IP地址为10.10.10.129。squid和dnsmasq都在A服务器上。
一、安装squid
首先我们安装squid,命令如下:
yum -y install squid
修改squid配置文件,如下:
cp /etc/squid/squid.conf /etc/squid/squid.conf_bak
cat > /etc/squid/squid.conf << “EOF”
acl all src 0.0.0.0/0.0.0.0
acl SSL_ports port 443
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 443
acl Safe_ports port 22
acl CONNECT method CONNECT
http_access allow all
http_port 3128
visible_hostname proxy
EOF
在此我们只是启用squid的基本功能,没有启用squid的用户认证。
启用squid服务,如下:
systemctl enable squid
systemctl start squid
systemctl status squid
查看squid的监听端口,如下:
netstat -tunlp
到此有关squid的配置就已经完毕,现在我们再来安装与配置下dnsmasq。
二、安装dnsmasq
dnsmasq的安装比较简单,命令如下:
yum -y install dnsmasq
dnsmasq配置文件如下:
cat > /etc/dnsmasq.conf << “EOF”
resolv-file=/etc/resolv.conf
strict-order
listen-address=0.0.0.0
server=223.5.5.5
bogus-nxdomain=223.5.5.5
EOF
启用squid服务,如下:
systemctl enable dnsmasq
systemctl start dnsmasq
systemctl status dnsmasq
dnsmasq配置完毕后,我们只需要把其他机器上的dns服务器地址修改为该dns服务器地址即可。
squid与dnsmasq配置并修改完毕后,我们现在在B服务器上开始使用squid。
三、squid代理docker
B服务器上有docker服务,但是如果没有给docker配置代理的话,docker将无法拉取远程的镜像,如下:
docker pull alpine
为了使docker服务可以使用squid代理,我们需要修改docker的配置文件/lib/systemd/system/docker.service,如下:
vim /lib/systemd/system/docker.service
[Service]
Environment=HTTP_PROXY=10.10.10.128:3128
Environment=HTTPS_PROXY=10.10.10.128:3128
#以下是不使用代理的相关地址和域名
Environment=”NO_PROXY= docker.ilanni.com,172.10.10.10″
重启docker服务,如下:
systemctl daemon-reload
systemctl restart docker
systemctl status docker
重新拉取docker镜像,如下:
docker pull alpine
通过上图,我们可以很明显的看出docker已经可以正常拉取镜像。
查看刚刚拉取的docker镜像,如下:
docker images
上述是squid是没有启用用户认证,如果是启用用户认证的话,docker需要如下配置:
vim /lib/systemd/system/docker.service
[Service]
Environment=”HTTP_PROXY=http://nginx:123456@10.10.10.128:3128″
Environment=”HTTPS_PROXY=http://nginx:123456@10.10.10.128:3128″
#以下是不使用代理的相关地址和域名
#Environment=”NO_PROXY= docker.ilanni.com,172.10.10.10″
四、squid代理yum
B服务器上如果没有给yum配置代理的话,yum将无法安装相关软件,如下:
yum -y install lftp
给yum配置代理,如下:
cat >> /etc/yum.conf << “EOF”
proxy=http://10.10.10.128:3128
EOF
再次使用yum安装相关软件,如下:
yum -y install lftp
通过上图,我们可以很明显的看出yum可以正常安装软件。
上述是squid是没有启用用户认证,如果是启用用户认证的话,yum需要如下配置:
cat >> /etc/yum.conf << “EOF”
proxy=http://10.10.10.128:3128
proxy_username=nginx
proxy_password=123456
EOF
五、squid代理maven
B服务器上如果没有给maven配置代理的话,maven编译打包时将无法下载相关依赖,如下:
mvn clean install
修改maven的配置文件settings.xml,添加代理相关的信息,如下:
vim /usr/local/maven/conf/settings.xml
<proxies>
<proxy>
<id>optional</id>
<active>true</active>
<protocol>http</protocol>
<host>10.10.10.128</host>
<port>3128</port>
</proxy>
</proxies>
再次编译打包,如下:
mvn clean install
通过上图,我们可以很明显的看出maven可以正常下载相关依赖。
上述是squid是没有启用用户认证,如果是启用用户认证的话,maven需要如下配置:
vim /usr/local/maven/conf/settings.xml
<proxies>
<proxy>
<id>optional</id>
<active>true</active>
<protocol>http</protocol>
<username>nginx</username>
<password>123456</password>
<host>10.10.10.128</host>
<port>3128</port>
</proxy>
</proxies>
六、squid代理jenkins的插件中心
jenkins如果不能连接外网的话,那么就无法下载所需要的插件。此时我们也可以通过设置代理,使其下载相应的插件。如下:
七、squid代理系统命令
在Linux中默认情况下,我们使用wget、curl等命令是没有使用代理的。
wget命令要使用代理的话,需要这样进行,如下:
wget -e use_proxy=yes -e http_proxy=http://10.10.10.128:3128 http://mirrors.163.com/.help/CentOS7-Base-163.repo
以上是squid没有启用用户认证,如果启用用户认证的话,wget使用代理,需要这样进行:
wget -e use_proxy=yes -e http_proxy=http://nginx:123456@10.10.10.128:3128 http://mirrors.163.com/.help/CentOS7-Base-163.repo
对于curl命令,使用代理的话,需要这样进行,如下:
curl -x ‘http://10.10.10.128:3128’ -v -O http://mirrors.163.com/.help/CentOS7-Base-163.repo
以上是squid没有启用用户认证,如果启用用户认证的话,curl使用代理,需要这样进行:
curl -x ‘http://nginx:123456@10.10.10.128:3128’ -v -O http://mirrors.163.com/.help/CentOS7-Base-163.repo
以上设置是不是太复杂了,每个命令都需要单独的设置。其实我们把代理信息加入到系统环境变量中,来统一代理。如下:
echo export http_proxy=http://10.10.10.128:3128 >> /etc/profile
echo export https_proxy=http://10.10.10.128:3128 >> /etc/profile
source /etc/profile
以上设置完毕后,我们就可以直接使用相关命令,无需再单独设置每个命令的代理。如下:
curl -v -O http://mirrors.163.com/.help/CentOS7-Base-163.repo
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
上述是squid是没有启用认证,如果是启用认证的话,需要如下配置:
echo export http_proxy=http://nginx:123456@10.10.10.128:3128 >> /etc/profile
echo export https_proxy=http://nginx:123456@10.10.10.128:3128 >> /etc/profile
source /etc/profile
未经允许不得转载:烂泥行天下 » 烂泥:squid代理服务器安装与配置