烂泥:squid代理服务器安装与配置

本文由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

clip_image001

修改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

clip_image002

在此我们只是启用squid的基本功能,没有启用squid的用户认证。

启用squid服务,如下:

systemctl enable squid

systemctl start squid

systemctl status squid

clip_image003

查看squid的监听端口,如下:

netstat -tunlp

clip_image004

到此有关squid的配置就已经完毕,现在我们再来安装与配置下dnsmasq。

二、安装dnsmasq

dnsmasq的安装比较简单,命令如下:

yum -y install dnsmasq

clip_image005

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

clip_image006

启用squid服务,如下:

systemctl enable dnsmasq

systemctl start dnsmasq

systemctl status dnsmasq

clip_image007

dnsmasq配置完毕后,我们只需要把其他机器上的dns服务器地址修改为该dns服务器地址即可。

squid与dnsmasq配置并修改完毕后,我们现在在B服务器上开始使用squid。

三、squid代理docker

B服务器上有docker服务,但是如果没有给docker配置代理的话,docker将无法拉取远程的镜像,如下:

docker pull alpine

clip_image008

为了使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″

clip_image009

重启docker服务,如下:

systemctl daemon-reload

systemctl restart docker

systemctl status docker

clip_image010

重新拉取docker镜像,如下:

docker pull alpine

clip_image011

通过上图,我们可以很明显的看出docker已经可以正常拉取镜像。

查看刚刚拉取的docker镜像,如下:

docker images

clip_image012

上述是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″

clip_image013

四、squid代理yum

B服务器上如果没有给yum配置代理的话,yum将无法安装相关软件,如下:

yum -y install lftp

clip_image014

给yum配置代理,如下:

cat >> /etc/yum.conf << “EOF”

proxy=http://10.10.10.128:3128

EOF

clip_image015

再次使用yum安装相关软件,如下:

yum -y install lftp

clip_image016

通过上图,我们可以很明显的看出yum可以正常安装软件。

上述是squid是没有启用用户认证,如果是启用用户认证的话,yum需要如下配置:

cat >> /etc/yum.conf << “EOF”

proxy=http://10.10.10.128:3128

proxy_username=nginx

proxy_password=123456

EOF

clip_image017

五、squid代理maven

B服务器上如果没有给maven配置代理的话,maven编译打包时将无法下载相关依赖,如下:

mvn clean install

clip_image018

修改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>

clip_image019

再次编译打包,如下:

mvn clean install

clip_image020

通过上图,我们可以很明显的看出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>

clip_image021

六、squid代理jenkins的插件中心

jenkins如果不能连接外网的话,那么就无法下载所需要的插件。此时我们也可以通过设置代理,使其下载相应的插件。如下:

clip_image022

七、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

clip_image023

以上是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

clip_image024

对于curl命令,使用代理的话,需要这样进行,如下:

curl -x ‘http://10.10.10.128:3128’ -v -O http://mirrors.163.com/.help/CentOS7-Base-163.repo

clip_image025

以上是squid没有启用用户认证,如果启用用户认证的话,curl使用代理,需要这样进行:

curl -x ‘http://nginx:123456@10.10.10.128:3128’ -v -O http://mirrors.163.com/.help/CentOS7-Base-163.repo

clip_image026

以上设置是不是太复杂了,每个命令都需要单独的设置。其实我们把代理信息加入到系统环境变量中,来统一代理。如下:

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

clip_image027

以上设置完毕后,我们就可以直接使用相关命令,无需再单独设置每个命令的代理。如下:

curl -v -O http://mirrors.163.com/.help/CentOS7-Base-163.repo

wget http://mirrors.163.com/.help/CentOS7-Base-163.repo

clip_image028

上述是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

clip_image029

未经允许不得转载:烂泥行天下 » 烂泥:squid代理服务器安装与配置

赞 (7) 打赏

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

支付宝扫一扫打赏

微信扫一扫打赏