部署squid并配置透明代理
  Qn0V923SdTA7 2023年11月02日 35 0


一、squid简介

Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher、HTTPS和HTTP协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。Squid是一种用来缓冲Internet数据的软件。它是这样实现其功能的,接受来自人们需要下载的目标(object)的请求并适当地处理这些请求。也就是说,如果一个人想下载一web页面,他请求Squid为他取得这个页面。Squid随之连接到远程服务器(比如:http://www.baidu.com/)并向这个页面发出请求。然后,Squid显式地聚集数据到客户端机器,而且同时复制一份。当下一次有人需要同一页面时,Squid可以简单地从磁盘中读到它,那样数据迅即就会传输到客户机上。当前的Squid可以处理HTTP,FTP,GOPHER,SSL和WAIS等协议。但它不能处理如POP,NNTP,RealAudio以及其它类型的东西。

二、安装与配置

yum install  squid   -y         #安装
systemctl start squid		    #启动服务
netstat -tnpl |grep 3128		#查看服务端口

查看端口应该看到端口3128的结果,如果没有出现,应该是防火墙拦截了,或者SELINUX控制了信息

配置文件为:/etc/squid/squid.conf 可以查看它的内容,默认的端口是3128,可以修改成其它的端口 如果要让代理服务器支持ftp需要做如下改动: acl SSL_ports port 443 21 #这一行中加入ftp的端口21 在文件最后加上几行:

#Default: 
acl FTP proto FTP 
always_direct allow FTP

三、使用Squid配置透明代理

1.所谓的透明代理就是不需要在客户机上面设置代理,就可以直接代理上网,这个需要借助于iptables设置来帮助完成。

2. 虽然透明代理不要求在客户机上配置代理,但是必要的网络配置还是需要的,首先要与Linux 云计算机连通,要设置DNS,这个与前面的传统代理有差别,那个不用设置DNS,只要求与客户端计算机连通即可

3.配置squid及透明模式

备份squid的配置文件

cp /etc/squid/squid.conf /etc/squid/squid.conf.bak

修改squid的配置文件:

vim /etc/squid/squid.conf

根据自己的需要添加对应的IP,端口 如果你要使用透明模式,在端口后面添加关键字“transparent”

# Squid normally listens to port 3128
http_port 3128 transparent

并且在配置文件的最下方添加这条语句

visible_hostname localhost

4.启动squid

systemctl restart  squid

5.为透明代理配置iptables,

在服务端打开内核转发功能

sysctl  net.ipv4.ip_forward=1

将对squid代理服务器DNS的请求转到183.221.253.100上

iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to 183.221.253.100

设置nat表:

iptables -t nat -A POSTROUTING -j MASQUERADE

iptables -t nat -A PREROUTING -i ens33 -p tcp -s 192.168.2.0/24 --dport 80  -j REDIRECT --to-ports 3128

6.将iptables的配置进行保存,并重启iptables

关机前保存:

iptables-save > my_rule

下次开机后再执行:

iptables-restart  < my_rule

7.测试squid透明代理

打开浏览器进行网页的访问。 注意这里不要在浏览器中钩选代理服务器选项

使用Squid对上网行为进行控制

修改Squid的配置文件/etc/squid/squid.conf 在默认的ACL规则之后添加自定义的ACL

#禁止下载的文件类型
acl denyfiles urlpath_regex -i \.mp3$ \.avi$ \.zip$ \.rar$ \.exe$ \.iso$
#禁止访问的网站列表
acl denysites url_regex -i "/etc/squid/denysites"

[root@localhost squid]#cat denysites

web2.qq.com

在/etc/squid/squid.conf文件中添加与acl对应的http_access 在“#INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS”中进行添加。如果没有提示就在“允许访问ip地址“之前进行添加。

http_access allow test
http_access deny denyfiles
http_access deny denysites
http_access allow localnet

注意:假如test和localnet都是允许访问的本地主机ip列表,那么localnet中ip就不能访问“denyfiles和denysites”中的网站,而test中ip就可以正常访问。 注意他们http_access的顺序。因为在test之前并没有进行拒绝访问的控制,而在localnet之前已经进行了拒绝访问的控制,所以test中的ip地址不受到“denyfiles和denysites”的限制,而localnet中的ip受到限制,不能访问“denyfiles和denysites”中的网站。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  aHqqwBZuiKkn   2023年11月13日   29   0   0 DNSmysqlCentOS
Qn0V923SdTA7