linux下代理服務器配置 用squid+iptables實現透明代理

linux下代理服務器配置

squid+iptables實現透明代理

轉載請註明 原文:http://blog.csdn.net/xl_xunzhao/archive/2008/10/11/3057212.aspx

xunzhao的博客已搬家至:http://xunzhaoxz.itpub.net

關鍵字:linux服務器配置 代理服務器 透明代理 共享上網iptables Squid NAT

系統環境:

操作系統:UbuntuLTS 8.04服務器版

Squidsquid Version 2.6.STABLE18

iptablesIptablesv1.3.8

內網網卡:eth0192.168.33.1/24

外網網卡:eth1 192.168.51.50/24


(一)安裝SquidIptablesSquid版本2.62.5存在不少區別,所以二者在配置上有所差異,尤其在透明代理上的配置上。關於兩個軟件的下載和安裝方法,網上已經有許多文章了,請根據自己的發行版本搜索查看,本文主要寫如何配置以實現透明代理。

Squid下載地址:http://www.squid-cache.org

(二)配置iptables,實現NAT,關於iptables作爲防火牆使用的安全配置,不是本文的重點。

#首先加載模塊

modprobeip_tables

modprobeip_nat_ftp

modprobeip_nat_irc

modprobe-ip_conntrack

modprobe-ip_conntrack_ftp

modprobe-ip_conntrack_irc

#清空舊有配置

/sbin/iptables-F

/sbin/iptables-X

/sbin/iptables-Z

/sbin/iptables-F -t nat

/sbin/iptables-X -t nat

/sbin/iptables-Z -t nat

#設置默認策略

/sbin/iptables-P INPUT ACCEPT

/sbin/iptables-P OUTPUT ACCEPT

/sbin/iptables-P FORWARD ACCETP

echo"1" > /proc/sys/net/ipv4/ip_forward#啓用iptbles的數據轉發功能,重點步驟一!!

echo"1" > /proc/sys/net/ipv4/tcp_syncookies#安全措施,防syn攻擊


iptables-t nat -A POSTROUTING -s 192.168.33.0/24 -o eth1 -j SNAT --to192.168.51.50#實現SNAT,即源地址轉換(也稱爲IP隱藏)執行了這句以後,內網用戶無需設置代理,只要把網關指向192.168.33.1就可以上網了,不過此時Squid還沒有起作用,33.1只起到網關的作用。重點步驟二

也可使用下面命令實現上述功能,特別當主機採用ADSL等動態ip時,

iptables-t nat -A POSTROUTING -o eth1 -j MASQUERADE


iptables-t nat -A PREROUTING -s 192.168.33.0/24 -p tcp --dport 80 -jREDIRECT --to-ports 3128#端口重定向,實現透明代理的重點步驟一,有了這一步,客戶端就不必設置代理了,服務器根據用戶請求目標端口爲80,則自動重定向到3128,交由squid處理,由此實現了http代理;同理,根據Squid的協議支持情況,也可設置ftp代理等。


(三)配置Squid

一些基本的配置這裏就不再贅述了,幾個關鍵點講下。

http_port3128 transparent #配置Squid的監聽端口,默認爲3128

#參數transparentsquid2.6版本與先前舊版本一個比較重要的區別,是實現透明代理的重點步驟二,沒有該參數則無法實現透明代理,將出現以下錯誤

ERROR The requested URL could not be retrieved

截圖如下




cache_dirufs /var/spool/squid 100 16 256 #設置緩存大小,一級目錄、二級目錄數量

cache_swap_low90

cache_swap_high95

access_log/var/log/squid/access.log #記錄訪問日誌

cache_log/var/log/squid/cache.log#記錄緩存日誌

cache_store_log/var/log/squid/store.log

client_netmask255.255.255.255


cache_mgr [email protected]#設置管理員郵箱

cache_effective_userproxy #設置squidproxy用戶身份運行,這點涉及系統安全,具體參見“chroot技術或jail監禁、jail監牢”

cache_effective_groupproxy#功能同上

visible_hostnamesquid_ubuntuXZ #設置主機名

coredump_dir/var/spool/squid


aclbadurl1 dstdomain -i .qq.com

aclbadclient src 192.168.33.20

aclour_networks src 192.168.33.0/24#定義內網ip範圍


http_accessdeny badclient #拒絕某些用戶上網

http_accessdeny badurl1 #禁止用戶訪問某些網站

http_accessallow our_networks#允許內網用戶使用

http_accessdeny all#拒絕所有未定義動作


(四)其他功能擴展配置


iptables-t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 8080 -j DNAT--to-destination 192.168.51.55:80#端口重定向

