![在一个接口上将流量从一个地址路由到另一个地址,并通过另一个接口将流量路由到其他所有地址](https://linux22.com/image/1392925/%E5%9C%A8%E4%B8%80%E4%B8%AA%E6%8E%A5%E5%8F%A3%E4%B8%8A%E5%B0%86%E6%B5%81%E9%87%8F%E4%BB%8E%E4%B8%80%E4%B8%AA%E5%9C%B0%E5%9D%80%E8%B7%AF%E7%94%B1%E5%88%B0%E5%8F%A6%E4%B8%80%E4%B8%AA%E5%9C%B0%E5%9D%80%EF%BC%8C%E5%B9%B6%E9%80%9A%E8%BF%87%E5%8F%A6%E4%B8%80%E4%B8%AA%E6%8E%A5%E5%8F%A3%E5%B0%86%E6%B5%81%E9%87%8F%E8%B7%AF%E7%94%B1%E5%88%B0%E5%85%B6%E4%BB%96%E6%89%80%E6%9C%89%E5%9C%B0%E5%9D%80.png)
我有一台运行 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”。