简短回答

简短回答

这是我多次偶然发现的一个问题,但我仍然没有解决方案。
我有一个带有两个接口的 NetworkManager 托管盒。让我们称呼他们为以太网0以太网1
两者都需要通过 dhcp 获取 ip,并且都添加了默认网关。我想要的是让其中之一不应用默认的 gw。

在这种情况的最后一次迭代中,我了解到 NetworkManager 创建了一个 /var/lib/NetworkManager/dhclient-eth0.conf/etc/dhcp/dhclient.conf

这是 NetworkManager 缺少的功能还是我应该尝试创建一个新的dhclient.conf包含具有不同请求部分的每个 iface 的 dhcp 请求信息?

答案1

简短回答

nmcli connection modify id 'My eth1 connection' ipv4.never-default yes

继续阅读更长的答案和一些替代方案。在所有情况下,您都必须重新启动连接才能获得更改。

网络管理员:ipv4.never-default

NetworkManager中有这样一个功能。如果您想限制 eth1(例如称为 )My eth1 connection,则可以通过图形方式访问它Edit Connections > My eth1 connection > IPV4 Settings > Routes

有两个切换:

  • “忽略自动获取的路线”。其 nmcli 等效项:

     nmcli connection modify id 'My eth1 connection' ipv4.ignore-auto-routes yes
    
  • “仅将此连接用于其网络上的资源”。它的 nmcli 等效项是:

     nmcli connection modify id 'My eth1 connection' ipv4.never-default yes
    

第一个选项禁用无类别静态路由,这不常用,而第二个则禁用默认值路由器

对于大多数人来说,第二种选择就足够了。考虑设置第一个:它可能有用并且不应该冲突。

其他方式:dhclient.conf

/etc/dhcp/dhclient.conf(但在 NetworkManager 环境之外)您可以为此 DHCP 设置的接口添加一个节:

# Assign this interface an IP address only.
# (This disables setting the gateway router, DNS, domain, etc.)
interface "eth1" {
  request subnet-mask, broadcast-address, interface-mtu;
}

rfc3442-classless-static-routes请注意,这是通过省略、routers和其他一些参数来实现的。

还有一个答案:ipv4.route-metric

另一种方法(我在图形设置中没有看到)是增加连接的指标(从而降低“优先级”)。默认情况下,它是自动的,并且 Wifi 似乎比以太网具有更高的指标。这样,您就可以拥有两条默认路由,但在第一个路由消失之前不会使用第二个路由。从这个描述,要使“我的 eth0 连接”优先于“我的 eth1 连接”,则为:

nmcli connection modify id 'My eth0 connection' ipv4.route-metric 100
nmcli connection modify id 'My eth1 connection' ipv4.route-metric 500

最后一种可能性:同时使用两者

让两个 DHCP 连接同时完全工作的另一种方法是设置多个上行链路/提供商的路由。通过这个和一些多路径路由或与路由相关的防火墙规则,您可以负载平衡访问,并可以组合两个带宽,前提是有足够的连接到多个目的地。但这会更难与 NetworkManager + dhclient 正确集成。

相关内容