正向代理之透明代理
所謂的透明代理,指的是對客戶端來是透明的,它並不知道是通過代理服務器上網的!
外網----[代理服務器]------內網
eth1 eth0
192.168.3.121 192.168.1.249
作爲一個透明代理服務器,有以下特點:
1、代理服務在GW上配置
2、用LINUX OS主機做GW --- 打開ip_forward功能
3、GW一般都多塊網卡,連接內外網
4、代理服務器本身可以上網
-------------------
公司中做了這樣一個透明代理服務器:
1、代理上網,並緩存加速
2、做訪問控制
8:00-22:00可以上網
不可以上kaixin001.com qzone.com renren.com
不可以下載.mp3 .mp4 .wav .rmvb
代理服務器端:
外網----[代理服務器]------內網
eth1 eth0
192.168.3.121 192.168.1.249
squid服務器:
1、安裝包
yum -y install squid
2、按需修改配置文件
]# vim /etc/squid/squid.conf
440 acl worktime time SMTWHFA 08:00-22:00
441 acl baddomain dstdomain .kaixin001.com
442 acl baddomain2 dstdomain .163.com
443 acl baddomain3 dstdomain .qzone.com .qq.com
444 acl bad urlpath_regex -i \.mp3$ \.mp4$ \.rmvb$
580 acl all src 0.0.0.0/0.0.0.0
643 #http_access deny all 如果這行生效,表示所有的src,想通過代理服務器上網,都會被拒絕
643 #http_access deny all
644 http_access deny bad
645 http_access deny baddomain
646 http_access deny baddomain
647 http_access deny baddomain2
648 http_access deny baddomain3
649 http_access allow worktime
650 http_access allow all 允許的應該放到後面
934 http_port 3128 transparent 定義監聽端口及透明代理工作模式
3、啓動服務
]# service squid restart
4、代理服務是配置在網關上的,因而需要打開ip_forward功能
]# echo 1 > /proc/sys/net/ipv4/ip_forward
5、通過iptables規則,讓代理服務器收到客戶端對外80端口的請求後,把請求交給本機的3128端口監聽的程序(squid)處理
[root@localhost ~]# netstat -tnlp | grep :3128
tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN 4627/(squid)
]# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to 3128
client:
客戶端都需要配置:
正確的ip/gw/dns(最好是搭一個DHCP服務器來分配)
其中ip與squid在同一網絡
gw是指向squid
dns是網絡中實際的dns服務器
]# ifconfig eth0 | grep inet
inet addr:192.168.1.254 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::2ee:eeff:fe00:a76/64 Scope:Link
]# route del default
]# route add default gw 192.168.1.249
]# cat /etc/resolv.conf
nameserver 202.106.0.20
nameserver 202.106.46.151
重點:代理服務器只做80端口的代理,客戶端需要做DNS解析時,需要通過解析成功
在網關上配置:
]# iptables -t nat -A POSTROUTING -p udp --dport 53 -j SNAT --to 192.168.3.121 (此ip是網關的外網卡IP)
squid.conf中重要的字段
/etc/squid/squid.conf中重要的字段:
http_port 3128 定義默認監聽的代理端口
cache_dir ufs /var/spool/squid 100 16 256
reiserfs/ufs 緩存目錄 緩存大小多少M 一級目錄的個數 二級目錄的個數
爲了讓緩存效率更高,你可以考慮在內存空間充足的情況下,劃分出一塊內存來當磁盤用。但是請注意,斷電內存中緩將丟失
]# mount -t tmpfs tmpfs /var/spool/squid/ -o size=500M
cache_access_log /var/log/squid/access.log定義緩存訪問日誌文件
cache_store_log /var/log/squid/store.log
緩存存儲日誌文件
maximum_object_size 4096K
指定客戶端需代理出問題時,可以聯繫這個代理服務器,或者給這個郵箱發郵件。
visible_hostname squidserver 定義squid服務器的主機名
cache_mgr root@squidserver