天天看点

linux5.4+squid

Squid的分类和作用

1、普通代理服务

即标准的、传统的代理服务

需要客户机在浏览器中指定代理服务器的地址、端口

2、透明代理服务

适用于企业的网关主机(共享接入Internet)中

客户机不需要指定代理服务器地址、端口等信息

需要设置防火墙策略将客户机的Web访问数据转交给代理服务程序处理

3、反向代理服务

为Internet用户访问企业Web站点提供缓存加速

Squid配置

一、安装

#rpm -ivh squid*

二、配置

#cd /etc/squid

#cp squid.conf squid.conf.bak

#vi /etc/squid/squid.conf

http_port192.168.0.1:8080                   //192.168.0.1为本机接内网IP地址

cache_mem 64 MB

cache_dir ufs /var/spool/squid 1000 16 256

cache_effective_user squid

cache_effective_group squid

dns_nameservers 222.85.85.85                 //222.85.85.85为dnsIP

cache_access_log /var/log/squid/access.log

cache_log /var/log/squid/cache.log

cache_store_log /var/log/squid/store.log

visible_hostname 192.168.0.1

cache_mgr [email protected]

acl all src 0.0.0.0/0.0.0.0

http_access allow all

三、初始化squid

1、创建Squid使用硬盘缓冲区的目录结构

#/usr/sbin/squid -z

#ls -l /var/spool/squid/

2、设置squid错误提示信息为中文

#mv /etc/squid/errors /etc/squid/errors.bak

#ln -s /usr/share/squid/errors/Simplify_Chinese /etc/squid/errors

#/etc/init.d/squid reload

四、测试

1、关闭防火墙或开启8080端口

#service iptables stop

#iptables -I INPUT -p tcp --dport 8080 -j ACCEPT

2、设置客户端IE浏览器

右击IE——属性——连接——局域网设置——代理服务器

地址:192.168.0.1  端口:8080

五、访问控制应用实例

1、禁止IP地址为192.168.0.254的客户机上网。

acl badclientip1 src 192.168.0.254

http_access deny badclientip1

#/etc/rc.d/init.d/squid reload

2、禁止192.168.0.0子网里所有的客户机上网。

acl badclientnet1 src 192.168.0.0/255.255.255.0

http_access deny badclientnet1

3、禁止用户访问IP地址为122.224.185.6的网站。

acl badsrvip1 dst 122.224.185.6

http_access deny badsrvip1

4、禁止用户访问域名为www.163.com的网站。

acl baddomain1 dstdomain -i www.163.com

http_access deny baddomain1

5、禁止用户访问域名包含有163.com的网站。

acl badurl1 url_regex -i 163.com

http_access deny badurl

6、禁止用户访问域名包含有sex关键字的URL

acl badurl2 url_regex -i sex

http_access deny badurl2

7、限制IP地址为192.168.0.254客户机并发最大连接数为5。

acl clientip1 src 192.168.0.254

acl conn5 maxconn 5

http_access deny client1 conn1

8、禁止192.168.1.0这个子网里所有的客户机在周一到周五的9:00到18:00上网。

acl clientnet1 src 192.168.1.0/255.255.255.0

acl worktime time MTWHD 9:00-18:00

http_access deny clientnet1 worktime

9、禁止客户机下载*.mp3、*.mp4、*.zip和*.rar类型的文件。

acl badfile1 urlpath_regex -i \.mp3$\.exe$\.zip$\.rar$

http_access deny badfile1

六、透明代理的实现

1、编辑主配置文件

http_port 192.168.0.1:8080                   //192.168.0.1为本机接内网IP地址

dns_nameservers222.85.85.85                 //222.85.85.85为dnsIP

#以下是实现透明代理的4条语句的关键,缺一不可

httpd_accel_host virtual

httpd_accel_port 80

httpd_accel_with_proxy on

httpd_accel_uses_host_header on

可以用iptables/ipchains直接将对Web端口80的请求直接转发到Squid端口8080,由Squid接手,而用户浏览器仍然认为它访问的是对方的80端口。例如以下这条命令:

iptables -t nat -A PREROUTING -s 192.168.2.0/32 -p tcp --dport 80 -j REDIRECT8080 就是将192.168.2.0的所有针对80端口的访问重定向到8080端口。

2、配置iptables实现NAT代理

1)开启路由转发

#echo 1 > /proc/sys/net/ipv4/ip_forward

2)设置代理

#iptables –t nat –A POSTROUTING –s 192.168.1.0/24 –j SNAT –-to-source211.162.11.1

3)设置端口重定向

#iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT--to-ports 8080

七、用户身份认证(注:Squid不支持在透明代理模式下启用用户身份认证功能)

1、认证程序查看

#ls /usr/lib/squid

2、编辑主配置文件

cache_mgr [email protected]

#以下是实现用户身份认证的语句

auth_param basic program /usr/lib/squid/ncsa_auth/etc/squid/passwd

auth_param basic children 5

auth_param basic credentialsttl 2 hours

auth_param basic realm Example.com's Squid proxy-caching

acl auth_user proxy_auth REQUIRED

http_access allow auth_user

3、建立帐户文件

#useradd test1

#passwd test1

#htpasswd -c /etc/squid/passwd test1

#useradd test2

#passwd test2

#htpasswd /etc/squid/passwd test2

4、测试用户认证

1)#/etc/init.d/squid restart

2)在客户端的Web浏览器中配置好代理服务器的IP地址和端口号;

3)访问任意网站,这时Web浏览器会弹出输入用户名和口令的对话框。

4)输入正确的用户名和口令,就能连接上Internet了。

5)如果用户名和口令不正确,则出现错误信息。

注:若希望实现某些特殊IP地址或子网的客户机(如领导使用的计算机)不需要经过用户认证直接上网,其他客户机必须经过用户认证后才能上网的功能,可以利用Squid是顺序处理

http_access选项的特点,为这些特殊的客户机建立类型为src源IP地址方式的ACL,然后将允许特殊客户机ACL的http_access的语句放在设置认证用户的http_access语句前面。

继续阅读