Linux系统永久修改IP地址与子网掩码的完整指南

一、网络配置原理与前置准备

1.1 网络配置原理

Linux系统采用分层网络管理架构,其中NetworkManager服务负责动态网络配置,而传统ifcfg配置文件提供静态配置支持。现代发行版通常同时支持这两种方式,但永久生效需通过配置文件修改实现。

1.2 配置文件定位

不同发行版采用不同路径存储网络配置:

  • RHEL/CentOS 7+/etc/sysconfig/network-scripts/ifcfg-<网卡名>
  • Ubuntu/Debian/etc/network/interfaces
  • 通用方案(推荐)/etc/NetworkManager/system-connections/<网卡名>.nmconnection

1.3 修改前检查

执行以下命令确认当前网络状态:

  1. ip addr show # 查看所有网卡状态
  2. nmcli device show <网卡名> # 显示详细网络参数
  3. cat /etc/resolv.conf # 检查DNS配置

二、永久修改IP地址的详细步骤

2.1 编辑配置文件

使用文本编辑器修改配置文件(以ens160网卡为例):

  1. sudo vim /etc/NetworkManager/system-connections/ens160.nmconnection

典型配置文件结构如下:

  1. [connection]
  2. id=ens160
  3. uuid=fc0fa4af-909d-49a4-af47-fb2de0b9f98a
  4. type=ethernet
  5. interface-name=ens160
  6. timestamp=1748587478
  7. [ethernet]
  8. [ipv4]
  9. address1=192.168.66.20/24,192.168.66.2 # IP/子网掩码/网关
  10. dns=8.8.8.8;8.8.4.4 # DNS服务器
  11. method=manual # 手动配置模式
  12. [ipv6]
  13. addr-gen-mode=default
  14. method=auto

关键参数说明:

  • address1:格式为IP/前缀长度,网关,如192.168.1.100/24,192.168.1.1
  • method:必须设置为manual才能使用静态IP
  • dns:可配置多个DNS服务器,用分号分隔

2.2 修改子网掩码

子网掩码通过CIDR表示法或点分十进制两种方式指定:

  • CIDR格式:192.168.1.100/24(/24表示255.255.255.0)
  • 传统格式:在address1中分开指定:
    1. address1=192.168.1.100/24,192.168.1.1
    2. # 或
    3. address1=192.168.1.100,192.168.1.1
    4. gateway=192.168.1.1
    5. subnet-mask=255.255.255.0

2.3 文件权限设置

修改后需确保文件权限正确:

  1. sudo chmod 600 /etc/NetworkManager/system-connections/*.nmconnection
  2. sudo chown root:root /etc/NetworkManager/system-connections/*.nmconnection

三、应用网络配置变更

3.1 重启网络服务

根据发行版选择合适方式:

  1. # Systemd系统(推荐)
  2. sudo systemctl restart NetworkManager
  3. # 传统init系统
  4. sudo service network restart

3.2 激活特定连接

使用nmcli工具激活修改后的配置:

  1. sudo nmcli connection down ens160 && sudo nmcli connection up ens160
  2. # 或简写为
  3. sudo nmcli connection reload && sudo nmcli connection up ens160

3.3 验证配置生效

执行多维度验证:

  1. # 查看IP配置
  2. ip addr show ens160
  3. # 测试网络连通性
  4. ping -c 4 8.8.8.8
  5. traceroute example.com
  6. # 检查DNS解析
  7. nslookup example.com
  8. dig example.com
  9. # 验证默认网关
  10. ip route show | grep default

四、高级配置技巧

4.1 多IP配置

在同一个网卡上绑定多个IP:

  1. [ipv4]
  2. address1=192.168.1.100/24,192.168.1.1
  3. address2=10.0.0.100/24,10.0.0.1
  4. method=manual

4.2 配置静态路由

在配置文件中添加路由信息:

  1. [ipv4]
  2. routes1=172.16.0.0/16,192.168.1.254
  3. method=manual

4.3 使用nmcli命令行配置

对于脚本化部署,可直接使用nmcli命令:

  1. sudo nmcli con mod ens160 ipv4.addresses 192.168.1.100/24 \
  2. ipv4.gateway 192.168.1.1 \
  3. ipv4.dns "8.8.8.8,8.8.4.4" \
  4. ipv4.method manual
  5. sudo nmcli con up ens160

五、常见问题解决方案

5.1 配置修改后不生效

可能原因及解决:

  1. 配置文件语法错误:使用nmcli con show <连接名>验证配置
  2. 服务未重启:确保执行了systemctl restart NetworkManager
  3. 冲突配置:检查/etc/sysconfig/network-scripts/下是否有残留配置

5.2 网络服务启动失败

排查步骤:

  1. journalctl -u NetworkManager -b # 查看服务日志
  2. nmcli general status # 检查服务状态
  3. ip link show # 确认网卡物理状态

5.3 修改后丢失SSH连接

预防措施:

  1. 在控制台直接操作而非远程SSH
  2. 使用tmuxscreen保持会话
  3. 配置串口控制台作为备用管理通道

六、最佳实践建议

  1. 配置备份:修改前备份配置文件

    1. sudo cp /etc/NetworkManager/system-connections/ens160.nmconnection{,.bak}
  2. 版本控制:将配置文件纳入版本管理系统

  3. 自动化部署:使用Ansible等工具实现批量配置:

    1. - name: Configure static IP
    2. nmcli:
    3. conn_name: ens160
    4. type: ethernet
    5. ip4: 192.168.1.100/24
    6. gw4: 192.168.1.1
    7. dns4: 8.8.8.8
    8. state: present
  4. 文档记录:维护完整的网络拓扑文档,包括:

    • IP地址分配表
    • 子网划分方案
    • 网关和DNS配置

通过以上系统化的配置方法,可以确保Linux服务器的网络参数永久生效且稳定可靠。对于生产环境,建议先在测试环境验证配置变更,再应用到生产系统。