目标:阻止 UDP 流量到此网关 LAN 端的设备(使用 dd-wrt 固件),这些设备与互联网和彼此通信,以测试每个设备上运行的特定通信应用程序。
例外:允许支持这些设备的基本网络操作所需的最低 UDP 继续与互联网和彼此通信(例如:通过 TCP)。
到目前为止我已经尝试过:在此路由器/网关上添加了规则(通过 SSH 会话):
iptables -I FORWARD -p udp -j DROP
iptables -I INPUT -p udp -j DROP
观察到(什么运作良好):
- 该规则
iptables -I FORWARD -p udp -j DROP
成功阻止 LAN 端的设备通过 UDP 与 WAN 端的设备进行通信,这已通过无法使用实用程序在这些设备之间进行通信来验证ncat -u
。
观察到(什么不起作用):
- LAN 端的设备可以使用 UDP 相互通信:
- 在设备 1(在 LAN 端):
ncat -lvu
# 在默认端口 31337 上使用 UDP 启动 ncat 侦听器 - 在设备 2 上(在 LAN 端):
ncat -vu <ip-addr-device-1>
# 在默认端口 31337 上使用 UDP 启动 ncat 调用程序
- 在设备 1(在 LAN 端):
期望(期望的结果):
- 设备 2 上的 ncat 调用方无法使用 UDP 与设备 1 上的 ncat 侦听器进行通信。
- 设备 2 上的 ncat 调用者能够使用 TCP 与设备 1 上的 ncat 侦听器进行通信,但不使用 ncat 参数
-u
。
附加信息:
- 使用命令
iptables -I INPUT -p udp -j DROP
会影响太多其他通信,但无论如何都要使用,以证明此规则在阻止这两个设备之间的 UDP 通信方面无效。 - 使用硬件:tp-link AC1750(Archer C7 v5)
- 使用固件:dd-wrt,设置“Operating Mode = Gateway”
- 网关后面的设备是 UWP、iOS、Android。此处给出的示例使用 UWP (Windows 10) 设备。
- 我已经看到如何阻止 UDP 同时仍然允许与 iptables 的出站 UDP 连接?,但在我的情况下似乎没有效果,正如尝试所证明的那样
iptables -I INPUT -p udp -j DROP
。
您很可能无法干扰 LAN 到 LAN 的流量。我所知道的所有运行 DD-WRT / OpenWRT 的设备都有一个集成交换机,可以直接在第 2 层的 LAN 设备之间切换流量。
只有需要转发的流量才会传递到系统的路由器部分(第 3 层),Netfilter 可以在其中拦截流量。
您可以尝试使用多个以太网适配器设置 Linux 机器,然后将这些适配器桥接在一起。然后您可以使用
br_netfilter
强制 L2 流量通过 Netfilter,允许拦截流量。