By xzllll

openSUSE MicroOS: 更换网络管理器至systemd-networkd

实践 | Practices 2025年9月21日

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

⚠️
注意
  1. openSUSE MicroOS 需要开启软重启
  2. 且 Reboot strategy = instantly 以保证立刻执行软重启
openSUSE MicroOS | 入门指南之 transactional-update
1. First | 序 书接上回 openSUSE MicroOS | (基于Cockpit)虚拟化安装指南1. First | 序 本篇简单记录 openSUSE MicroOS 安装记录 openSUSE MicroOS 是一款专门针对容器化工作负载打造的超可靠、轻量级的操作系统 是不可变的 Real-Time OS 1.1. openSUSE MicroOS Features | 特征 * 只读根文件系统,防止对操作系统的意外修改 * Transactional Updates 技术利用 Btrfs 快照在不干扰正在运行的系统的情况下应用软件包更新 * health-checker 在更新后验证操作系统是否正常运行,若出现问题会自动回滚 * cloud-init 用于云环境首次启动时的系统初始配置(包括 OpenStack) * Combustion 和 Ignition 用于其他所有镜像在首次启动时的系统初始配置 * 设计与现有的 openSUSE 或 SUSE Linux

点击此链接了解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 接管

  1. 启用并启动 systemd-resolved 服务

    sudo systemctl enable --now systemd-resolved
    
  2. 让系统使用 systemd-resolved 的 DNS 配置

    创建一个符号链接,将 /etc/resolv.conf 指向 systemd-resolved 管理的配置文件

    sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
    

1.6. 执行切换

  1. 禁用 NetworkManager

    sudo systemctl disable NetworkManager
    
  2. 启用 systemd-networkd

    sudo systemctl enable systemd-networkd
    

1.7. 重启系统

systemctl reboot

1.8. 验证网络链接

  1. 检查 systemd-networkd 状态

    networkctl status
    
  2. 测试网络连通性和 DNS

    ping 8.8.8.8
    ping g.cn
    
  3. 检查 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

systemd-networkd - Arch Linux 中文维基

networkctl

标签

xzllll

三分钟热度三分钟收获