两个接口之间的 iptables 转发

两个接口之间的 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

我将非常感激您的帮助。

答案1

首先,为了使连接到您的私有接口的主机能够访问互联网,您不需要桥接接口,而是需要将从一个接口进入的数据包路由到另一个接口,然后将它们传输到外面。

为此,您只需:

  1. 在你的 Linux 机器上启用转发:
  2. 允许特定(或所有)数据包穿越路由器
  3. 正如有人所说,由于 netfilter 是无状态防火墙,因此允许已建立连接的流量
  4. 更改发往互联网的数据包的源地址

    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
    

那就可以了。

相关内容