squid

Posted dinghailong128

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了squid相关的知识,希望对你有一定的参考价值。

正向代理(透明)

服务端:eno16777728: inet 192.168.10.10  主机模式

        eno33554968: inet 192.168.1.180  桥接模式

客户端:Address        192.168.10.20

              Netmask         255.255.255.0

              Gateway         192.168.10.10

              DNS Server    8.8.8.8

                                   114.114.114.114

 

服务端:

[root@linuxprobe ~]# yum install squid

[root@linuxprobe ~]# systemctl restart squid

[root@linuxprobe ~]# systemctl enable squid

ln -s ‘/usr/lib/systemd/system/squid.service‘ ‘/etc/systemd/system/multi-user.target.wants/squid.service‘

 

[root@linuxprobe ~]# iptables -F

[root@linuxprobe ~]# service iptables  save

iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

 

通过iptables命令实现DNS地址解析服务53端口的数据转发功能,并且允许Squid服务器转发IPv4数据包:

[root@linuxprobe ~]# iptables -t nat -A POSTROUTING -p udp --dport 53 -o eno33554968 -j MASQUERADE                                                                                   # 实现DNS地址解析服务53端口的数据转发功能

[root@linuxprobe ~]# vim /etc/sysctl.conf

net.ipv4.ip_forward=1                                      # 允许Squid服务器转发IPv4数据包

[root@linuxprobe ~]# sysctl -p                          # 让转发参数立即生效

net.ipv4.ip_forward = 1

 

SNAT数据转发功能的具体配置参数如下:

[root@linuxprobe ~]# iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128

                     # 使用iptables防火墙管理命令把所有客户端主机对网站80端口的请求转发至Squid服务器本地的3128端口上

[root@linuxprobe ~]# iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eno33554968 -j SNAT --to 192.168.1.180

                                                                                                                                                   # 桥接网卡IP地址

[root@linuxprobe ~]# service iptables save

iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

 

Squid服务程序透明代理模式的配置:

[root@linuxprobe ~]# vim /etc/squid/squid.conf

59 http_port 3128 transparent                                   # 在主配置文件中服务器端口号后面追加上transparent单词(“透明的”)

62 cache_dir ufs /var/spool/squid 100 16 256      # 设置缓存的保存路径

 

[root@linuxprobe ~]# systemctl stop squid         # 先关闭squid服务

[root@linuxprobe ~]# squid -k parse                  # 检查主配置文件是否有错误

[root@linuxprobe ~]# squid -z                          # 对Squid服务程序的透明代理技术进行初始化

[root@linuxprobe ~]# systemctl restart squid

 

 

 

客户端:

[root@linuxprobe ~]# ping www.baidu.com

 

 

[root@linuxprobe ~]# vim /etc/squid/squid.conf

 26 acl client src 192.168.10.20           # 限制网站的访问地址

 31 http_access allow client

 32 http_access deny all

[root@linuxprobe ~]# systemctl restart squid

 

 

[root@linuxprobe ~]# vim /etc/squid/squid.conf

 26 acl deny_keyword url_regex -i cto       # -i 关键字词

 32 http_access deny deny_keyword

[root@linuxprobe ~]# systemctl restart squid

 

 

[root@linuxprobe ~]# vim /etc/squid/squid.conf

 26 acl deny_keyword url_regex http://www.51cto.com

 32 http_access deny deny_keyword

[root@linuxprobe ~]# systemctl restart squid

 

 

[root@linuxprobe ~]# vim /etc/squid/squid.conf

 26 acl deny_keyword url_regex 51cto.com

 32 http_access deny deny_keyword

[root@linuxprobe ~]# systemctl restart squid

 

 

[root@linuxprobe ~]# vim /etc/squid/squid.conf

 26 acl badfile url_regex -i .mp3$ .rar$

 32 http_access deny badfile

[root@linuxprobe ~]# systemctl restart squid

 

 

反向代理

服务端:eno16777728:  桥接模式

 

服务端:

[root@linuxprobe ~]# yum install squid

[root@linuxprobe ~]# systemctl restart squid

[root@linuxprobe ~]# systemctl enable squid

ln -s ‘/usr/lib/systemd/system/squid.service‘ ‘/etc/systemd/system/multi-user.target.wants/squid.service‘

 

[root@linuxprobe ~]# vim /etc/squid/squid.conf

 59 http_port 192.168.1.183:80 vhost                                            # 桥接网卡IP地址

 60 cache_peer 183.131.146.19 parent 80 0 originserver                  # 网站源服务器IP地址

[root@linuxprobe ~]# systemctl restart squid

 

浏览器:192.168.1.183

 

以上是关于squid的主要内容,如果未能解决你的问题,请参考以下文章

Squid代理服务器

配置Squid代理服务器

构建Squid传统代理及透明代理