目录
- Wicked 简介
- 什么是 Wicked?
- 为什么使用 Wicked?(与 NetworkManager 的对比)
- 核心概念
- 配置文件位置 (
/etc/sysconfig/network/) - 网络接口 (
ifcfg文件) - 控制器
wicked命令行工具
- 配置文件位置 (
- 实践教程
- 教程 1:配置一个静态 IP 地址
- 教程 2:配置 DHCP (自动获取 IP)
- 教程 3:配置多个 IP 地址(别名/子接口)
- 教程 4:配置 VLAN
- 教程 5:配置 Bonding(链路聚合)
- 教程 6:配置 Bridge(网桥)
- 管理命令
- 查看网络状态 (
wicked ifstatus) - 手动启动/停止接口 (
wicked ifup/wicked ifdown) - 显示配置 (
wicked show-config) - 监控网络事件 (
wicked monitor)
- 查看网络状态 (
- 故障排除
- 查看日志 (
journalctl) - 调试模式 (
wickedd的-d选项)
- 查看日志 (
- 总结与最佳实践
Wicked 简介
什么是 Wicked?
Wicked 是一个网络管理服务,它负责在系统启动时配置网络,并在运行时管理网络接口,它通过读取 /etc/sysconfig/network/ 目录下的配置文件来工作。

为什么使用 Wicked?
- 服务器环境首选:对于服务器、虚拟机和容器,Wicked 提供了比 NetworkManager 更稳定、更少“惊喜”的配置,NetworkManager 最初为笔记本电脑设计,会自动检测并连接到新网络,这在服务器上可能是不希望发生的。
- 声明式配置:配置是静态的,定义在文件中,重启后,网络状态会与配置文件保持一致,非常可靠。
- 强大的功能:原生支持 VLAN、Bonding、Bridge、隧道等高级网络特性。
- 清晰的命令行:
wicked命令提供了强大的接口来检查和控制网络状态。
核心概念
配置文件位置
所有网络接口的配置文件都位于 /etc/sysconfig/network/ 目录下,文件名通常与接口名对应,ifcfg-eth0。
网络接口 (ifcfg 文件)
这是 Wicked 的核心,每个文件定义了一个网络接口的配置,关键参数包括:
STARTMODE: 最重要的参数,定义了接口的启动模式。auto: 系统启动时自动激活。manual: 手动激活(使用wicked ifup)。off: 不激活。ifplugd: 根据物理链路状态自动激活/停用(适用于有线网卡)。onboot: 同auto。
BOOTPROTO: IP 地址分配协议。static: 静态 IP 地址。dhcp: 通过 DHCP 获取 IP 地址。
IPADDR: 静态 IP 地址(168.1.100)。PREFIXLEN: 子网前缀长度(/24写作24)。NETMASK: 子网掩码(255.255.0),现代 openSUSE 更推荐使用PREFIXLEN。BROADCAST: 广播地址。GATEWAY: 默认网关。NAME: 接口的可读名称(可选)。USERCONTROL: 是否允许普通用户控制此接口(默认no)。
控制器
控制器是指可以承载其他虚拟接口的实体,如 Bonding、Bridge 或 VLAN,在配置文件中,通过 ETHERDEVICE 参数指定其物理接口。
wicked 命令行工具
这是与 Wicked 服务交互的主要命令。

实践教程
在开始之前,请确保你的系统正在使用 Wicked,默认情况下,openSUSE Leap/Tumbleweed 服务器版就是如此,你可以用以下命令检查:
systemctl status wicked
如果显示 active (running),则一切正常。
教程 1:配置一个静态 IP 地址
假设我们为 eth0 接口配置一个静态 IP。
-
创建或编辑配置文件
sudo nano /etc/sysconfig/network/ifcfg-eth0
-
添加以下内容
# /etc/sysconfig/network/ifcfg-eth0 STARTMODE='auto' BOOTPROTO='static' IPADDR='192.168.1.100' PREFIXLEN='24' NAME='My Static Ethernet' # GATEWAY='192.168.1.1' # 如果需要,添加默认网关 # DNS='192.168.1.1 8.8.8.8' # DNS服务器,通常在 /etc/resolv.conf 中设置或通过网络管理
-
应用配置 使用
wicked命令让配置生效,推荐使用all参数来确保所有依赖配置(如路由)也被正确应用。sudo wicked ifup eth0
-
验证配置
# 查看接口状态 wicked ifstatus eth0 # 查看IP地址信息 ip a show eth0 # 测试网络连通性 ping 8.8.8.8
教程 2:配置 DHCP (自动获取 IP)
这个配置非常简单。
-
编辑配置文件
sudo nano /etc/sysconfig/network/ifcfg-eth0
-
# /etc/sysconfig/network/ifcfg-eth0 STARTMODE='auto' BOOTPROTO='dhcp' NAME='My DHCP Ethernet'
-
应用并验证
sudo wicked ifup eth0 ip a show eth0
你应该能看到从 DHCP 服务器获取到的 IP 地址。
教程 3:配置多个 IP 地址(别名/子接口)
Wicked 使用逻辑接口(子接口)来实现一个物理接口上有多个 IP 地址,命名规则为 <parent>.<vlan_id> 或 <parent>:<number>。
-
为
eth0添加第二个 IPsudo nano /etc/sysconfig/network/ifcfg-eth0:1
-
添加以下内容
# /etc/sysconfig/network/ifcfg-eth0:1 STARTMODE='manual' BOOTPROTO='static' ETHERDEVICE='eth0' # 指定父接口 IPADDR='192.168.1.101' PREFIXLEN='24' NAME='Second IP on eth0'
-
应用并验证
sudo wicked ifup eth0:1 ip a show eth0
你会看到
eth0接口下有一个eth0:1的逻辑接口,并配置了新的 IP。
教程 4:配置 VLAN
VLAN 的配置与子接口类似,只是命名和参数略有不同。
-
创建 VLAN 接口
eth0.100sudo nano /etc/sysconfig/network/ifcfg-eth0.100
-
添加以下内容
# /etc/sysconfig/network/ifcfg-eth0.100 STARTMODE='manual' BOOTPROTO='static' ETHERDEVICE='eth0' VLAN_ID='100' IPADDR='192.168.100.10' PREFIXLEN='24' NAME='VLAN 100 on eth0'
-
应用并验证
sudo wicked ifup eth0.100 ip a show eth0.100
教程 5:配置 Bonding(链路聚合)
Bonding 将多个物理网卡捆绑成一个逻辑接口,以提高带宽和可用性。
-
创建 Bond 接口配置文件
sudo nano /etc/sysconfig/network/ifcfg-bond0
-
添加 Bonding 主配置
# /etc/sysconfig/network/ifcfg-bond0 STARTMODE='auto' BOOTPROTO='static' BONDING_MASTER='yes' IPADDR='192.168.1.150' PREFIXLEN='24' NAME='My Bonded Interface' # BONDING_MODULE_OPTS='mode=4 miimon=100' # 可以在这里指定 bonding 模式和参数
mode=4表示LACP(802.3ad),miimon=100表示每100毫秒链路状态检测一次。 -
创建物理成员接口配置
sudo nano /etc/sysconfig/network/ifcfg-eth0
# /etc/sysconfig/network/ifcfg-eth0 STARTMODE='manual' BOOTPROTO='none' ETHERDEVICE='bond0' # 指定它属于哪个 bond BONDING_SLAVE='yes' NAME='Slave for bond0'
对
eth1(或其他网卡) 做同样配置。 -
应用并验证
# 先启动 bond 接口 sudo wicked ifup bond0 # 再启动成员接口 sudo wicked ifup eth0 sudo wicked ifup eth1 # 查看bond状态 cat /proc/net/bonding/bond0
教程 6:配置 Bridge(网桥)
网桥常用于虚拟化,将虚拟网络接口连接到物理网络。
-
创建 Bridge 接口配置
sudo nano /etc/sysconfig/network/ifcfg-br0
-
添加 Bridge 主配置
# /etc/sysconfig/network/ifcfg-br0 STARTMODE='auto' BOOTPROTO='static' BRIDGE='yes' IPADDR='192.168.1.200' PREFIXLEN='24' NAME='My Bridge Interface'
-
创建物理成员接口配置
sudo nano /etc/sysconfig/network/ifcfg-eth0
# /etc/sysconfig/network/ifcfg-eth0 STARTMODE='manual' BOOTPROTO='none' BRIDGE='br0' # 指定它属于哪个 bridge NAME='Slave for br0'
-
应用并验证
sudo wicked ifup br0 sudo wicked ifup eth0 ip a show br0
管理命令
-
查看所有接口状态
wicked ifstatus all
-
手动启动/停止接口
sudo wicked ifup eth0 sudo wicked ifdown eth0
-
显示接口的当前配置
wicked show-config eth0
-
实时监控网络事件 这个命令非常有用,可以看到 Wicked 的所有操作,如 DHCP 请求、IP 地址分配等。
sudo wicked monitor
在另一个终端执行
wicked ifup eth0,再回到这个终端观察输出。
故障排除
-
查看系统日志 Wicked 的日志记录在 systemd journal 中。
# 查看所有与 wicked 相关的日志 journalctl -u wicked # 实时查看日志 journalctl -u wicked -f
-
启用 Wicked 服务调试模式 这会输出非常详细的调试信息,对于定位问题非常有帮助。
- 停止 wicked 服务:
sudo systemctl stop wicked
- 以调试模式启动:
sudo /usr/sbin/wickedd -d -f
- 在另一个终端执行你的操作(如
wicked ifup eth0),然后观察调试终端的输出,完成后按Ctrl+C停止。
- 停止 wicked 服务:
总结与最佳实践
- 始终使用
STARTMODE:明确指定接口何时启动,避免意外行为。 - 文件命名清晰:使用
ifcfg-<interface>或ifcfg-<parent>.<id>的方式命名,便于管理。 - 理解
ETHERDEVICE:在配置控制器(Bond, Bridge, VLAN)时,正确设置ETHERDEVICE或BRIDGE参数至关重要。 - 使用
wicked命令:养成使用wicked ifstatus,wicked ifup,wicked monitor等命令的习惯,它们是诊断问题的利器。 - 备份配置:在修改重要配置(如 Bonding)前,备份原始的
ifcfg文件。 - 服务器环境:在服务器上,坚持使用 Wicked,而不是 NetworkManager,以获得最大的稳定性和可预测性。
希望这份详细的教程能帮助你完全掌握 openSUSE 上的 Wicked 网络配置!
