Linux下命令设置的IP重启后不生效,如何实现永久配置?
Linux 临时IP配置重启失效的解决方案
问题背景
你提到用以下命令临时设置了eth1的IP和默认网关,当前配置生效但系统重启后会恢复原有设置:
ip link set eth1 down ifconfig eth1 0.0.1.2 netmask 255.255.255.0 route add default gw 0.0.1.2 eth1 ip link set eth1 up
你想知道是不是存在ifconfig没覆盖到的、需要额外配置IP的地方?答案是肯定的——上面的命令都是仅在当前运行时生效的临时配置,系统重启后会读取磁盘上的静态配置文件来恢复网络参数,所以必须修改这些配置文件才能让设置永久生效。
不同Linux发行版的静态网络配置位置
1. RHEL/CentOS 6 及更早版本
这类发行版的网卡配置文件存放在/etc/sysconfig/network-scripts/目录下,文件名通常为ifcfg-eth1:
打开该文件,修改或添加以下核心配置项:
BOOTPROTO=static IPADDR=0.0.1.2 NETMASK=255.255.255.0 GATEWAY=0.0.1.2 ONBOOT=yes
修改完成后重启网络服务生效:
service network restart
2. RHEL/CentOS 7+、Fedora 等使用NetworkManager的发行版
除了编辑上述ifcfg-eth1文件(路径不变),也可以用nmcli命令直接写入永久配置:
nmcli con mod eth1 ipv4.addresses 0.0.1.2/24 nmcli con mod eth1 ipv4.gateway 0.0.1.2 nmcli con mod eth1 ipv4.method manual nmcli con up eth1
如果手动编辑配置文件,需确保IPADDR、NETMASK、GATEWAY、ONBOOT=yes、BOOTPROTO=static这些参数配置正确。
3. Debian/Ubuntu 及衍生版本
这类发行版分两种配置方式:
- Netplan方式(Ubuntu 18.04+):
找到/etc/netplan/下的YAML配置文件(例如00-installer-config.yaml),修改内容如下:
应用配置使其生效:network: ethernets: eth1: addresses: [0.0.1.2/24] gateway4: 0.0.1.2 dhcp4: no version: 2netplan apply - 旧版interfaces方式:
编辑/etc/network/interfaces文件,添加以下内容:
重启网络服务:auto eth1 iface eth1 inet static address 0.0.1.2 netmask 255.255.255.0 gateway 0.0.1.2systemctl restart networking
4. 通用注意事项
- 如果你的网卡之前是DHCP自动获取IP模式,一定要关闭DHCP(比如设置
BOOTPROTO=static、dhcp4: no),否则重启后DHCP服务会自动覆盖你的静态配置。 - 不管用
ip还是ifconfig命令,临时配置都是直接修改内核网络栈,不会写入磁盘文件,所以永久生效必须修改对应发行版的静态配置文件。
内容的提问来源于stack exchange,提问作者netcat




