2007年7月1日 星期日

建置一部transparent proxy

transparent proxy,也就是透通性 的WEB Proxy,
讓一般的PC在存取web port時(通常是80),
gateway 能夠把這個 request 導向給 web proxy server,
由 web proxy server 代為抓資料,然後回應給PC。
transparent proxy 好處就是,PC不用再特定設定 proxy,
就可以自行由 gateway 達成這個目的。
而整體的對外網路頻寬可以因為 proxy 的機制,達到節省頻寬的目的,
讓web browser避免重複抓取相同的資料。
不過我認為未必啦!因為現在互動的網頁比比皆是,
若是讀靜態網頁,效果才會好。
但若是我把proxy設得够好的話,也是有達到網路安全防護的功能,
比如說,限制下載,限制讀一些哩哩叩叩的網站,這倒也不失為一個好方案!

transparent proxy,需要一台 proxy 身兼router(gateway)的服務。

以下範例:
一台 Linux 主機,提供 NAT功能,上面同時跑 squid proxy 服務於 3128 port 。
但我只用一張網卡eth0!因為我本身就能上網,只是要讓我的PC來當SERVER用罷了。
首先把squid.conf 設定好,以便於可能使用 transparent proxy 機制。
我改了預設的規則如下
acl localhost src 127.0.0.1/255.255.255.255
->acl localhost src 10.1.1.0/255.255.255.0
這樣一來可以讓10.1.1.1到10.1.1.254近兩百多部的電腦,
透過我設定的transparent proxy上internet!
以一台P3等級的普通PC建置成的SERVER,够本了!

接著還有增加squid.conf 的一些內容,
httpd_accel_host proxy.xxx.com.tw
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

改好記得重啓squid服務!
(see: http://www.squid-cache.org/Doc/FAQ/FAQ-15.html#ss15.4 )

上面的 proxy.xxx.com.tw 請改成該 proxy 主機名稱。(記得hosts或dns)
接著是 NAT機制設定。

以 kernel 2.2 來說,是這般設定:
#echo "1" > /proc/sys/net/ipv4/ip_forward
#ipchains -P forward DENY
#ipchains -A forward -i eth0 -j MASQ -s 192.168.1.0/24
#ipchains -M -S 86400 86400 360 <-- 這是讓 timeout 拉長一點 #modprobe ip_masq_ftp <-- 掛入 ftp 等 module 處理 ftp 相關連結問題 #ipchains -A input -i eth1 -p tcp -s xxx.xxx.xxx.xxx/netmask -d 0/0 \ #--dport 80 -j REDIRECT 3128 #ipchains -A forward -i eth0 -s xxx.xxx.xxx.xxx/netmask -d 0/0 -j MASQ 設定好後,只要是 xxx.xxx.xxx.xxx 這些 private ip 對外發出 port 80 的 request 後, 就會導向給我建的 NAT主機上的 port 3128, 然後由 squid cache server 代為 proxy 資料。 使用 kernel 2.4 的話: #echo "1" > /proc/sys/net/ipv4/ip_forward
#modprobe ip_tables <-- 這是編譯核心是選擇 module 才需要 #modprobe ip_nat_ftp <-- 同上,處理 ftp 等連結問題 #modprobe ip_conntrack #modprobe ip_conntrack_ftp #modprobn ip_conntrack_irc #iptables -t nat -A PREROUTING -p tcp -s xxx.xxx.xxx.xxx/netmask \ #--dport 80 -j REDIRECT --to-ports 3128 #iptables -t nat -A POSTROUTING -s xxx.xxx.xxx.xxx/netmask -j MASQUERADE 由於現在用的linux版本,太多是kernel 2.4以上,所以kernel 2.2的範例看看就好了。 而上面一太串的指令,最好是寫成shell script來使用,免得每次都要打一堆文字,煩! 還有echo那行,可以找/etc/sysctl.conf搞定。
我上網找到的參考資料,大部份是squid2.5版本的設定方式,
也就是上頭曾提到的squid寫法。
以下節錄自鳥站...
[root@test root]# vi /usr/local/squid/etc/squid.conf
# 這裡請填入你的 Proxy 主機名稱 與 port !
httpd_accel_host vbird.adsldns.org
# 因為我們是要進行 WWW 的資料快取,所以 port 當然就是 80 囉!
httpd_accel_port 80
# 這個很重要!因為設定 httpd_accel_host 之後, cache 的設定會自動被終止,
# 必須要加上這個設定為 on 之後,才能提供 cache 的功能!
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

[root@test root]# /usr/local/squid/sbin/squid -k reconfigure

但由於我安裝的ubuntu7.4內建的squid版本是2.6,
哇哩咧!怎麼試都不行,原來是它修正了設定方式,改簡單了哦!
我們只要編輯squid.conf這個檔,把http_port 3128,改成http_port 3128 transparent。
就可以了,加一個字就成,神吧!別忘了重啓squid。

參考文件...

想換BLOG的樣版

一直覺得現在用的BLOG樣版範本醜醜的,但是又不曉得怎麼改!
看了一下,發現它的樣版系統好像是xml。
唉!不熟耶~怎麼辦?
沒想到,一頭鑽到電腦資訊的世界,
真的是一條不歸路。

學不完啊!
最近找到一個網站,在推網路封包監聽軟體的。

E-Detective

記得剛進公司時,就想找這類的產品,
因為身為網管人員,我自認為自己的網管知識和技術,只是中等而已。
如果可以找到相輔相成的軟體,應該可以在工作上,提高業務的成效才是!

這個網站,也提供了一些網管政策,
若是一般公司想做更嚴謹的控管,可以參考一下內容。

我摘錄一小段:

貳. 非合理之使用
1.
個人商業使用
2.
寄發垃圾郵件, 故意散播電腦病毒, 架設網站個人, FTP, Mail server …相關不當使用行為
3.
散播公司機密
4.
任何非法目的
5.
故意造成任何網路、資訊服務、設備之中斷或干擾
6.
故意使他人閱讀將導致公司須對該他人負妨害風化或平等工作 機會等相關法律責任之內容
7. 故意下載或要求軟體或媒體檔案或資料而有理由相信將會佔用 過多的頻寬


全文請看...

而XML嘛!我應該會去學的,不然誰要幫我改版面?

搜尋此網誌

本站大事記

這個部落格(網站)內容以分享LINUX和延伸出的技術文章為主!
特別是為了工作和進修需要,搜集了不少網站連結。
希望對來這裡觀文的朋友們,有提供一些有用的資訊或文章。
但這裡的文章中,也包含個人的心情扎記和隨興言談……
若是當中沒有對上你的口味,請多包涵!

原「琳娜絲與希斯寇的邂逅」,改名為「愛上琳娜絲」!

原「琳娜絲與希斯寇的邂逅」,改名為「愛上琳娜絲」!
--原序文--
就是當LINUX遇上CISCO啦!他們的結合還能作什麼事…不就是讓這個世界的網路,串…串起來啊…不然你們那能上這網站看部落格!