我对网络还很陌生,所以如果这是一个微不足道的问题,请耐心等待。
我有一个 DD-WRT 路由器 R1(ip:192.168.0.200)连接到另一个路由器 R2(ip:192.168.0.1)。R2 连接到 ISP。
我想阻止连接到 R1 的特定 IP(192.168.0.4)地址访问互联网。
我想使用 iptables 来实现这一点。
我有以下规则。
iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP 0 -- 192.168.0.4 anywhere
DROP 0 -- anywhere 192.168.0.4
Chain FORWARD (policy ACCEPT)
target prot opt source destination
DROP 0 -- 192.168.0.4 anywhere
DROP 0 -- anywhere 192.168.0.4
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
DROP 0 -- anywhere 192.168.0.4
DROP 0 -- 192.168.0.4 anywhere
我的路由表如下
route -n
0.0.0.0 192.168.0.200 0.0.0.0 UG 0 0 0 br0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
即使设置了这些规则,我仍然能够从 IP 为 192.168.0.4 的设备访问互联网
没有数据包符合上述规则。(使用 分析时为 0 个数据包iptables -L -vnx
)
以下是来自 192.168.0.4 的跟踪路由
$ traceroute stackexchange.com
traceroute to stackexchange.com (151.101.1.69), 30 hops max, 60 byte packets
1 192.168.43.1 (192.168.43.1) 6.772 ms 6.800 ms 6.889 ms
2 * * *
3 10.40.24.129 (10.40.24.129) 48.875 ms 48.856 ms 48.848 ms
4 125.20.84.161 (125.20.84.161) 48.420 ms 48.408 ms 48.401 ms
5 182.79.187.6 (182.79.187.6) 158.759 ms 182.79.247.202 (182.79.247.202) 158.753 ms 182.79.187.6 (182.79.187.6) 162.258 ms
6 * * *
$ ip route show
default via 192.168.43.1 dev wlp3s0 proto static metric 600
192.168.43.0/24 dev wlp3s0 proto kernel scope link src 192.168.43.175 metric 600
Is there something i am missing?
答案1
您的客户端 192.168.0.4 与 R2 位于同一子网;将 R2 设置为其网关,即使物理连接到 R1,流量也会在以太网层切换到 R2,因此它不会经过 R1 的路由/处理层,iptables 也看不到它。
任何一个:
- 在 R2 上应用防火墙规则(R1 仅充当交换机而不是路由器)
或者
- 将 R1 的客户端分离到 R1 上的不同子网和 VLAN 中,使用 R1 作为默认网关,这将强制 R1 将流量路由到 R2,然后 iptables 转发表规则将适用
或者
- 调查 ebtables/arptables(以太网/交换机防火墙 - 可能会影响性能)