1
Linux 討論版 / Re: 使用iptables给局域网内设定域名拦截。
« 於: 2011-10-15 14:22 »不知道現在的 iptables 是否能根據 domain 來判定封包?是的,iptables不建议用域名,因为会增加他的解析负担。即便是用a.com的ip,我的规则仍不生效。不知道是不是还缺少规则。
我的認知是:
在規則裡(memory)只能設 IP,就算是指令上面用 domain,但必須要解釋為IP才能成為規則。
嗯,你的用意是要轉內部訪問a.com,還是外部訪問a.com ?
看起來你是要把內部訪問外部 Web 都轉向到一個類似 Captive Portal 的網頁吧.
參考這篇
http://tldp.org/HOWTO/TransparentProxy-6.html
使用其中6.2 Second method (more complicated, but more general)
* iptables -t mangle -A PREROUTING -j ACCEPT -p tcp --dport 80 -s squid-box
* iptables -t mangle -A PREROUTING -j MARK --set-mark 3 -p tcp --dport 80
* ip rule add fwmark 3 table 2
* ip route add default via squid-box dev eth1 table 2
PS: 將squid-box當成你的Web就是了.
你如要過濾domain name, 使用iptables 是不太可能辦到,iptables只有在載入時轉換domain name為IP, 所以如果domain name的IP有變化是不會察覺的。
要過濾 domain name最簡單是用Squid Proxy來控制.
我的做法是用Liunx當Router+Squid Proxy, 直接將Web轉到Proxy上去過濾。會簡單很多。
其原理是把 要訪問a.com的需求 轉給另一台web. 就是Reverse Proxy的代理啦,
這種做法可以應付所有 1.a.com, 2.a.com, ....等相同Domain的轉向。