linux 跟我一起学10

linux 跟我一起学10

今天给大家探讨下linux代理服务器squid
1,查看是否安装squid
[root@zy root]# rpm -qa |grep squid
没装的话去这里下载最新的版本进行安装http://www.squid-cache.org/Versions/v2/2.6/
2.因为我下载的目录是在/home/jishu目录下面的
[root@zy jishu]#tar zxvf squid-2.6.STABLE14.tar
然后会产生这样一个目录squid-2.6.STABLE4
[root@zy jishu]#cd squid-2.6.STABLE4
[root@zy squid-2.6.STABLE4]#./configure --prefix=/var/squid指定安装目录为/var/squid,系统默认安装目为/usr/local/squid
[root@zy squid-2.6.STABLE4]#./configure --enable-linux-netfilter允许使用Linux的透明代理功能
[root@zy squid-2.6.STABLE4]#./configure --enable-storeio=ufs,null
使用的文件系统通常是默认的ufs,不过如果想要做一个不缓存任何文件的代理服务器,就需要加上null文件系统。
[root@zy squid-2.6.STABLE4]#./configure --enable-arp-acl
这样可以在规则设置中直接通过客户端的MAC地址进行管理,防止客户使用IP欺骗。
[root@zy squid-2.6.STABLE4]#./configure --enable-err-languages="Simplify_Chinese"
[root@zy squid-2.6.STABLE4]#./configure --enable-default-err-languages="Simplify_Chinese"
上面两个选项告诉Squid编入并使用简体中文错误信息。
[root@zy squid-2.6.STABLE4]#./configure --enable-underscore
允许解析的URL中出现下划线,因为默认情况下Squid会认为带下划线的URL是非法的,并拒绝访问该地址。
3.[root@zy squid-2.6.STABLE4]#make
[root@zy squid-2.6.STABLE4]#make install 安装
4.[root@zy squid-2.6.STABLE4]#cd /var/squid/
[root@zy squid]#ls
[root@zy squid]#vi /etc/squid.conf 修改squid的主配置文件
【1】http_port 192.168.1.144:3128 默认端口是3128,当然也可以是任何其它端口,只要不与其它服务发生冲突即可。为了安全起见,在前面加上IP地址,Squid就不会监听外部的网络接口。内部网络接口eth0的IP地址为192.168.1.144,外部网络接口eth1的IP地址为202.96.xx.xx。
【2】cache_mgr zy_66289214@126.com 服务器管理者的电子邮件,当错误发生时,该地址会显示在错误页面上,便于用户联系
【3】cache_dir ufs /var/squid/var/cache 3500 16 43
     cache_mem 64MB
     cache_swap_low 90
     cache_swap_high 95
