3

我正在使用嵌入式 linux 设备,我们通常在开发过程中通过静态 IP 地址连接到该设备。但是,在现场我们需要使用 DHCP 进行连接,因此,我想设置一个主 DHCP 连接,并在不同的网络上使用备用静态 IP 地址。这可能吗?

我可以使用 nmcli 配置 DHCP 连接(IPV4.method=manual),并且可以成功添加额外的静态 IP 地址。当 DHCP 服务器存在时,两者都会同时存在,但是当没有 DHCP 服务器时,连接将被禁用,包括静态 IP 地址。

我还尝试设置多个连接,分配给 eth0,即一个静态和一个 DHCP,并且可以使用手动启用它们

nmcli con up ConnectionName

但这不符合要求,因为在另一个失败的情况下需要手动启用它们。我当然可以运行一个脚本来检查连接状态并在需要时启用另一个,但我认为这将是网络管理员的现实期望。

有没有办法告诉网络管理员尝试一个连接,如果失败再尝试另一个?

我正在使用 Ubuntu 18.04。

4

2 回答 2

2

我设法使用的解决方案引用自静态 IP nmcli

基本上,您所要做的就是为接口分配一个静态 IP 地址,并将 ipv4.method 保持为 DHCP 的“自动”。对于像我这样的人,是的,很可能有一个物理接口(以太网端口)同时具有多个 IP 地址。要查看通过 NM 设置的当前静态 IPv4 地址和模式,请使用:

nmcli con show <ConnectionName> | grep "ipv4.addresses"
nmcli con show <ConnectionName> | grep "ipv4.method"

现在设置 1 个或多个静态 IP 地址:

sudo nmcli con modify <ConnectionName> ipv4.addresses "10.10.10.10/24,192.168.88.88/24"

为了完整地删除通过 NM 设置的静态地址,请使用:

sudo nmcli con modify <ConnectionName> ipv4.addresses ""

现在稍微令人困惑的是,它ifconfig不会显示多个 IP 地址。但是,检查普通nmcli命令的输出,您会看到您的连接有多个 inet4 地址。

还要确认您可以检查路由表的输出,您route -n会看到只有您的静态 IP 只会在本地网络上路由。DHCP IP 将在外部路由数据包。

希望这可以帮助!

于 2020-03-02T12:00:52.527 回答
2

您需要设置两个不同的连接,将它们设置为connection.autoconnect yesconnection.autoconnect-priority根据所需的优先级进行设置。

于 2019-11-17T16:26:37.430 回答