squid代理服务器安装与配置

需求介绍:

在测试环境准备部署一套3节点的K8s集群,三台服务器其中A服务器可以连接公网,yum安装软件也都正常, B,C 服务器无法连接公网,但是与A服务器内网互通。

现在要求B和C 服务器可以连接公网,这包括BC服务器可以解析公网域名,使用yum安装软件都一切正常。

要达到上述需求,我们可以通过squid代理来实现,在A上面安装squid代理服务器,BC充当客户端的角色,来访问外网.

代理服务器安装步骤:

1、yum安装squid软件.

# yum install -y squid

2、启动squid服务

# systemctl start squid

3.修改配置文件/etc/squid/squid.conf

# 主要关注如下参数:
acl localnet src 10.0.0.0/8   #配置运行访问代理服务器的源
http_port 3128   #设置代理服务器监听端口,默认3128,建议修改.
# 允许访问所有地址,默认是 deny,这个要主动改一下
http_access allow all

4、查看服务端口

# netstat -tnpl |grep 3128

5、测试

# wget -e "http_proxy=http://10.0.218.5:3128" http://www.baidu.com/

如果出现如下错误,则说明需要配置认证才可以访问:
HTTP/1.1 407 Proxy Authentication Required.

升级/添加用户名密码

1.安装httpd-tools

# yum install httpd-tools -y

2.创建用户与密码

# htpasswd -c /etc/squid/passwd user(代理用户名)
输入和确认密码

3.squid.conf文件修改(/etc/squid/squid.conf),如果存在如下配置则确认即可.

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 10
auth_param basic credentialsttl 2 hours
acl auth_user proxy_auth REQUIRED
http_access allow auth_user

4.启动或者重启squid

# systemctl restart squid

5.测试,在ABC主机上都可以执行这条命令进行测试.

# wget -e "http_proxy=http://user:squid123@10.0.218.5:3128" http://www.baidu.com/

[root@c7n-01 ~]# wget -e "http_proxy=http://user:squid123@10.0.218.5:3128" http://www.baidu.com/
--2022-04-25 17:29:48--  http://www.baidu.com/
Connecting to 10.0.218.5:3128... connected.
Proxy request sent, awaiting response... 200 OK
Length: 2381 (2.3K) [text/html]
Saving to: ‘index.html.3100%[=====================================================================================================================================================>] 2,381       --.-K/s   in 0s      

2022-04-25 17:29:48 (321 MB/s) - ‘index.html.3’ saved [2381/2381]

[root@c7n-01 ~]# 

1、Linux环境 BC 服务器配置 http代理.

编辑/etc/profile 或者.bashrc 配置文件,添加如下内容,并重新加载,source /etc/profile 或 source .bashrc。
在文件底加入如下内容

#http代理配置
export http_proxy=http://user:squid123@10.0.218.5:3128
export https_proxy=http://user:squid123@10.0.218.5:3128

临时取消代理设置,使用.

# unset http_proxy
# unset https_proxy

 

 利用代理拉取docker镜像

通过代理设置后,BC主机可以通过yum的方式安装软件等信息,在使用docker pull nginx的时候,发现拉取不到镜像.查询后得知,

使用代理方法的时候,如果通过直接设置 http_proxy 和 https_proxy 这两个环境变量是不可行的。主要原因是 docker 并不会使用它们,需要为 docker daemon 服务的设置代理才可以。

设置docker服务代理:

# mkdir -p /etc/systemd/system/docker.service.d/
# vim /etc/systemd/system/docker.service.d/http-proxy.conf

将以下内容写入 http-proxy.conf 文件

[Service]
Environment="HTTP_PROXY=http://user:squid123@10.0.218.5:3128"
Environment="HTTPS_PROXY=http://user:squid123@10.0.218.5:3128"
Environment="NO_PROXY=127.0.0.0/8,10.0.0.0/8,cattle-system.svc,192.168.0.0/16,.svc,.cluster.local,.cattle-system"

上面代理地址是本机开启的代理服务监听端口,如果代理服务在局域网内的其它机器上的话,需要更换为其 ip 地址和端口号。环境变量 NO_PROXY 表示不使用代理的域名或IP。

重启 docker 服务

# systemctl daemon-reload
# systemctl restart docker

验证设置

# systemctl show --property=Environment docker
Environment=HTTP_PROXY=http://user:squid123@10.0.218.5:3128 HTTPS_PROXY=http://user:squid123@10.0.218.5:3128 NO_PROXY=127.0.0.0/8,10.0.0.0/8,cattle-system.svc,192.168.0.0/16,.svc,.cluster.loc
lines 1-1/1 (END)

也可以使用命令 docker info 验证

验证是否可以拉取镜像:

# docker search centos
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
centos                            The official build of CentOS.                   7115      [OK]       
centos/systemd                    systemd enabled base container.                 108                  [OK]
centos/mysql-57-centos7           MySQL 5.7 SQL database server                   93                   
......

不报错即docker代理设置成功.

 

参考文档:https://blog.haohtml.com/archives/31298

     https://www.ilanni.com/?p=14281

posted @ 2022-04-26 09:46  梦徒  阅读(2624)  评论(0编辑  收藏  举报