在这里,Squid会将/var/squid/var/cache目录作为保存缓存数据的目录,每次处理的缓存大小是64兆字节,当缓存空间使用达到95%时,新的内容将取代旧的而不直接添加到目录中,直到空间又下降到90%才停止这一活动。如果不想Squid缓存任何文件,如某些存储空间有限的专有系统,可以使用null文件系统(这样不需要那些缓存策cache_dir null /tmp
【4】access_log /var/squid/var/logs/access.log squid   cache_access_log
说明:指定客户请求记录日志的完整路径(包括文件的名称及所在的目录),该请求可以是来自一般用户的HTTP请求或来自邻居的ICP请求。如果你不需要该日志,可以用以下语句取消:cache_access_log none
     cache_log /var/squid/var/logs/cache.log
cache_log
说明:指定squid一般信息日志的完整路径(包括文件的名称及所在的目录)。
     cache_store_log /var/squid/var/logs/store.log  cache_store_log
说明:指定对象存储记录日志的完整路径(包括文件的名称及所在的目录)。该记录表明哪些对象被写到交换空间,哪些对象被从交换空间清除。如果你不需要该日志,可以用以下语句取消:cache_store_log none
【5】dns_nameservers 202.96.209.134
定义Squid进行域名解析时使用的域名服务器
【6】
设置squid透明代理
两个选项是用来定义squid加速模式的。用virtual来指定为虚拟主机模式。80端口为要加速的请求端口。
httpd_accel_host virtual
httpd_accel_port 80
透明代理模式下是必须设置成on的。在该模式下,Squid既是web请求的加速器,又是缓存代理服务器。
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
设置透明代理时,必须打开包转发功能
[root@zy root]# echo "1" > /proc/sys/net/ipv4/ip_forward
另外还要保存这个值,我们需要打开
[root@zy root]# vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
wq
在Linux上,可以用iptables/ipchains直接将对Web端口80的请求直接转发到Squid端口3128,由Squid接手,而用户浏览器仍然认为它访问的是对方的80端口。例如以下这条命令:
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT 3128
就是将192.168.1.0这个组的所有针对80端口的访问重定向到3128端口。
【7】设置访问简单控制规则
     acl meinv 192.168.1.2-192.168.1.200/32
     http_access allow meinv
     http_access deny all
这三条命令的意思是让192.168.1.0这个网段可以访问代理服务器,规则名字为meinv ,然后拒绝其他的网段访问
然后是一些详细的配置规则
acl 1 src 192.168.1.10 192.168.1.20 192.168.1.30
  http_access allow 1
  http_access deny !1
  这个规则只允许 IP 地址为 192.168.1.10、192.168.1.20 及     192.168.1.30 的机器
  访问 Internet,其他 IP 地址的机器则都被拒绝访问。
2. 限制访问时段。
  acl 1 src 192.168.1.10
  acl 2 time MTWHF 10:00-16:00
  http_access allow 1 2
  http_access deny !1
  这个规则允许子网192.168.1.10在周一到周五的    上午10:00到下午4:00访问 Internet。
3. 为不同的客户机分配不同的访问时段。
  acl 11 192.168.1.10
  acl 12  192.168.1.20
  acl 13  192.168.1.30
  acl morning time 10:00-13:00
  acl lunch time 13:30-14:30
  acl evening time 15:00-18:00
  http_access allow 11 morning
  http_access allow 11 evening
  http_access allow 12 lunch
  http_access allow 13 evening
  http_access deny all
  在这个规则中,主机 11 可以在 morning 和 evening 时段访问 Internet,主机12和 13 分别只能在 lunch 和 evening 时段访问 Internet。
Squid 可以屏蔽某些特定站点或含有某些特定字词的站点。可以用下面的规则实现:
  acl 14  192.168.1.17
  acl 15 banned_sites www.sina.com
  http_access deny 15
  http_access allow 14
  也可以用以屏蔽含有某些特定字词(比如说 fuck)的站点
  
  acl 14 192.168.1.17
  acl 16 url_regex fuck
  http_access deny 16
  http_access allow 14
  在实际应用中,不需要把需屏蔽的所有站点或字词都列在上面,可以先保存在一个文件中(请查看 /etc 目录中的 banned.list文件)ACL 将从这个文件中读出所需信息用以屏蔽被禁止的站点。
  acl 14 192.168.1.17
  acl banned_sites url_regex "/etc/banned.list"
  http_access deny banned_sites
  http_access allow 14
wq
关于验证的方面我就不说了,呵呵,这里只是做小小的测试,供大家学习而已
[root@zy root]#service squid restart
然后进自己的windows进行设置,设为代理链接,然后就可以测试网页了,你可以实验下www.sina.com是上不去的,而其他网站是可以的
        忙了两天再学代理服务器,希望大家支持我。
自己顶自己一下,自己的努力只有自己最明白,不为别的为了自己的明天,一定再接再厉
正在找呢,谢谢了
比较详细,收藏了
哈哈,勇哥你真是太有才啦。这样的文也写得出来
雄起
猛烈顶起
基础,易懂,好学
引用:
【7】设置访问简单控制规则
     acl meinv 192.168.1.2-192.168.1.200/32
     http_access allow meinv
     http_access deny all