是否可以像在 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 地址:
- 链接本地地址;和
- 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 地址。