NetworkManager 更改默认路由策略

NetworkManager 更改默认路由策略

我有一台带有内置 NIC (eth0) 的机器,它用作 Raspberry Pi 的 DHCP 服务器。我还有一个 USB 3G 调制解调器,它显示为以太网设备 eth1。 eth0 的静态 IP 为 192.168.100.1 /etc/network/interfaces。当我将 Pi 连接到服务器时,/var/log/syslog显示

NetworkManager[2366]: <info> Policy set 'Ifupdown (eth0)' (eth0) as default for IPv4 routing and DNS.

之后,ip route show给出

default via 192.168.1.100 dev eth0  proto static

然后我需要手动

ip route delete default
ip route add default via 192.168.1.1

让它再次通过 3G 调制解调器连接到互联网。我在服务器上使用基于 Debian 7 wheezy 的 CrunchBang Linux,在 Pi 上使用最新的 Raspbian。

如何选择 NetworkManager 首选的默认路径?

编辑:这是我的/etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

allow-hotplug eth0
auto eth0
iface eth0 inet static
    address 192.168.100.1
    netmask 255.255.255.0

allow-hotplug eth1
auto eth1
iface eth1 inet dhcp

请注意,我已更改/etc/NetworkManager/NetworkManager.conf

[ifupdown]
managed=true

因为我希望能够使用 nm-applet 断开 eth1(3G 调制解调器)的连接。这是/etc/NetworkManager/NetworkManager.conf

[main]
plugins=ifupdown,keyfile

[ifupdown]
managed=true

答案1

  • 如果使用 GUI,请尝试选中“仅用于此连接上的资源”复选框。
  • 如果使用配置文件(就像您一样:)),请在[ipv4]部分添加never-default=true.
  • 如果使用命令行工具,请运行sudo nmcli con mod "connection name" ipv4.never-default yes

这样您就可以删除隧道中的默认路由并添加您自己的路由。

答案2

我迟到了 4 年,但我刚刚花了 12 个小时发现并解决了这个问题。这里的情况类似:基于 ARM 的 Jetson Nano,运行 Linux 4 Tegra 内核和 Ubuntu 18.04 操作系统,以太网端口 (eth0) 用于本地网络,USB 蜂窝适配器 (eth1) 用于互联网。

症状相似 - 一旦插入以太网电缆,接口就会启动,然后 3 分钟后我得到:

NetworkManager[3773]:[1562908622.2587]策略:将“有线连接1”(eth0)设置为IPv4路由和DNS的默认值

在系统日志中,并且互联网连接已断开。

NetworkManager 以神秘的方式工作,很难进行编程 - 更适合让用户坐在前面,在必要时可以重置事物。我没有那么奢侈,所以必须让它发挥作用。

ipv4.route-metric最终有效的方法是在 eth1 上设置较低(较高优先级)。检查 的输出route -n以了解当前指标是什么。忽略某些路由上额外的 20000 - 这是 NetworkManager 试图取消没有 Internet 连接的路由的优先级,但它很奇怪。

假设 eth0 的指标为 100。请优先考虑 eth1 接口:

sudo nmcli con mod "Wired connection 2" ipv4.route-metric 99

并重新启动。

现在,为您节省 10 个小时的故障排除时间 - 请注意,路由度量与 DNS 优先级无关!因此,如果您仍然遇到连接问题,请确保这不是 DNS 解析问题(例如,您的 DHCP 服务器正在提供虚拟解析服务)。如果是,则增加ipv4.dns-priorityeth0 连接的 使其优先级降低,和/或确保ipv4.dns-searcheth1 连接的 被设置为“~”以使其成为首选选项。

答案3

如果有人无法使用其他答案解决问题,您可能还需要检查是否安装了其他干扰的网络管理器。我安装了 ConnMan 和 NetworkManager,卸载 ConnMan 并重新启动后问题得到解决。

这是我之前详细讨论过的问题:

在 Debian 12 上,即使在 NetworkManager 中选中“仅用于此连接上的资源”,通过 USB 连接手机进行 SSH / SFTP 连接后,由于路由更改,互联网连接停止工作,因此我必须重新连接到网络,然后才能使用同时使用USB和以太网。拔掉手机的 USB 线后,我还必须重新连接网络。

答案4

网络管理器将始终覆盖您的设置,您必须编辑:

vi /etc/网络/接口

找到eth0并设置:

gateway 192.168.1.1

重新启动网络服务:

/etc/init.d/networking restart

相关内容