两个接口之间的iptables转发

bro*_*ody 42 networking linux iptables

所以我有一个带有两个无线接口的linux盒子,一个是站,另一个是AP。

wlan0(站) - 连接到互联网连接

wlan1 (AP) - 其他客户端连接到它。

我希望连接到 wlan1 的客户端能够在 wlan0 上访问互联网。我想用 iptables 来做这件事,因为我的内核没有桥接支持......

到目前为止,这是我使用 iptables 尝试过的,但它不起作用:

iptables -A FORWARD -i wlan0 -o wlan1 -j ACCEPT
iptables -A FORWARD -i wlan1 -o wlan0 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

我很感激任何帮助。

Tor*_*ian 59

首先,要使连接到您的专用接口上的主机连接到 Internet,您不需要桥接接口,您需要将进入一个接口的数据包路由到另一个接口,然后再将它们发送出去。

为此,您只需要:

  1. 在您的 linux 机器上启用转发:
  2. 允许特定(或全部)数据包通过您的路由器
  3. 正如有人所说,由于 netfilter 是无状态防火墙,因此允许已建立连接的流量
  4. 更改出入 Internet 的数据包的源地址

    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -A FORWARD -i wlan1 -o wlan0 -j ACCEPT
    iptables -A FORWARD -i wlan0 -o wlan1 -m state --state ESTABLISHED,RELATED \
             -j ACCEPT
    iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
    
    Run Code Online (Sandbox Code Playgroud)

那应该这样做。

  • 为了使转发在重新启动后持续存在,您需要执行以下操作:'echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf' (4认同)