Linux 系统重启后配置丢失的根因

6次阅读

systemd服务未启用导致配置未持久化,如systemd-sysctl未启用则sysctl配置不生效,iptables规则需iptables-persistent等工具保存,NetworkManager会覆盖手工网络配置,挂载需写入/etc/fstab并确保对应服务启用。

Linux 系统重启后配置丢失的根因

systemd 服务未启用导致配置未持久化

很多用户在 linux 重启后发现 /etc/sysctl.conf 修改没生效、防火墙规则消失、或自定义网络参数还原,根本原因不是配置写错了,而是相关服务没设为开机自启。比如 sysctl 配置依赖 procps 服务(部分发行版叫 systemd-sysctl),它负责在启动时读取 /etc/sysctl.conf/etc/sysctl.d/*.conf;若该服务被禁用或未启用,配置就只在当前会话临时生效。

检查方法:systemctl is-enabled systemd-sysctl;若输出 disabled,则需运行:systemctl enable systemd-sysctl。注意:有些精简系统(如某些容器镜像或最小化安装)默认不启用该服务,必须手动开启。

iptables 规则未保存到磁盘

直接用 iptables -Aiptables-restore 添加的规则只存在于内核内存中,重启后清空是正常行为。Linux 内核本身不保存规则,必须靠用户空间工具做持久化。

  • debian/ubuntu 系统常用 iptables-persistent:安装后运行 iptables-save > /etc/iptables/rules.v4,再执行 systemctl enable netfilter-persistent
  • RHEL/centos 7+ 默认用 firewalld,应使用 firewall-cmd --permanent 添加规则,然后 firewall-cmd --reload,否则 --permanent 不生效
  • 若手动管理,确保保存命令在关机前执行,且路径与加载脚本匹配(例如某些脚本从 /etc/sysconfig/iptables 读取,而非 /etc/iptables/rules.v4

NetworkManager 覆盖了 ifconfig 或 ip 命令配置

ip addr addifconfig 配的 IP 地址、路由、别名等,在 NetworkManager 管理的接口上属于“临时覆盖”,NM 会在下次连接重载或重启后按其配置文件/etc/NetworkManager/system-connections/)恢复状态,把手工配置冲掉。

解决方式取决于需求:

  • 若想彻底绕过 NM,可编辑连接配置文件,设 managed=false,再改 /etc/network/interfaces(Debian系)或 /etc/sysconfig/network-scripts/ifcfg-*(RHEL系)
  • 若仍用 NM,所有配置应通过 nmclinm-connection-editor 设置,并加 --permanent 参数
  • 特别注意:某些云平台(如 AWS EC2)的 cloud-init 会在每次启动时重写网络配置,需检查 /etc/cloud/cloud.cfg.d/ 下是否有覆盖逻辑

挂载点未写入 /etc/fstab 或自动挂载服务未启用

mount /dev/sdb1 /mnt/data 挂载的设备,重启后丢失是预期行为。真正持久化需要两步:一是把条目写进 /etc/fstab,二是确保 systemd-fstab-generator 或传统 mountall 正常工作(现代 systemd 系统基本默认支持)。

常见疏漏:

  • UUIDPARTUUID 写错,导致 mount -a 失败,进而整个 fstab 加载中断
  • 遗漏 noautox-systemd.automount 等选项,造成启动卡在挂载环节(尤其 NFS 或远程存储)
  • /etc/fstab 中使用设备名(如 /dev/sdb1)而非 UUID,在多磁盘热插拔场景下易错配

验证方法:执行 mount -a 并观察是否报错,再查 systemctl status local-fs.target 是否 active。

配置“重启不丢”的关键不在写得多,而在确认谁在启动时真正加载它——服务有没有 enable,工具有没有 save,管理器有没有接管。最容易被忽略的是那些看似“系统自带”却默认关闭的加载服务,比如 systemd-sysctlnetfilter-persistent,它们不启动,前面所有配置都只是临时快照。

text=ZqhQzanResources