squid 透明代理配置


阿銘在教程中已經介紹過squid的安裝和配置,http://study.lishiming.net/chapter22.html 教程中只介紹了初級的正向代理和反向代理,這篇文檔將要介紹透明代理如何配置。

首先,阿銘要介紹一下,什么是透明代理?

透明代理的意思是客戶端根本不需要知道有代理服務器的存在,它改變你的request fields(報文),並會傳送真實IP,多用於路由器的NAT轉發中。

透明代理的原理是這樣的:
1. 假設A為內部網絡客戶機
2. B為外部網絡服務器,B提供的服務為httpd服務,監聽端口為80
3. C為代理服務器(也是我們的網關),假如代理服務器提供服務端口為3128

過程: 當A向B的80端口請求數據時,TCP連接請求要先經過C,C看到A請求的是B的80端口時,C由於已經設置了轉發規則,所以C會把A的請求80端口轉發到自己的3128端口,也就是說A將要直接訪問C的3128端口,而非B服務器的80端口,此時,C會先去訪問B的80端口,把A要訪問B的請求數據先請求過來,保存到C上,然后C再把請求數據吐給A。而在A看來,它貌似是直接請求的B,而實際並非如此。由於這些連接過程是自動的,不需要客戶端手工配置代理服務器,甚至用戶根本不知道代理服務器的存在,因而對用戶來說是透明的。

下面阿銘來教您配置透明代理:

通過上面的原理分析,可知,只有您的代理服務器為網關時,才可以實現透明代理的功能,否則無效。實際應用中,透明代理服務器應該有至少兩個網卡,第一個網卡連接到外網,或者它可以直接上網,第二個網卡連接的是內部的一個局域網段,也就是想使用代理上網的網段。

假設,透明代理服務器的網卡1eth0設置IP為 10.2.1.100(可以上網的ip), 網卡2eth1的ip設置為192.168.19.1,那么要通過透明代理上網的局域網段應該為 192.168.19.0/24,並且在該局域網的客戶機應該設置的網關地址為192.168.19.1.

1. 安裝squid 
yum  install -y squid

2. 配置squid

rm -f /etc/squid/squid.conf
vim /etc/squid/squid.conf

寫入如下內容:
http_port 3128 transparent
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl localnet src 10.0.0.0/8     # RFC1918 possible internal network
acl localnet src 172.16.0.0/12  # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl SSL_ports port 443
acl Safe_ports port 80 8080         # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localnet
http_access allow localhost
http_access deny all
cache_dir aufs /data/cache 1024 16 256
cache_mem 128 MB
hierarchy_stoplist cgi-bin ?
coredump_dir /var/spool/squid
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern \.(jpg|png|gif|mp3|xml) 1440    50%     2880    ignore-reload
refresh_pattern .               0       20%     4320

3.  創建緩存目錄,並修改權限
mkdir /data/cahce; chown -R squid:squid  /data/cache

4. 初始化緩存目錄
squid -z

5. 啟動squid 
service squid start

6. 打開端口轉發
echo "1" > /proc/sys/net/ipv4/ip_forward

7. 設置防火牆規則
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp -s 192.168.19.0/24 --dport 80 -j REDIRECT --to-ports 3128


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM