这是我多次偶然发现的一个问题,但我仍然没有解决方案。
我有一个带有两个接口的 NetworkManager 托管盒。我们将它们称为eth0和eth1。
两者都需要通过 dhcp 获取 ip,并且都添加了默认网关。我想要的是让其中之一不应用默认的 gw。
在这种情况的最后一次迭代中,我了解到 NetworkManager 从/etc/dhcp/dhclient.conf创建/var/lib/NetworkManager/dhclient-eth0.conf。
这是 NetworkManager 缺少的功能吗?还是我应该尝试创建一个新的dhclient.conf,其中包含具有不同请求部分的每个 iface 的 dhcp 请求信息?
nmcli connection modify id 'My eth1 connection' ipv4.never-default yes
Run Code Online (Sandbox Code Playgroud)
继续阅读更长的答案和一些替代方案。在所有情况下,您都必须重新启动连接才能获得更改。
ipv4.never-defaultNetworkManager中有这样一个功能。如果您想限制 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
Run Code Online (Sandbox Code Playgroud)
“仅将此连接用于其网络上的资源”。它的 nmcli 等效项是:
nmcli connection modify id 'My eth1 connection' ipv4.never-default yes
Run Code Online (Sandbox Code Playgroud)
第一个选项禁用不常用的无类静态路由,而第二个选项则禁用默认路由器。
对于大多数人来说,第二种选择就足够了。考虑设置第一个:它可能有用并且不应该冲突。
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;
}
Run Code Online (Sandbox Code Playgroud)
请注意,这是通过省略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
Run Code Online (Sandbox Code Playgroud)
让两个 DHCP 连接同时完全工作的另一种方法是为多个上行链路/提供商设置路由。通过这个和一些多路径路由或与路由相关的防火墙规则,您可以负载平衡访问,并可以组合两个带宽,前提是有足够的连接到多个目的地。但这会更难与 NetworkManager + dhclient 正确集成。
| 归档时间: |
|
| 查看次数: |
8777 次 |
| 最近记录: |