前置操作:
按照命令顺序依次为:关闭防火墙 -> 关闭Selinux -> 添加iptables放行规则(3128端口)
如有需求,可自行开启并调整规则
systemctl stop firewalld
systemctl disable firewald
sudo setenforce 0 && sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 3128 -j ACCEPT
一.安装Squid代理需要用的软件;
yum -y install squid
yum -y install httpd
二.配置Squid的conf文件;
这里我去掉了所有带#的配置信息,输出了在我的配置文件中有效配置信息,并添加了中文注释
acl localnet src 10.0.0.0/8 # RFC1918中允许的内网地址段
acl localnet src 172.16.0.0/12 # RFC1918中允许的内网地址段
acl localnet src 192.168.0.0/16 # RFC1918中允许的内网地址段
acl SSL_ports port 443 # 允许使用端口443的SSL连接
acl Safe_ports port 80 # HTTP协议默认端口
acl Safe_ports port 21 # FTP协议数据传输端口
acl Safe_ports port 443 # HTTPS协议默认端口
acl Safe_ports port 70 # Gopher 协议默认端口
acl Safe_ports port 210 # Wais 协议默认端口
acl Safe_ports port 1025-65535 # 没有特殊应用的注册端口
acl Safe_ports port 280 # HTTP-MGMT 协议默认端口
acl Safe_ports port 488 # GSS-HTTP 协议默认端口
acl Safe_ports port 591 # FileMaker 6.0 对外开放的端口
acl Safe_ports port 777 # 多语言网站端口
acl CONNECT method CONNECT # 允许通过CONNECT方法建立网络连接
http_access deny !Safe_ports # 拒绝访问不安全的端口
http_access deny CONNECT !SSL_ports # 拒绝非安全SSL端口之外的所有端口的CONNECT请求
http_access allow localhost manager # 允许本地主机(127.0.0.1)通过访问cachemgr.cgi来管理缓存服务器
http_access deny manager # 其他来源的manager访问禁止
acl list1 src 10.115.100.0/24 # 允许此特定IP地址范围内的客户端访问代理服务器
http_access allow list1 # 允许acl list1定义的IP地址范围内的客户端访问代理服务器。
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwords # 指定使用基本身份验证机制所需的程序和密码文件位置。
auth_param basic credentialsttl 5 hours # 指定Basic身份验证凭据有效期(在此处为5个小时)。
acl ncsa_users proxy_auth REQUIRED # 要求用户使用basic身份验证机制进行身份验证
http_access allow ncsa_users # 允许通过Basic身份验证的用户访问
http_access deny all # 拒绝所有来源的客户端访问
http_port 3128 # 当前缓存服务器监听的HTTP协议端口号
cache_dir ufs /var/spool/squid 100 16 256 # 缓存目录的存储类型,以及Squid将如何检索和存储缓存数据。
coredump_dir /var/spool/squid # 程序出现故障时产生的core dump文件存放路径。
refresh_pattern ^ftp: 1440 20% 10080 # 设置FTP文件的刷新模式
refresh_pattern ^gopher: 1440 0% 1440 # 设置Gopher文件的刷新模式
refresh_pattern -i (/cgi-bin/|?) 0 0% 0 # 正则表达式匹配,不允许缓存cgi程序和请求参数
refresh_pattern . 0 20% 4320 # 所有其他类型的对象以20%的可能性更新,最大保留时间为4320分钟
使用squid -z
检查配置文件是否正确,这里如果服务是启动的,需要先关闭。
如果测试没问题可用直接重启服务并设置开机自动运行。
systemctl restart squid
systemctl enable squid
三.添加允许使用代理的用户;
1.这里我添加了一个 netuser01 用户,用户名可自行修改;执行命令后会让你输入2次密码确认;
htpasswd -cd /etc/squid/passwd netuser01
2.验证用户是否可以认证;这里要注意实际上/etc/squid/
目录下是passwords还是passwd,我遇到过不一样的;执行命令后,输入用户名+空格+密码即可验证是否有效。看图操作~
/usr/lib64/squid/basic_ncsa_auth /etc/squid/passwords
四.用户端配置测试;
配置浏览器代理,这个设置在internet选项中,如果实在不知道怎么打开,请自行百度,太过简单了;
配置如图:
然后确定应用后打开浏览器,此时会弹出验证窗口,需要进行用户认证,如图:
认证完成后即可正常代理上网;
在服务器端可以提供命令查看代理服务器的访问记录;
tail -f /var/log/squid/access.log
至此,完成部署,成功应用~