systemd.networkd:DHCP 和链路本地地址

systemd.networkd:DHCP 和链路本地地址

是否可以像在 Windows 上那样配置 systemd-networkd 的 DHCP 和链接本地地址?

我是说:

  • 如果可以从 DHCP 获取地址,那么很好 - 我们就完成了。
  • 如果从 DHCP 获取地址失败,则回退到 169.254.xx

也类似于 RFC3927。

我有点惊讶 LinkLocalAddressing= 选项的工作原理。它只是覆盖 DHCP。设置如下:

[Match]
Name=eth0
KernelCommandLine=!nfsroot

[Network]
DHCP=ipv4
LinkLocalAddressing=yes

我得到:

Dec 17 15:10:43 my-system systemd-networkd[1276]: eth0: IPv6 successfully enabled
Dec 17 15:10:44 my-system systemd-networkd[1276]: eth0: Gained carrier
Dec 17 15:10:44 my-system systemd-networkd[1276]: eth0: DHCPv4 address 10.114.138.133/24 via 10.114.138.1
Dec 17 15:10:45 my-system systemd-networkd[1276]: eth0: Gained IPv6LL
Dec 17 15:10:57 my-system systemd-networkd[1276]: eth0: Configured
root@my-system:~#
root@my-system:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:44:44:00:04:17
          inet addr:169.254.184.36  Bcast:169.254.255.255
          Mask:255.255.0.0

答案1

尝试使用“ip addr show”而不是 ifconfig。我怀疑这会显示两个 IP 地址:

  1. 链接本地地址;和
  2. DHCP 分配的 IP 地址。

systemd-networkd 不会使用链接本地地址“覆盖”DHCP 分配的地址。两个地址均处于活动状态并且正在工作。只是 ifconfig 只能显示接口上的单个 IP 地址,并且它会显示它看到的第一个地址,而忽略任何其他地址。

ifconfig 已被弃用。是时候改用 ip 实用程序了...这是一个可能有帮助的备忘单: https://access.redhat.com/sites/default/files/attachments/rh_ip_command_cheatsheet_1214_jcs_print.pdf

答案2

尝试将以下内容添加到您的配置文件中:

[Network]
DHCP=ipv4
LinkLocalAddressing=ipv4-fallback

[DHCPv4]
MaxAttempts=3

这将尝试获取 DHCP 租约 3 次。如果失败,它将回退到协商链路本地 ipv4 地址。

相关内容