iptables 规则来中断路由

jwe*_*ndl 2 iptables

我刚刚在我的网络中安装了一个无线接入点。

这是一个小图:

Internet <===> linux box with iptables <===> LAN
Run Code Online (Sandbox Code Playgroud)

我将无线接入点插入 LAN,一切正常。网络在所有设备之间工作。

我有许多使用 dnsmasq 指定的静态地址。这些地址基本上是 xyz1 到 xyz199

我的 dhcp 服务器(在 linux 机器上)设置为在 xyz200 到 xyz250 之间分发地址

我的目标是允许 LAN 设备与 LAN 设备和 Internet 通信。无线设备只能与互联网通话。我已经有了这个工作和配置的第一部分。只需要第二部分的咒语。我的无线设备将通过 dhcp 设置。

我知道 VLAN 非常适合这个,但我没有任何托管交换机之类的东西。这只是为了我的家,我要便宜。

我的希望是做这样的事情:

iptables -A input -p tcp -s 192.168.1.200:192.168.1.250 -d 192.168.1.1:192.168.1.199 -j REJECT
iptables -A input -p udp -s 192.168.1.200:192.168.1.250 -d 192.168.1.1:192.168.1.199 -j REJECT
Run Code Online (Sandbox Code Playgroud)

当然,我不能,因为 iptables 只使用块或单个 ip。我什至不确定执行适合我想要的范围的地址块的语法是什么样的。

先感谢您!

tec*_*b0y 6

只要有线和无线主机在同一个子网中,网关上的任何 iptables 都不会阻止它们相互通信。

但是,有几种方法可以伪造它:

如果所有有线主机都有静态 IP(或 DHCP 保留地址)但不使用动态 IP,那么您可以在 iptables 主机的 LAN 接口上的另一个子网中放置一个辅助 IP。您需要关闭重定向(它是一个 sysctl),并为有线客户端硬编码/使用与无线客户端不同的 DHCP 选项。添加一个 iptables 规则来阻止 2 个子网之间的流量,但允许/伪装到互联网,您将被设置。但是,任何知道它只是辅助 IP 的无线网络上的人都可以手动配置 LAN 范围 IP 并绕过该块。

如果无线 AP 支持 VLAN 标记(真正的企业 AP 是这样做的,WRT54-likes with OpenWRT/ddwrt/etc 也可以),并且如果您的交换机通过标记帧,您可以在 linux 机器上创建一个 VLAN 子接口(再次使用另一个子网,如上所述)。LAN 上的主机偶尔会收到一个标记帧,然后将其丢弃(除非它们正在运行嗅探器),但是 AP 应该(取决于配置)忽略它从 LAN 中听到的未标记帧,因此您不应该泄漏LAN 流量返回无线。

当然,真正的分离是最好的方法——管理 VLAN 感知交换机,或者只是 Linux 主机上的第三个 NIC。