基本上我的网络是这样的
+------+
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
为在启动后启用它。