主机A
eth0:192.168.1.3
wlan0:192.168.43.84
两个接口都可以访问互联网。eth0 通过 DSL 路由器 192.168.1.1,wlan0 通过 android 接入点 192.168.43.1。默认网关是 192.168.1.1,但我可以以 root 身份使用以下命令轻松将其切换到另一个网关:
ip route delete default
ip route add default via 192.168.43.1
随后Host_A使用android接入点成功接入互联网。
主机_B
eth0:192.168.1.14
它通过 DSL 路由器 192.168.1.1 连接到互联网。我希望它通过无线接入点出去,这实际上意味着它应该通过 192.168.1.3。为此,我做了以下事情
ip route delete default
ip route add default via 192.168.1.3
此外,我还使用以下命令在 Host_A 中启用了数据包转发:
sysctl -w net.ipv4.ip_forward=1
之后,cat /proc/sys/net/ipv4/ip_forward 返回 1
问题是,Host_B 无法连接到互联网。我希望 Host_B 通过 Host_A wlan0 接口连接到互联网。两台主机上的防火墙都已禁用,我确信我不必费心使用 iptables 来实现这一点。两台主机都是 Debian。Host_A 和 Host_B 位于使用 DSL 路由器交换接口的同一物理网络上。
如果有人知道哪里出了问题,我将不胜感激。
答案1
您应该在 Host_A 中启用 NAT,告诉它通过 wlan0 路由数据包,这应该可以解决问题:
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE