最近搞了個openwrt的router,以往都用代理來上網,可是代理每次都要設置端口啊,代理IP這些,以爲很心煩。如今好了,用openwrt搭建一個透明代理,讓全部接上這個router的人都經過代理上網,還能夠對他們監控和進行一些規則設定: )vim
個人Local proxy是這樣的,如圖:服務器
個人squid版本爲2.7ssh
很是多的電腦接入個人openwrt,我用的是淘寶買的DB120。感受還不錯,而後我ssh進入openwrt。tcp
1 ssh 192.168.8.1 –l root
隨後輸入密碼,進入登錄界面,先安裝squid。工具
1 opkg update 2 opkg install squid
安裝完後,和對PC機Linux的squid操做同樣,編輯squid.conf網站
1 vim /etc/squid/squid.conf
按照另外一篇個人另外一篇《Linux network proxy and route》裏邊對squid.conf的配置後,要多添加點東東。首先說一些相關的語法:ui
cache_peer [上層proxy主機名] [proxy角色] [proxy port] [icp port] [額外參數]spa
cache_peer_access [上層proxy主機名] [allow|deny] [acl名稱]設計
主要是用acl設計一個名稱後,再以cache_peer_access去放行或者拒絕讀取。代理
好了,個人上層proxy是172.16.54.159,因此在squid.conf裏邊添加:
1 cache_peer 172.16.54.159 parent 3128 3130 proxy-only no-query no-digest
這樣就成功設置了上層proxy,下面如何強制全部在192.168.8.x網段的人都必定要用個人proxy上網呢?也就是說每臺機不用設置proxy也能夠直接使用openwrt的proxy上網。其實很簡單,繼續在squid.conf裏邊的http_port中添加:
1 http_port 3128 transparent
保存後退出,啓動squid就能夠了,很簡單吧?固然這裏只是簡單的配置了,若是還想要更多的功能,須要本身去了解下squid.conf就能夠了,我比較懶,就作到這麼多了: >
還有一些問題須要注意,怎麼知道本身的squid.conf啓動了呢?
可是隻是作了squid.conf的配置還不行呢,必須把端口80重定向到3128才能夠哦,否則用了透明代理也上不了網呀:<
網上有些人是這麼作的,因此在終端輸入:
1 opkg install iptables-utils iptables-mod-nat-extra 2 iptables-save > iptables.org 3 iptables –t nat –A PREROUTING –i br-lan –p tcp --dport 80 –j REDIRECT --to-ports 3128
第1行是openwrt安裝iptables的一些工具,第2行是保存如今的iptalbes設置,若是之後不想用透明代理,就能夠直接在終端輸入:
1 iptables-restore iptables.org
這樣就恢復原狀了嘛J
第三行是用iptables重定向80到3128,網上好多人好像均可以,可是我遇到一個問題,就是我輸入這個命令之後,出現:
iptables: No chain/target/match by that name
我到如今還沒弄清楚怎麼回事呢,在網上也找了很久,好像是某些模塊沒編譯進內核,可是根據openwrt官網上說的,我應該編譯進去了。我後來用了另外一個命令來redirect,如今也運行得不錯,湊合着用吧。
我這麼作的,在終端輸入了:
1 iptables –t nat –A PREROUTING –i br-lan –p tcp --src 192.168.8.0/24 --dport 80 –j DNAT --to 192.168.8.1:3128
結果成功運行了,能夠訪問網站,我對iptables也不是很熟悉,等熟悉了再分析吧:>