systemd-networkd 不会配置静态 IP

systemd-networkd 不会配置静态 IP

我尝试切换到静态 IP 地址,但 systemd 继续使用 DHCP。这是我的/etc/systemd/network/eth0.network文件:

[Match]
Name=eth0

[Network]
Address=192.168.5.100/24
DHCP=no

我知道该文件正在被读取,因为如果我在该文件中放置了错误的设置,我会在 systemctl 状态中看到一条警告消息。

结果如下systemctl status systemd-networkd

[[0;1;32m●[[0m systemd-networkd.service - Network Service
     Loaded: loaded (/lib/systemd/system/systemd-networkd.service; enabled; vendor preset: enabled)
     Active: [[0;1;32mactive (running)[[0m since Wed 2020-12-16 17:25:20 UTC; 32s ago
TriggeredBy: [[0;1;32m●[[0m systemd-networkd.socket
       Docs: man:systemd-networkd.service(8)
   Main PID: 137 (systemd-network)
     Status: "Processing requests..."
      Tasks: 1 (limit: 1141)
     Memory: 1.5M
     CGroup: /system.slice/systemd-networkd.service
             └─137 /lib/systemd/systemd-networkd

Dec 16 17:25:19 beaglebone-yocto systemd[1]: Starting Network Service...
Dec 16 17:25:20 beaglebone-yocto systemd-networkd[137]: Enumeration completed
Dec 16 17:25:20 beaglebone-yocto systemd[1]: Started Network Service.
Dec 16 17:25:21 beaglebone-yocto systemd-networkd[137]: eth0: IPv6 successfully enabled
Dec 16 17:25:21 beaglebone-yocto systemd-networkd[137]: eth0: Link UP
Dec 16 17:25:24 beaglebone-yocto systemd-networkd[137]: eth0: Gained carrier
Dec 16 17:25:25 beaglebone-yocto systemd-networkd[137]: eth0: Gained IPv6LL
Dec 16 17:25:28 beaglebone-yocto systemd-networkd[137]: eth0: DHCPv4 address 10.1.1.61/16 via 10.1.0.1

最后,以下是 的结果ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq qlen 1000
    link/ether 04:a3:16:bb:c6:0a brd ff:ff:ff:ff:ff:ff
    inet 10.1.1.61/16 brd 10.1.255.255 scope global dynamic eth0
       valid_lft 86322sec preferred_lft 86322sec
    inet6 fe80::6a3:16ff:febb:c60a/64 scope link
       valid_lft forever preferred_lft forever
3: sit0@NONE: <NOARP> mtu 1480 qdisc noop qlen 1000
    link/sit 0.0.0.0 brd 0.0.0.0

我不知道出了什么问题。它正在读取文件,并且没有给出错误,但它仍在使用 DHCP。

答案1

我尝试切换到静态 IP 地址,但 systemd 继续使用 DHCP

是的!正是如此。 /lib/systemd/network 中有一个文件正在为所有有线网络设置 DHCP。好想法。谢谢!

这是因为您没有在文件前添加数字前缀。引用man systemd.network

建议每个文件名都带有数字前缀(例如10-eth0.network)。否则,默认.network文件或由 systemd-network-generator.service(8) 生成的文件可能优先于用户配置的文件。

因此,系统默认值会覆盖您的用户定义的配置。为了避免这种情况,请将文件从重命名为eth0.network例如10-eth0.network.

相关内容