linux 跟我一起学10
zy66289214
|
1#
zy66289214 发表于 2007-07-30 13:41
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是上不去的,而其他网站是可以的 忙了两天再学代理服务器,希望大家支持我。 |