如何通过命令行切换NetworkManager的“仅用于本网络资源”的选项

在我的工作中,我们有一些测试机器,我们通过ssh运行脚本。在测试期间,我们希望这些机器只能通过以太网连接访问本地网络,但是在清理和数据传输之后,我们希望它们能够通过同一接口访问互联网。
我们可以通过进入每台机器并在网络管理器>IPv4选项>路由菜单中切换“仅用于其网络上的资源”选项来实现此目的,但是将此功能添加到我们的测试脚本中会更加方便。
我可以找到一些与VPN连接相关的类似问题,但是我想确保我正确处理常规以太网接口的路由。感谢任何帮助。
3个回答

你可以使用nmcli来做,关键是ipv4.never-default
nmcli connection modify enp3s0 ipv4.never-default true
  • 用你自己的连接名称替换enp3s0
  • 使用falsetrue来切换此配置。

1enp3s0是设备名称,而不是连接名称。请使用nmcli device命令查找连接名称。 - Marduk
@Marduk 我喜欢用设备名称作为我的连接名称。这是我偏好的方式。描述中提到你需要将它更改为你的连接名称 :) - Ravexina
谢谢你的解释。我有点困惑。 - Marduk

如果您更喜欢直接编辑文件,也可以这样做。
导航到/etc/NetworkManager/system-connections/目录,并找到您想要的连接。使用sudo nano MyNetwork打开网络。
一旦您打开了文件,请查找[ipv4]部分,并添加never-default=true,如下所示:
[ipv4]
dns-search=
method=auto
never-default=true

如果您希望以相同方式处理IPv6路由,请在[ipv6]部分中添加相同的行。
[ipv6]
addr-gen-mode=stable-privacy
dns-search=
ip6-privacy=0
method=auto
never-default=true

使用Ctrl+X保存并退出编辑器,然后使用以下命令重新启动NetworkManager,以确保更改生效:
sudo systemctl restart NetworkManager.service

重新连接到网络,它应该可以正常工作。

你可以删除默认路由,这样它们只能从你的局域网子网访问。
ip route delete default

并且将其重新添加进去:
ip route add default via <you_gateway_ip_address>