不同系统下设置静态IP
虽然所有 Linux 系统在底层的内核操作是相同的(临时配置都可以用ip或ifconfig),但让静态 IP 永久生效的配置文件格式、路径以及后台网络管理服务,在不同操作系统中截然不同。
各大常见系统设置静态 IP 的机制对比与操作示例说明如下:
| 系统 / 发行版 | 网络管理服务 (Backend) | 配置文件位置 | 格式特点 |
| 嵌入式 Linux (Buildroot / BusyBox) | ifupdown或init脚本 | /etc/network/interfaces或/etc/init.d/S* | 极简文本 / Shell 脚本 |
| Ubuntu 18.04+ / Debian 12+ | Netplan(systemd-networkd) | /etc/netplan/*.yaml | 严格缩进的YAML格式 |
| CentOS 7/8 / RHEL / Fedora | NetworkManager(nmcli) | /etc/NetworkManager/system-connections/ | INI 键值对或通过nmcli命令行配置 |
| 通用小型 Linux (Arch / Alpine) | systemd-networkd | /etc/systemd/network/*.network | 标准[Match]和[Network]段落 |
| 树莓派 (Raspberry Pi OS 早期) | dhcpcd | /etc/dhcpcd.conf | 配置文件末尾追加规则 |
主流系统的实际配置写法
1. Ubuntu 18.04 及以上(Netplan)
使用 YAML 缩进,不能使用 Tab 键,只能用空格:
# /etc/netplan/01-netcfg.yaml network: version: 2 ethernets: eth0: dhcp4: no addresses: - 192.168.1.100/24 routes: - to: default via: 192.168.1.1应用配置命令:sudo netplan apply
2. CentOS / RHEL / 企业级 Linux(NetworkManager / nmcli)
现代 RedHat 系推荐直接用命令行生成配置,不需要手动改文件:
# 1. 设置静态 IP 和网关 nmcli connection modify eth0 ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.method manual # 2. 重新加载并生效 nmcli connection up eth03. 通用 Linux(systemd-networkd)
许多轻量级服务器和现代嵌入式系统(如 Ubuntu Core、Yocto)喜欢用systemd原生网络管理:
# /etc/systemd/network/10-static-eth0.network [Match] Name=eth0 [Network] Address=192.168.1.100/24 Gateway=192.168.1.1 DNS=8.8.8.8应用配置命令:systemctl restart systemd-networkd
4. 嵌入式 Linux(Buildroot / 经典 Debian)
结构非常直接:
# /etc/network/interfaces auto eth0 iface eth0 inet static address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1为什么会有这么多方式?
因为 Linux 本身只是一个内核,网络配置是由运行在内核之上的网络管理守护进程(Daemon)负责读写和维护的:
嵌入式系统(Buildroot/Yocto)追求体积小、启动快,所以用最简单的
ifupdown或开机 Shell 脚本。桌面/服务器系统(Ubuntu/RedHat)追求热插拔、Wi-Fi/有线自动切换,所以引入了强大的
NetworkManager或Netplan。
💡两条通用规则:
临时修改:在任何 Linux 下,运行
ip addr add 192.168.1.100/24 dev eth0都通用(重启失效)。永久修改:先用
systemctl status或查看目录,确认当前系统到底是用Netplan、NetworkManager还是interfaces在管网络,再修改对应的配置文件。
