我對這個問題的看法是通過使用`iproute2
框架。
通過規則創建blockhole /桶不可達的路由表(在我的示例表編號33),並給它高研所:
# ip rule add from all lookup 33 prio 1
現在找到你想阻止連接。在我來說,我已經使用鉻連接到google.com:
# ss -n -e -p | grep "chrom" | grep "173.194.*:443"
ESTAB 0 0 10.211.55.4:46710 173.194.35.2:443 timer: (keepalive,38sec,0) users:(("chromium-browse",8488,106)) uid:1000 ino:38318 sk:f6a4f800
ESTAB 0 0 10.211.55.4:49288 173.194.35.18:443 timer:(keepalive,34sec,0) users:(("chromium-browse",8488,109)) uid:1000 ino:38047 sk:f6a4cb00
所以,讓我們增加173.194.0.0/16表33和刷新緩存:
# ip route add unreachable 173.194.0.0/16 table 33
# ip route flush cache
嘗試連接到谷歌.com現在在您的瀏覽器中,您將在瀏覽器中獲得ERR_CONNECTION_REFUSED
。
解除你的自我強加的堵塞的面紗,你簡單的沖洗桶:
# ip route flush table 33
當然,如果你需要更細緻的區分,可以使用tc
和U32分類來標記的確切IP:PORT
組合(和其他分組方面的問題),並添加一個FW規則到剷鬥(未測試):
# tc filter add dev eth1 parent ffff: protocol ip prio 1 u32 \
match ip src 173.194.0.0/16 match ip dport 443 classid :1
# ip rule add fwmark 1 table 33 prio 1 realms 3/4
並具有相應的權限。 – 2011-06-03 12:36:50
請注意,此命令只是將條目添加到防火牆表。它並沒有真正關閉連接,但是由於FF爲它嘗試發送/接收的下一個數據包收到錯誤,應該可以正常工作。 – 2011-06-03 12:54:24
@Aaron Digulla:好點 – vitaut 2011-06-03 13:02:30