轉載請註明 原文:http://blog.csdn.net/xl_xunzhao/archive/2008/10/11/3057212.aspx
xunzhao的博客已搬家至:http://xunzhaoxz.itpub.net
關鍵字:linux服務器配置 代理服務器 透明代理 共享上網iptables Squid NAT
系統環境:
操作系統:UbuntuLTS 8.04服務器版
Squid:squid Version 2.6.STABLE18
iptables:Iptablesv1.3.8
內網網卡:eth0192.168.33.1/24
外網網卡:eth1 192.168.51.50/24
(一)安裝Squid和Iptables,Squid版本2.6與2.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,
#參數transparent是squid2.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 #設置squid以proxy用戶身份運行,這點涉及系統安全,具體參見“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#禁止IP爲192.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 。
當然,iptables和Squid的功能還不只以上所述,關於其他方面的配置,還請關注網上的相關文章,我也將陸續整理一些自己使用中的經驗筆記與大家分享,也歡迎大家批評指教,指出我文章中的缺點與不足,呵呵。
(五)緩存管理
對於一些涉及密碼或者安全傳輸的網頁內容,則不應當予以緩存,因此還須添加以下內容。
#禁止緩存某些內容
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完整版下載)
數據庫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完整版下載)