squid透明代理网关

squid server
内网 eth0 192.168.209.253
外网 eth1 172.16.10.128
1.安装squid和dns
[root@study ~]# yum -y install bind bind-chroot caching-nameserver squid
[root@study ~]# chkconfig --add squid
[root@study ~]# chkconfig squid on
[root@study ~]# chkconfig --add named
[root@study ~]# chkconfig named on
 
2.修改squid配置文件
[root@study ~]# vim /etc/squid/squid.conf
修改:
http_port 3128 transparent #加入transparent
cache_mem 512 MB #设置squid内存大小
cache_dir ufs /var/spool/squid 10240 16 256 #设置cache目录
cache_log /var/log/squid/cache.log #缓存日记
acl all src 0.0.0.0/0.0.0.0
acl web src 192.168.209.0/255.255.255.0 #定义acl,名为web
http_access allow web #允许web访问
http_access deny all
half_closed_clients off
maximum_object_size 32768 KB
cache_swap_low 90
cache_swap_high 95
visible_hostname 192.168.209.253
 
修改后结果:
[root@study ~]# egrep -v '^#|^$' /etc/squid/squid.conf
  
  
  
  
  1. acl all src 0.0.0.0/0.0.0.0 
  2. acl web src 192.168.209.0/255.255.255.0 
  3. acl manager proto cache_object 
  4. acl localhost src 127.0.0.1/255.255.255.255 
  5. acl to_localhost dst 127.0.0.0/8 
  6. acl SSL_ports port 443 
  7. acl Safe_ports port 80 # http 
  8. acl Safe_ports port 21 # ftp 
  9. acl Safe_ports port 443 # https 
  10. acl Safe_ports port 70 # gopher 
  11. acl Safe_ports port 210 # wais 
  12. acl Safe_ports port 1025-65535 # unregistered ports 
  13. acl Safe_ports port 280 # http-mgmt 
  14. acl Safe_ports port 488 # gss-http 
  15. acl Safe_ports port 591 # filemaker 
  16. acl Safe_ports port 777 # multiling http 
  17. acl CONNECT method CONNECT 
  18. http_access allow manager localhost 
  19. http_access deny manager 
  20. http_access deny !Safe_ports 
  21. http_access deny CONNECT !SSL_ports 
  22. http_access allow localhost 
  23. http_access allow web 
  24. http_access deny all 
  25. icp_access allow all 
  26. http_port 3128 transparent 
  27. hierarchy_stoplist cgi-bin ? 
  28. cache_mem 512 MB 
  29. cache_dir ufs /var/spool/squid 10240 16 256 
  30. maximum_object_size 32768 KB 
  31. cache_swap_low 90 
  32. cache_swap_high 95 
  33. access_log /var/log/squid/access.log squid 
  34. cache_log /var/log/squid/cache.log 
  35. acl QUERY urlpath_regex cgi-bin \? 
  36. cache deny QUERY 
  37. refresh_pattern ^ftp: 1440 20% 10080 
  38. refresh_pattern ^gopher: 1440 0% 1440 
  39. refresh_pattern . 0 20% 4320 
  40. acl apache rep_header Server ^Apache 
  41. broken_vary_encoding allow apache 
  42. visible_hostname 192.168.209.253 
  43. coredump_dir /var/spool/squid 
 
3.配置缓存Cache-only服务器
[root@study ~]# mv /etc/named.caching-nameserver.conf /etc/named.conf
[root@study ~]# vim /etc/named.conf
  
  
  
  
  1. options { 
  2.         listen-on port 53 { any; }; 
  3.         listen-on-v6 port 53 { ::1; }; 
  4.         directory       "/var/named"; 
  5.         dump-file       "/var/named/data/cache_dump.db"; 
  6.         statistics-file "/var/named/data/named_stats.txt"; 
  7.         memstatistics-file "/var/named/data/named_mem_stats.txt"; 
  8.  
  9.         allow-query     { any; }; 
  10.         allow-query-cache { any; }; 
  11. }; 
  12. logging { 
  13.         channel default_debug { 
  14.                 file "data/named.run"; 
  15.                 severity dynamic; 
  16.         }; 
  17. }; 
  18. view localhost_resolver { 
  19.         forward only; 
  20.         forwarders { 
  21.                 202.96.128.86; 
  22.                 202.96.128.143; 
  23.         }; 
  24.  
  25.         match-clients      { any; }; 
  26.         match-destinations { any; }; 
  27.         recursion yes; 
  28.         include "/etc/named.rfc1912.zones"; 
  29. }; 
[root@study ~]# /etc/init.d/named start
 
4.开启内核路由功能
[root@study ~]# vim /etc/sysctl.conf
修改:
net.ipv4.ip_forward = 1
[root@study ~]# sysctl -p #使用配置生效
 
5.配置iptables
[root@study ~]# iptables -t nat -F
[root@study ~]# iptables -t nat -A POSTROUTING -s 192.168.209.0/24 -o eth1 -j MASQUERADE
[root@study ~]# iptables -t nat -A PREROUTING -p tcp -s 192.168.209.0/24 \
 --dport 80 -j REDIRECT --to-ports 3128
#将来自80端口的请求转向给squid的3128端口
[root@study ~]# service iptables save
 
6.客户机配置及测试
clip_image002
clip_image004
查看访问记录
clip_image006
 
7.其他
如果你的内存容量足够大,可以把内存做为缓存盘,把squid的缓存直接保存到内存中,从而加快访问的速度。实现的方法是利用系统默认加载的/dev/shm,也就是tmpfs文件系统,它默认最大为内存的一半大小,使用df -h可以看到,当空间不足时可以占用swap的空间,但由于数据是直接保存在内存中,所以服务器重启后数据会丢失。
[root@study ~]# mount -t tmpfs -o size=512M,nr_inodes=1000000 -o noatime tmpfs /var/spool/squid/
[root@study ~]# squid -z
[root@study ~]# /etc/init.d/squid start
把上面的命令写成启动脚本,下次重启时自动生效。
 
附:squid命中率返回的状态:
1.TCP_HIT
A valid copy of the requested object was in the cache。
就是说我squid本地有从源拿过来的这个请求,并且在本地已经做了cache,在请求的时候可以直接回复客户端的请求。
2.TCP_MEM_HIT
A valid copy of the requested object was in the cache and it was in memory, thus avoiding disk accesses.
内存cache命中
3.TCP_IMS_HIT
The client issued an IMS request for an object which was in the cache and fresh.
客户端发送了If-Modified-Since请求,请求的对象在cache中并且刷新。
4.TCP_REFRESH_HIT
The requested object was cached but STALE. The IMS query for the object resulted in "304 not modified".
就是这个请求的cache存在,但是不是最新的,是旧的。客户端的If-Modified-Since请求是"304 not modified"
5.TCP_MISS
The requested object was not in the cache.
就是说cache中没有客户端的请求。一般的比如说404 FIRST_UP_PARENT
6.TCP_REFRESH_MISS
The requested object was cached but STALE. The IMS query returned the new content.
这个请求已经被cache了,但是是旧的。If-Modified-Since请求返回了一个新的内容。
 
 
 

 

你可能感兴趣的:(代理,server,squid,透明)