Iptables

如何在 DD-WRT 中配置 iptables 以僅在 br1 上阻止 Skype?

  • August 13, 2015

在 Linksys 路由器上使用 DD-WRT,我將專用網路設置為 br0,將訪客網路設置為 br1。

我只想在訪客網路上阻止對 Skype 的訪問,而我見過的阻止 Skype 的最簡單方法是阻止對其身份驗證伺服器的訪問。

通過添加以下防火牆規則,我能夠成功阻止每個連接到路由器的 Skype 訪問:

iptables -I FORWARD -s 111.221.74.0/24 -j DROP
iptables -I FORWARD -s 111.221.77.0/24 -j DROP
iptables -I FORWARD -s 157.55.130.0/24 -j DROP
iptables -I FORWARD -s 157.55.235.0/24 -j DROP
iptables -I FORWARD -s 157.55.56.0/24 -j DROP
iptables -I FORWARD -s 157.56.52.0/24 -j DROP
iptables -I FORWARD -s 194.165.188.0/24 -j DROP
iptables -I FORWARD -s 195.46.253.0/24 -j DROP
iptables -I FORWARD -s 213.199.179.0/24 -j DROP
iptables -I FORWARD -s 63.245.217.0/24 -j DROP
iptables -I FORWARD -s 64.4.23.0/24 -j DROP
iptables -I FORWARD -s 65.55.223.0/24 -j DROP

所以我認為只需在上述每一行的 FORWARD 命令後添加“-i br1”,我就可以只在來賓 (br1) 網路上阻止它,如下所示:

iptables -I FORWARD -i br1 -s 111.221.74.0/24 -j DROP

但是,這不會阻止任何人。我究竟做錯了什麼?提前致謝。

PS 作為進一步的參考,這裡是我預先存在的目前防火牆規則:

#在 WAN 埠上啟用 NAT 以糾正超過 17000 版本中的錯誤
iptables -t nat -I POSTROUTING -o `get_wanface` -j SNAT --to `nvram get wan_ipaddr`

#允許 br1 訪問 br0、WAN 和任何其他子網(如果 SPI 防火牆打開則需要)
iptables -I FORWARD -i br1 -m state --state NEW -j ACCEPT
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

#限制br1訪問br0
iptables -I FORWARD -i br1 -o br0 -m state --state NEW -j DROP

#限制br1訪問WAN子網
iptables -I FORWARD -i br1 -d `nvram get wan_ipaddr`/`nvram get wan_netmask` -m state --state NEW -j DROP

#限制br1訪問路由器的本地socket
iptables -I INPUT -i br1 -m state --state NEW -j DROP

#允許br1訪問路由器上的DHCP
iptables -I 輸入 -i br1 -p udp --dport 67 -j 接受

#允許br1訪問路由器上的DNS
iptables -I 輸入 -i br1 -p udp --dport 53 -j 接受
iptables -I INPUT -i br1 -p tcp --dport 53 -j ACCEPT

您的 Skype 規則正在阻止來自給定 IP 地址範圍的流量。因此,流量來自您的 WAN 介面,而不是您的訪客網橋 br1。這就是為什麼-i br1不起作用。

要解決此問題,請改為阻止從訪客橋進入的那些目的地的流量。例如:

iptables -I FORWARD -i br1 -d 111.221.74.0/24 -j DROP

阻止特定的目標 IP 地址不是一個長期的解決方案,因為這些地址隨時可能發生變化。您應該在 dns 級別阻止 Skype 的主機名 *.skype.com。您可以使用 dns 過濾服務來執行此操作。您可以通過擷取他們的 dns 查詢並重新路由它們來強制您的客戶使用您的過濾服務。這可以通過下面的 iptables 命令來完成。請將 guest_ip_range 替換為客人使用的 CIDR 格式的子網和遮罩,並將 dns_filtering_service 替換為過濾服務的 dns 伺服器。

iptables --table nat --append PREROUTING --in-interface br0 --source guest_ip_range -protocol tcp --dport 53 --jump DNAT --to dns_filtering_service
iptables --table nat --append PREROUTING --in-interface br0 --source guest_ip_range -protocol udp --dport 53 --jump DNAT --to dns_filtering_service

引用自:https://serverfault.com/questions/460692