我有两个 WAN 连接接入我的自制 Linux 路由器。两者都显示为以太网连接。一个使用 dhcp,另一个使用 PPPoE。我使用 nmcli 进行了配置。
下一步是针对选定的系统使用策略路由。作为测试,我为每个 WAN 连接添加了一个路由表,在路由器 LAN 端创建了两个新 IP,并为每个 IP 添加了一个 IP 规则以使用其中一个路由表。使用 iproute2 命令手动配置时,这一切也都运行正常。
当我尝试使用 nmcli 配置此场景时,问题出现了。我接近这样做:
nmcli con mod pppoe ipv4.routes "0.0.0.0/0 onlink=1 table=200"
nmcli con mod pppoe ipv4.routing-rules "priority 999 from 10.87.3.204 lookup 200"
nmcli con up pppoe
nmcli con mod eth2 ipv4.routes "0.0.0.0/0 onlink=1 table=201"
nmcli con mod eth2 ipv4.routing-rules "priority 999 from 10.87.3.59 lookup 201"
nmcli con up eth2
我很高兴地发现 PPPoE 连接确实有效,因为将 nexthop 选项排除在规则之外默认为使用该设备进行路由,这正是我手动完成的。
但是对 dhcp 连接执行相同操作不起作用,因为使用“dev eth2”进行路由是错误的...它需要下一跳/网关地址,这是动态的,我已经手动完成了。
显然,编写脚本来更新路由表很简单,但最好让网络管理员在建立连接时执行此操作。它显然会有此信息,例如 ppp 接口是用于 PPPoE 连接的。
是否有某种机制可以将 ip4.gateway 嵌入到路由字符串中?或者是否有其他方法可以实现相同目标?
我不是 nmcli 方面的专家,因为过去几年我一直回避它。现在我很享受掌握它的挑战,所以希望我错过了一些非常基本的东西,而这些是我在迄今为止的旅程中没有学到的。
任何帮助都将不胜感激