在同一设备上的接口之间路由流量( wlan0 到 usb0 )

在同一设备上的接口之间路由流量( wlan0 到 usb0 )

我有一个 USB0 接口,IP 为 10.0.0.1,路由器位于 10.0.0.2,无法访问互联网。我在 wlan0 上还有一个 192.168.0.3 的 wifi 适配器,连接到我的路由器 192.168.0.1(已连接到互联网)。如何将流量从 wlan0 中继到 usb0 接口?这两个接口存在于同一设备上。

我尝试过使用 iptables 并启用 ip 转发:

echo 1 > /proc/sys/net/ipv4/ip_forward

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

iptables -A FORWARD -i usb0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -i wlan0 -o usb0 -j ACCEPT

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

iptables -A FORWARD -i wlan0 -o usb0 -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -i usb0 -o wlan0 -j ACCEPT

如果我尝试

ping -I wlan0 google.com

然后我得到回应但如果我尝试

ping google.com

然后我就没有得到任何回复。

最好我希望wlan0流量路由到usb0,但如果我可以以某种方式设置wlan0为我的主要接口(pacman -Syu例如并在其上使用),那也可以。

任何帮助,将不胜感激!

答案1

是的,我想将 wlan0 上的 WiFi 适配器的流量 NAT 到 USB0 上有另一个网络的机器。

您通常会反过来表述:usb0当流量离开(“内部接口”)前往wlan0世界其他地方时,您希望对其进行 NAT。

所以只能在外部接口上进行伪装wlan0

EXTIF=wlan0
INTIF=usb0
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
iptables -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE

最后一行很重要,它执行实际的 NAT。其余的只是过滤,并确保没有任何有趣的内容被转发到内部网络 ( usb0)。

(如果规则仍然有效,请确保在执行上述操作之前先删除所有规则)。

相关内容