我有一个 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
)。
(如果规则仍然有效,请确保在执行上述操作之前先删除所有规则)。