iptables-t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 3389 -j DNAT--to-destination 192.168.51.55:3389#端口重定向

iptables-t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 53 -j DNAT--to-destination 202.101.107.85:53#端口重定向,本句起到智能DNS的作用

iptables-t filter -A INPUT -i eth1 -p icmp -j DROP#禁用icmp

iptables-t filter -A FORWARD -i eth0 -d 192.168.33.20/31 -j DROP#禁止IP192.168.33.20的客戶端上網

iptables-t filter -A FORWARD -d 58.60.9.246 -j DROP#禁止所有用戶訪問某IP

注意:iptables的配置會在每次系統重啓後被還原,因此需要設定自動導入配置文件,在/etc/rc.local中添加相應命令即可,用戶可以先用iptables-save導出當前配置,然後用文本編輯器配置好後,再用iptables-restore導入配置即可,如我設定的開機自動導入配置文件爲iptables-restore< /var/lib/iptables/saved.cfg





當然,iptablesSquid的功能還不只以上所述,關於其他方面的配置,還請關注網上的相關文章,我也將陸續整理一些自己使用中的經驗筆記與大家分享,也歡迎大家批評指教,指出我文章中的缺點與不足,呵呵。

(五)緩存管理

對於一些涉及密碼或者安全傳輸的網頁內容,則不應當予以緩存,因此還須添加以下內容。

#禁止緩存某些內容
hierarchy_stoplist cgi-bin ?
hierarchy_stoplist -i ^https:// ?
acl QUERY urlpath_regex -i cgi-bin /? /.asp /.php /.jsp /.cgi
acl denyssl urlpath_regex -i ^https://
no_cache deny QUERY
no_cache deny denyssl
#上面幾個就是說遇到URL中有包含cgi-bin和以https://開頭的都不要緩存,
#還有asp、cgi、php等動態腳本也不要緩存,
#因爲這些腳本通常都是動態更新的,這樣數據不同步。




參考:

http://blog.54master.com/html/24/t-264324.html

感謝zhangxiuyun,在他的文章(http://www.squid-cache.org/Versions/v2/2.6/cfgman/http_port.html)中寫到

http_port3128transparent#紅色部分是支持透明代理,這是squid新版本的改進。


-------------------------------------------------------------------------------------------------------------------------

延伸閱讀:

xunzhao的博客已搬家至:  http://xunzhaoxz.itpub.net

主機AIX:

【信息採集】IBM AIX系統硬件配置信息採集完整shell腳本V2.1(附腳本下載)   (LU論壇精華帖)

【信息採集】IBM AIX系統硬件信息查看命令(shell腳本)(附截圖PDF完整版下載)

操作規範(一)—— AIX rootvg mirror(附PDF下載) 

AIX系統安全加固(一)限制密碼重試次數,超過限制次數後鎖定用戶(附截圖PDF完整版下載)

AIX讀書筆記——Paging Space換頁空間

AIX平臺下創建文件系統需要注意的問題

IBM服務器虛擬化PowerVM——也談“雲計算”

數據庫Oracle:

新裝Oracle11gR2 11.2.0.2重要說明——Patchsetp10098816(附補丁下載地址)

Attention:new installation of Oracle 11.2.0.2

AIX 5.3/6.1環境下安裝Oracle10gR2 RAC常見報錯(注意事項)

【數據遷移】Oracle10gR2 rman異機恢復實驗(FS->RAW)(附截圖PDF完整版下載)   

【數據遷移】Oracle10gR2 rman異機恢復實驗(FS-FS)(附截圖PDF完整版下載)

操作規範(二)——RHEL5.4安裝Oracle 10.2.0.4(附截圖PDF完整版下載)  

操作規範(三)——Linux5.4安裝Oracle 11gR1(附截圖PDF完整版下載)     

操作規範(四)——Linux5.4安裝Oracle 11gR2(附截圖PDF完整版下載)     

操作規範(五)——Linux5.4平臺下Oracle 11.2.0.2安裝指南(附截圖PDF完整版下載)

Oracle RAC環境下重建ASM磁盤組(Re-create ASM diskgroup)(附截圖PDF完整版下載)   

Oracle RAC srv服務“首選”與“可用”狀態的調整——srvctl modify service 的使用(附截圖PDF完整版下載)     

Linux+ASM+OCFS環境下增加ORACLE RAC聯機重做日誌文件(附截圖PDF完整版下載)  

 

備份還原Symantec Netbackup:

搭建NBU實驗環境——解決虛擬帶庫vistor License過期問題(附截圖PDF完整版下載)  

NBU常用命令1——介質管理




發佈了21 篇原創文章 · 獲贊 4 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章