![简短回答](https://linux22.com/image/120120/%E7%AE%80%E7%9F%AD%E5%9B%9E%E7%AD%94.png)
这是我多次偶然发现的一个问题,但我仍然没有解决方案。
我有一个带有两个接口的 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 正确集成。