前言
squid可正向代理、正向透明代理、反向代理。
squid正向代理
正向代理和SNAT原理类似。
服务端:两块网卡,一块连外网,一块连内网
- 网卡一:桥接模式,连外网
- 网卡二:仅主机模式,连内网,IP地址(192.168.0.106)
客户端:单网卡,仅主机模式,IP地址(192.168.0.102)
正向代理搭建过程:
- 配置双网卡
- 新增网卡
- 开启新增网卡
- 配置网卡
1
nm-connection-editor #进入图形化界面配置网卡
- 外网网卡配置
- 内网网卡配置
- 重启网卡使配置生效
1
systemctl restart network
- 安装squid
1
yum install squid
- 清除防火墙规则
1
2iptables -F
service iptables save - 重启squid并加入开机启动项
1
2systemctl restart squid
systemctl enable squid - 客户端验证正向代理
客户端是仅主机模式,本身无法访问互联网网站,但是经过服务端的正向代理后,就可以访问互联网。
- 客户端浏览器设置代理:设置为服务端的3128端口(squid服务默认端口)
- 检查客户端是否能访问互联网网站
- 正向代理设置访问控制
- 禁止url含有特定词的访问
(1)修改配置文件/etc/squid/squid.conf,增加以下语句:
(2)重启squid服务使配置生效
1 | systemctl restart squid |
(3)验证:url里面含有linux,已被squid拦截。
- 仅允许某个IP使用正向代理服务
(1)修改配置文件/etc/squid/squid.conf,增加以下语句:
(2)重启squid服务使配置生效
1 | systemctl restart squid |
(3)验证:将客户端的IP改为其他IP地址,则无法使用正向代理访问互联网
- 服务端设置正向透明代理
透明代理是对客户端而言,客户端不用在浏览器设置代理,就是透明代理。以下是正向透明代理的设置方法:
- 修改配置文件/etc/squid/squid.conf,修改以下语句:
- 检查配置文件语法是否正确
1
squid -k parse
- 停止squid服务,初始化透明模式的squid配置
- 重启squid服务
1
systemctl restart squid
- 服务端设置防火墙策略,使客户端与服务端共用外网网卡访问互联网
(1)方法一:通过iptables设置转发策略
开启DNS服务的数据转发功能,允许squid转发IPv4数据包1
2iptables -F
iptables -t nat -A POSTROUTING -p udp --dport 53 -o eno16777736 -j MASQUERADE
把客户端的80端口请求转发到服务端的3128端口(squid服务的端口),并且对客户端的IP做SNAT(源地址转换,使得客户端与服务端共用外网网卡)1
2
3iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A POSTROUTING -s 192.168.0.102 -o eno16777736 -j SNAT --to 192.168.43.208
service iptables save
(2)方法二:通过firewalld-config设置转发策略 - 客户端修改网卡配置,将网关设置为服务端IP地址192.168.0.106,DNS服务设置为8.8.8.8。浏览器不设置代理,即可访问互联网网站。
squid反向代理
就是可以在用代理服务器的IP地址访问到网站内容,看起来这个网站就是代理服务器自己做的一样。说得通俗一点,就是偷别人的作品,冠上自己的姓名。以下是squid反向代理的配置方法:
重新做一台squid代理服务器,只需要一张桥接网卡,可连外网。
- 安装squid
1
yum install squid
- 修改配置文件/etc/squid/squid.conf
1
2
3http_port 192.168.43.208:80 vhost #将本机外网网卡地址设置为虚拟主机
cache_peer 122.142.74.150 parent 80 0 originserver #同步目标服务器的网站内容 - 重启squid服务并 加入开机启动项
1
2systemctl restart squid
systemctl enable squid - 在浏览器输入本机地址,即可访问到目标网站(www.jldaren.com)的内容,和原站一模一样