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.3’ 100%[=====================================================================================================================================================>] 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