我尝试切换到静态 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
.