两个无线接口之间的路由 - Linux

两个无线接口之间的路由 - Linux

基本上我的网络是这样的

                            +------+
  10.0.0.10 ------ 10.0.0.1=|Laptop|=11.0.0.11 ------ 11.0.0.1 
(wlan0,client)    (AP,wlan0)+------+(wlan1,client)        (AP)

wlan0 和 wlan1 是连接到笔记本电脑的 USB Wi-Fi 适配器

我想通过我的笔记本电脑连接这些网络,起初我尝试过桥接,但结果发现不支持桥接

我尝试过这个但是没有效果。

iptables -A FORWARD -i wlan0 -o wlan1 -j ACCEPT
iptables -A FORWARD -i wlan1 -o wlan0 -j ACCEPT
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o wlan1 -j MASQUERADE

我将非常感激您的帮助。

答案1

您不需要两个伪装规则。您只需要伪装一个将您的计算机作为默认路由的客户端;您将源 NAT 应用于离开“WAN”侧接口的数据包。

如果防火墙处于默认状态,则只需要此一条规则:

iptables -t nat -A POSTROUTING -o wlan1 -j MASQUERADE

如果不同网络上的 MTU 不同,则可能需要应用 MSS 修复:

iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu   

(这有助于解决“ping 可以通,但网站不通”或“有些网站可以通,有些不通”之类的问题)。

有一个非常常见的问题。我这样做了大约 20 年,但仍然经常忘记这一点,直到一切都应该正常工作,但有些却不起作用。您需要在内核中明确启用数据包转发:

sysctl net.ipv4.ip_forward=1

并将相同的变量设置/etc/sysctl.conf为在启动后启用它。

相关内容