使用 nmcli 从静态 IP 切换到 DHCP

问题描述 投票:0回答:4

我需要使用 nmcli(从 Python 脚本调用)更改我的连接,从静态分配到 DHCP。 我试过这样:

nmcli con mod "CONNECTION NAME" ipv4.method auto
nmcli con down "CONNECTION NAME"
nmcli con up "CONNECTION NAME"

但是在连接再次建立后,我的旧 IP 地址仍然存在,如果我显示连接信息,我会看到类似的内容

....
ipv4.addresses:                         192.168.1.10/24  <-THIS IS THE BAD ONE 
....
IP4.ADDRESS[1]:                         192.168.1.10/24  <-THIS IS THE BAD ONE
IP4.ADDRESS[2]:                         10.0.2.15/24
....

我该如何解决这个问题?

Ubuntu 版本 16.04

Python 版本 3.5.2

ubuntu networking configuration dhcp nmcli
4个回答
4
投票

我面前没有linux系统,但如果我没记错的话,你可以尝试在down/up之前重置IP地址:

nmcli con mod "CONNECTION NAME" ipv4.address ""
nmcli con mod "CONNECTION NAME" ipv4.method auto
nmcli con down "CONNECTION NAME"
nmcli con up "CONNECTION NAME"

3
投票

更新方法(从手动到自动)后,我需要将网关和 ipaddrerr 设置为“”,就像这样

nmcli con mod "CONNECTION NAME" ipv4.method auto
nmcli con mod "CONNECTION NAME" ipv4.gateway ""
nmcli con mod "CONNECTION NAME" ipv4.address ""
nmcli con down "CONNECTION NAME"
nmcli con up "CONNECTION NAME"

感谢 Nicolò Rebughini 提供解决方案


0
投票

抱歉,我这里没有 Linux 机器,但如果我没记错的话,你必须在编辑连接之前创建一个配置文件

nmcli 连接添加类型 ethernet con-name "connection-name" ifname 接口名称 <-- this Is the interface name

之后,您可以编辑配置文件配置,因此添加具有绑定到接口名称的任何名称的配置文件。


0
投票

我的帖子尝试解释如何通过在 Ubuntu 发行版中配置和使用两个 NetworkManager 连接配置文件来回答 OP 的问题。 两个连接配置文件都引用相同的以太网接口
当您想要设置 DHCP 时,请禁用 IP 静态连接配置文件并启用 DHCP 连接配置文件。
此切换是通过使用 nmcli 命令执行的。

连接配置文件保存在 Ubuntu 发行版的

<connection-name>.nmconnection
文件夹中名为
/etc/NetworkManager/system-connections
的文件中。

创建 2 个 NetworkManager 连接配置文件

在答案的其余部分中,我将使用术语 connection 来表示术语 connection profile

通过 nmcli 命令从静态 Ip 传递到 DHCP(反之亦然)的一种方法是创建 2 个 NetworkManager 连接,一个用于静态 Ip,一个用于 DHCP。第一个连接和第二个连接管理相同的以太网接口。
例如我假设 2 个连接的名称是:

  • ethernet_ipstatic
  • ethernet_dhcp

这意味着,在系统中的路径

/etc/NetworkManager/system-connections
中,将存在2个文件,名为:

  • ethernet_ipstatic.nmconnection
  • ethernet_dhcp.nmconnection

用于创建 2 个连接的 nmcli 命令是:

# for ethernet_ipstatic
nmcli c add ifname enp2s0 type ethernet con-name ethernet_ipstatic

# for ethernet_dhcp
nmcli c add ifname enp2s0 type ethernet con-name ethernet_dhcp

在 nmcli 示例命令中,以太网接口名称为

enp2s0

设置 2 个连接的属性

现在需要设置 2 个连接的属性。
对于

ethernet_ipstatic
,属性是:

nmcli con mod ethernet_ipstatic ipv4.method manual ipv4.addresses 192.168.1.1/24 ipv4.gateway 192.168.1.100 ipv4.may-fail no ipv6.method disabled connection.autoconnect no connection.autoconnect-priority -1

上一个命令为连接设置以下属性:

  • ipv4.method = 手动(此设置 IP 静态而不是 DHCP)
  • IP地址192.168.1.1,网络掩码255.255.255.0,网关192.168.1.100
  • IPV6 已禁用,自动连接否,优先级 -1

对于

ethernet_dhcp
,属性是:

nmcli con mod ethernet_dhcp ipv4.method auto ipv4.addresses '' ipv4.gateway '' ipv4.may-fail no ipv4.dhcp-timeout 20 ipv6.method disabled connection.autoconnect no connection.autoconnect-priority -1 connection.autoconnect-retries 3

上一个命令为连接设置以下属性:

  • ipv4.method = auto(此设置 DHCP 而不是静态 IP 地址)
  • ip地址'',网关''
  • IPV6 已禁用,自动连接否,优先级 -1

设置 DHCP

要设置 DHCP,我们可以使用以下 nmcli 命令序列:

# disable IP STATIC connection
nmcli con mod ethernet_ipstatic connection.autoconnect no connection.autoconnect-priority -1

# enable DHCP connection
nmcli con mod ethernet_dhcp connection.autoconnect yes connection.autoconnect-priority 10

# down IP STATIC connection
nmcli con down ethernet_ipstatic

# up DHCP connection
nmcli con up ethernet_dhcp

设置IP静态

要设置 Ip Static,我们可以使用以下 nmcli 命令序列:

# disable DHCP connection
nmcli con mod ethernet_dhcp connection.autoconnect no connection.autoconnect-priority -1

# enable IP STATIC connection
nmcli con mod ethernet_ipstatic connection.autoconnect yes connection.autoconnect-priority 10

# down DHCP connection
nmcli con down ethernet_dhcp

# up IP STATIC connection
nmcli con up ethernet_ipstatic

诀窍是优先级属性

此方法正确操作的关键是在需要从 IP 静态传递到 DHCP 时更改连接配置文件的优先级属性,反之亦然。

© www.soinside.com 2019 - 2024. All rights reserved.