使用 iptables 隔离 WLAN 的一般方法?

使用 iptables 隔离 WLAN 的一般方法?

我正在尝试使用 2 端口加 WiFi 适配器 NAS 作为家庭路由器,我想大致了解使用 iptables 进行以下工作需要多大规模:

  • 将伪装的客户端流量从 LAN 和 WLAN 子网转发到 WAN
  • 将 WLAN 与 LAN 完全隔离,但到 192.168.1.1:53 的 DNS 流量除外
  • 允许 OpenVPN 客户端查看 LAN 和 WAN/Internet

接口如下:

eth0: xx.xx.xx.xx/23 - WAN
eth1: 192.168.1.1/24 - LAN
lbr0: 192.168.2.1/24 - WLAN
tun0: 192.168.3.1/24 - OpenVPN clients

使用简单的转发,我至少可以让 LAN 和 WLAN 的 NAT 正常工作,但没有提供隔离:

# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
# iptables -A FORWARD -i eth0 -o lbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT
# iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
# iptables -A FORWARD -i lbr0 -o eth0 -j ACCEPT

我觉得这应该很简单,但我对 iptables 完全是新手。有没有好的教程,或者有人能给我一些关于这个问题的直接建议?我已经在eth0OpenVPN 服务器的全面拒绝过滤器中打了一个洞,除了 WLAN 和 OpenVPN 段上的 DNS 之外,我认为我没有任何端口转发问题。

这是否像为 DNS添加一些DROP规则和某种覆盖一样简单,还是我遗漏了一些实质性的内容?ACCEPT

答案1

你不是。但我认为将 FORWARD 策略更改为 DROP 会更简单、更符合意识形态,然后只添加所需的规则,以便仅在需要时转发数据包。这将排除任何可能的错误。

您也可以使用另一种方法,这种方法更复杂,但也更灵活。您可以为 LAN、WLAN 和 VPN 创建单独的路由表,仅包含所需的路由(不包括不需要的接口路由 - 例如,从 WAN FIB 中排除 LAN 接口路由)。

相关内容