我有一个关于 RedHat 6 企业网络管理器 (NM) 的问题:
我的Linux连接到两个网络接口。
1 – eth0:连接到公司 LAN 的普通以太网
2 – eth1:连接到蜂窝网络 (CDC-ECM) 的 USB 加密狗
eth0 接口始终处于连接状态,而 eth1 接口是非永久连接的(连接可以随时断开)
当两者都连接时,NM 优先考虑 eth0。这意味着默认路由 (0.0.0.0) 始终通过它定义。
我想更改 NM 策略,使其优先考虑 eth1。当 eth1 接口未连接时,应通过 eth0 接口定义默认路由,当 eth1 已连接时,应通过 eth1 定义默认路由。
我在网上搜索了如何做到这一点,并使用了 NM 脚本和 ifcfg-eth0 / ifcfg-eth1 文件(尝试了 DEFROUTE 和其他选项)但无法使其工作。
有人能建议使用 NM 执行此操作的正确方法是什么吗?
谢谢 !
答案1
编辑:从评论中添加 OP 的解决方案:
- 从 NM 中删除 eth0(有线)
- NM_CONTROLLED=否
- 左侧 eth1(无线)受控制。
- 省略 NM_CONTROLLED 时的默认值
- 设置 eth1 METRIC=20
- 生成 2 个默认路由,其中 eth1 优先
回答:
网络管理员可能总是选择无线或有线作为主要网络(基于此处的其他问题),这似乎包括与路由的交互度量和 dhcp,路由器广告(其中 NM 遵循 1 指标)、接口启动/关闭和 RedHat 特定。
假设您正在使用它:DHCP 可能会根据其路由度量¹将您的路由重置为“更好”的路由。度量值越高,成本就越高,因此成本较低的指标是首选。在网络管理器列表中这里,值得注意的是,dhcp 无线指标被惩罚了 +100,而 NM 开发人员表示 NM 应该选择正确的路由,但指标可能是最佳的设备方法。我不确定这是否适用于您的 eth1,但您可以控制它:
交换数字(10 和 20)这个答案对于您的界面,我得到:
$ sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
METRIC=20
$ sudo vi /etc/sysconfig/network-scripts/ifcfg-eth1
METRIC=10
答案是,这应该优先考虑无线并在接口之间执行平滑的故障转移。
如果你希望 NM 按照开发者的意图进行选择,GMambaG 的界面关键字也会被考虑在内RedHat 文档为了静止的路由,其中记录了使用多个网关 + GATEWAYDEV 的意外问题。要测试这一点,请启动两个接口,并在删除 eth1 后尝试恢复操作。如果您遇到问题(如间歇性超时),您应该能够通过删除更改并重新启动网络来恢复:
$ sudo service network restart
如果所有其他方法都失败了,路由器通告(我认为是 ICMP 类型 9 和 10)可能会影响您的路由表;在尝试阻止它们之前,请与网络管理员协调。
编辑:减少了这个答案的文本,将 OP 的解决方案放在顶部。
¹ 如果您不使用 DHCP,您将有一个手动网关。本文建议使用 NM_CONTROLLED="no" 来阻止 NM 自动切换到该接口的网关。
答案2
Red Hat 使用最后一个启动的接口作为默认网关设备。
要设置eth1
为默认值,请将其添加到/etc/sysconfig/network
:
GATEWAYDEV=eth1
看:https://access.redhat.com/solutions/41459
每次呼叫时都应该处理它ifup
。您可以使用以下方式检查路线ip route show