openSUSE MicroOS: 更换网络管理器至systemd-networkd
First | 序
openSUSE MicroOS 默认的网络管理器是 NetworkManager (在安装时有 Wicked 可选)
本文将记录更换 openSUSE MicroOS 网络管理器从 NetworkManager 至 systemd-networkd
1. Procedure | 步骤
1.1. 安装所需软件包
首先安装 systemd-networkd & systemd-resolved 这两个软件包
transactional-update pkg install systemd-networkd systemd-resolved
1.2. 执行软重启
接着我们执行软重启以识别 systemd-networkd systemd-resolved 这两个软件包
transactional-update reboot
- openSUSE MicroOS 需要开启软重启
- 且 Reboot strategy = instantly 以保证立刻执行软重启

点击此链接了解soft-boot&rebootmgrctl相关设置
1.3. 识别网络接口名称
首先,需要知道你的有线或无线网络接口的名称
nmcli connection show
找到类型为 ethernet 的 DEVICE NAME (本示例为 enp1s0 )
1.4. 创建 systemd-networkd 配置文件
根据自身网络需求(DHCP 或静态 IP)
在 /etc/systemd/network/ 目录下创建一个 .network 文件
例如 5-wired.network
sudo nano /etc/systemd/network/5-wired.network
DHCP EXAMPLE
[Match]
Name=enp1s0
[Network]
DHCP=yes
STATIC EXAMPLE
[Match]
Name=enp1s0
[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8
DNS=1.1.1.1
-
Address: 你的静态 IP 地址和子网掩码(/24 表示 255.255.255.0)
-
Gateway: 你的网关地址(通常是路由器的 IP)
-
DNS: 你想使用的 DNS 服务器
为了安全,可以设置一个合理的文件权限:
sudo chmod 644 /etc/systemd/network/5-wired.network
1.5. 配置并启用 systemd-resolved
systemd-resolved 是 systemd 生态中专门用于处理 DNS 解析的服务
NetworkManager 停用后,系统的 DNS 可能会失效,所以我们需要确保 systemd-resolved 接管
-
启用并启动 systemd-resolved 服务
sudo systemctl enable --now systemd-resolved -
让系统使用 systemd-resolved 的 DNS 配置
创建一个符号链接,将 /etc/resolv.conf 指向 systemd-resolved 管理的配置文件
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
1.6. 执行切换
-
禁用 NetworkManager
sudo systemctl disable NetworkManager -
启用 systemd-networkd
sudo systemctl enable systemd-networkd
1.7. 重启系统
systemctl reboot
1.8. 验证网络链接
-
检查 systemd-networkd 状态
networkctl status -
测试网络连通性和 DNS
ping 8.8.8.8 ping g.cn -
检查 DNS 服务器
resolvectl status
1.9. 移除 NetworkManager
在确认网络配置稳定运行后可选择移除 NetworkManager 组件
sudo transactional-update pkg remove NetworkManager NetworkManager-lang
重启以应用更改
transactional-update reboot
2. Advanced Topics | 高级用法
2.1. About DOT
如果你需要使用一些 DNS 高级特性比如说 DOT
那么建议你将 /etc/systemd/network/5-wired.network 文件中有关 DNS 的部分移除
并新建 /etc/systemd/resolved.conf.d/dns_over_tls.conf
内容如下所示
[Resolve]
DNS=1.1.1.1
DNS=9.9.9.9
DNSOverTLS=yes
FallbackDNS=8.8.8.8
检查是否启用 DOT
Global
Protocols: +LLMNR +mDNS +DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub
Current DNS Server: 1.1.1.1
DNS Servers: 1.1.1.1 9.9.9.9
Fallback DNS Servers: 8.8.8.8
Link 2 (enp3s0)
Current Scopes: LLMNR/IPv4 LLMNR/IPv6
Protocols: -DefaultRoute +LLMNR -mDNS +DNSOverTLS DNSSEC=no/unsupported
Default Route: no
2.2. NTP
你仍可以在配置文件中添加 NTP 服务器地址 (IP地址和域名均可)
此值将会被 systemd-timesyncd.service 读取使用
......
[Network]
......
NTP=pool.ntp.org
......
2.3. VPS /64 V6
有些 VPS 会分配如下地址
- Main V6
- /64 V6
且通常网关不在这个 /64 段
这时我们需要加上 GatewayOnLink=yes 参数告诉内核强制直连
完全体示例配置如下所示
[Match]
Name=eth0
[Network]
Address=v4/24
Address=main v6 address
Address=/64 address
Gateway=V6 gateway
Gateway=V4 gateway
DNS=2606:4700:4700::1111
DNS=2606:4700:4700::1001
DNS=1.1.1.1
DNS=9.9.9.9
DNSOverTLS=true
DNSSEC=true
NTP=pool.ntp.org
[Route]
Gateway=V6 gateway
GatewayOnLink=yes
2.4. VPS Example
[Match]
Name=ens18
[Network]
Address=xxx.xxx.xxx.xxx/24
Address=xxxxx:xxxx:xxxx:xxxx::/64
IPv6PrivacyExtensions=no
IPv6AcceptRA=no
DNS=2606:4700:4700::1111
DNS=2606:4700:4700::1001
DNS=1.1.1.1
DNS=9.9.9.9
DNSOverTLS=opportunistic
LLMNR=no
MulticastDNS=no
DNSSEC=true
NTP=pool.ntp.org
[Route]
Destination=0.0.0.0/0
Gateway=xxx.xxx.xxx.xxx
GatewayOnLink=yes
QuickAck=true
Metric=100
FastOpenNoCookie=true
[Route]
Destination=::/0
Gateway=xxxx:xxx:x::x
GatewayOnLink=yes
QuickAck=true
Metric=200
FastOpenNoCookie=true
[Link]
RequiredForOnline=yes
RequiredFamilyForOnline=any
Thanks & Copy

