Answers:
您可能可以使用以下方法进行操作ip route
:
ip route add 8.8.8.8 via 10.0.0.1 dev enp3s8
ip route add 10.0.0.0/24 dev eth0
第一个ip route add
显示单个IP地址,该地址从给定的以太网接口(ep3s8)发送到下一跳路由器10.0.0.1。
第二条路由是针对整个网络10.xyz的,它发出了给定的以太网卡eth0。那就是“本地网络”,它没有下一跳路由器,它们都在同一条逻辑线上。
不过,您想man ip-route
在做任何事情之前先阅读。另外,请准备好重新启动,并且不要远程执行此操作。您可以很容易地创建不正确的路由来终止您的远程访问。我是最后一项建议中的经验之声。
您要问的是policy-based routing
或source-based routing
。David Schwartz在同一站点上有出色的介绍。
我想指出的是,还有一个简洁的小程序,可以在这里找到它,它允许您将特定的应用程序绑定到给定的接口。对于像openssh这样的应用程序,这当然很容易,它具有可以绑定到所需监听地址的选项。但是,该库允许您甚至将没有此类选项的应用程序(例如Firefox)绑定到给定的IP地址。
这样,您可以选择是希望为所有应用程序提供单独的路由表,还是希望针对每个应用程序覆盖相同的规范。
了解源基本路由的好地方是Linux Advanced Routing&Traffic Control,
您也可以阅读手册
man ip rule
man ip route
通常,您应该添加规则(我仅出于演示目的添加了接口eth1,可以省略)
#ip rule add dev eth1 to 170.10.0.10 table 2 priority 20000
这里是:
dev eth1-用于将数据包发送
到170.10.0.10的设备 -目标
表2-您应该在其中配置路由的表
优先级20000-规则的优先级
你可以看到你的规则
#ip ru sh
0: from all lookup local
20000: from all to 170.10.0.10 iif eth1 lookup 2
32766: from all lookup main
32767: from all lookup default
接下来,您应该以通常的方式添加路由,但是应该指定表(表2),将路由放置在该表中
#ip route add table 2 via 170.10.0.1 default
要看你的路线,你应该跑
#ip route show ta 2