一個月的心血!iptables+NAT+squid 透明代理上網實現方案
:
歷盡千辛萬苦,翻變了所有技術論壇,整整研究了一個多月終於搞定啦!
關於此話題網上很多,但沒有一篇是能讓你實現目標的,惟有這篇!
本人也是Linux菜鳥,剛開始玩Linux,自學的何其經歷艱苦!
今天刊登這份文章,希望給象我一樣的新手提供幫助。
更希望高手能夠指出不足之處,謝謝。
平台:RedHat8.0 各組件均為Linux 自帶,雙網卡eth0為出口地址,eth1為連接內網地址,網絡連接正常。
實現步驟:
一。做IP地址翻譯,讓局域網內機器能夠連入互聯網。
#加載模塊
modprobe ip_tables
modprobe iptable_nat
modprobe iptable_filter
modprobe ip_conntrack_FTP
modprobe ip_nat_ftp
#啟用IP轉發
echo 1 > /proc/sys/net/ipv4/ip_forward
#ip翻譯(偽裝)
iptables -t nat -A POSTROUTING -s 172.28.0.0/16 -o eth0 -j SNAT --to x.x.x.x
注:172.28.0.0/16為內網地址,x.x.x.x為這台機器的外部接口地址。
客戶端只需將自己的網關設置為這些命令就實現了讓內網機器上網的目的!如果想用代理服務器提供HTTP的緩存功能接 著做:
二。代理服務器
#修改配置文件----squid.conf
cd /etc/squid
cp squid.conf.defauld squid.conf
#切記!這點重要,因為二者文件有所不同!!!
行數 修改
48 http_port 80
405 cache_mem 80 MB #大小自己改
1466 http_Access allow all
1650 httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
最後一步運行squid:
cd /etc/init.d
./squid start
#以上是最簡單的設置,至於怎麼優化squid請參考其他資料。
這樣,客戶端實際上是通過代理方式浏覽網頁(其他服務則不通過代理服務!)。
這樣做的最大神奇之處在於:
1.客戶斷完全感覺不到代理服務器的存在,IE不用做任何設置!
2.你可以隨時啟動/關閉squid,客戶端完全不受影響!(夠神奇吧?!)
三.補充
以下兩句最好寫進 /etc/rc.d/rc.local,因為這兩條記錄重起機器後就失效了。
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 172.28.0.0/16 -o eth0 -j SNAT --to x.x.x.x
完
祝大家愉快!
這家伙很懶,寫的不夠詳細,如有不明之處,請跟貼。
注: [color=red:eef1554163][size=18:eef1554163]這部分內容目前實現的功能主要就是一個nat的轉換的功能,對於squid方便的功能還沒有加上來,如果想實現iptables + squid的結合的話,必須在規則裡加上如下一條:
iptables -t nat -A PREROUTING -i eth1 -p tcp -s 172.28.0.0/16 --dport 80 -j REDIRECT --to-port 3128