在一个接口上将流量从一个地址路由到另一个地址,并通过另一个接口将流量路由到其他所有地址

在一个接口上将流量从一个地址路由到另一个地址,并通过另一个接口将流量路由到其他所有地址

我有一台运行 busybox 的小型嵌入式计算机。它有一个有线 eth0 接口,通过电缆连接到板载 wlan 模块的有线接口。此外,ppp0 上还有一个 3G 模块。

我需要通过 eth0 将流量从 192.168.2.1(localhost)路由到 192.168.2.10(wlan-module),其他一切都应该通过 ppp0。

当前的设置:

# ip rule
0:      from all lookup local
1000:   from 84.231.196.14 lookup mobile
32766:  from all lookup main
32767:  from all lookup default

# ip route show table mobile
default via 192.168.254.254 dev ppp0

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.2.10    0.0.0.0         UG    0      0        0 eth0
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.254.254 0.0.0.0         255.255.255.255 UH    0      0        0 ppp0

这部分可行。我可以从 192.168.2.1 连接到 192.168.2.10,并且可以通过 ppp0 从外部连接到这台计算机,但我无法使用 ppp0 从这台计算机与外部建立任何连接。

我尝试添加

# ip rule add from all lookup mobile
# ip route flush table cache
# ip rule
0:      from all lookup local
999:    from all lookup mobile
1000:   from 84.231.196.16 lookup mobile
32766:  from all lookup main
32767:  from all lookup default

这当然会将所有流量通过 ppp0 路由,但我失去了与 192.168.2.10 的连接

我尝试了几种不同的规则和路线来实现这一点,但都失败了。我应该制定什么样的规则/路线?

  • ip rule、ip route 和 route 可用

答案1

我看到您的默认路由指向 eth0,您需要将默认路由指向 ppp0。删除默认路由并尝试“ip route add default dev ppp0”。

相关内容