当前位置:首页 > Linux > 正文

linux如何修改ip

编辑网卡配置文件(如 /etc/network/interfaces),设置新IP地址,执行 systemctl restart networking

在Linux系统中修改IP地址是日常运维和故障排查中的常见操作,其核心在于理解网络接口管理机制与不同发行版的配置文件差异,以下从临时生效方案永久生效方案多场景适配三个维度展开详细说明,并附对比表格与常见问题解答。


临时修改IP地址(重启后失效)

适用于快速测试或应急场景,无需修改配置文件,直接通过命令行工具调整。

使用 ip 命令(推荐)

# 查看当前网络接口状态
ip addr show
# 示例:将ens33接口的IP改为192.168.1.100/24,网关设为192.168.1.1
sudo ip addr add 192.168.1.100/24 dev ens33
sudo ip route del default via 192.168.1.1 # 删除旧默认路由(如有)
sudo ip route add default via 192.168.1.1 dev ens33

优势:即时生效,适合调试;
注意:仅内存生效,重启或systemctl restart NetworkManager后丢失。

使用 nmcli 命令(NetworkManager图形化后台)

# 列出所有连接名称
nmcli connection show
# 示例:修改eth0对应的连接"Wired connection 1"的IPv4地址
sudo nmcli connection modify "Wired connection 1" ipv4.addresses 192.168.1.100/24
sudo nmcli connection modify "Wired connection 1" ipv4.gateway 192.168.1.1
sudo nmcli connection up "Wired connection 1" # 使配置生效

原理:NetworkManager会缓存配置到/run/nm/目录,但不会写入持久化文件。


永久修改IP地址(重启后保留)

需根据Linux发行版选择对应配置文件,以下是主流发行版的完整操作流程。

Ubuntu/Debian系(基于Netplan)

配置文件路径/etc/netplan/目录下的YAML文件(如01-netcfg.yaml
典型配置示例

network:
  version: 2
  renderer: networkd # 使用systemd-networkd渲染器
  ethernets:
    ens33: # 网卡名称需与实际一致(可通过ip link查看)
      dhcp4: no       # 禁用DHCPv4
      addresses: [192.168.1.100/24] # 静态IP+子网掩码
      routes:
        to: default
          via: 192.168.1.1        # 默认网关
      nameservers:               # DNS服务器(可选)
        addresses: [8.8.8.8, 223.5.5.5]

生效步骤

sudo netplan apply          # 应用新配置
sudo systemctl restart systemd-networkd # 确保服务重载

验证方法ip addr show ens33应显示新IP,ping www.baidu.com测试连通性。

CentOS/RHEL系(传统network服务)

配置文件路径/etc/sysconfig/network-scripts/ifcfg-ens33
关键参数说明
| 参数 | 示例值 | 说明 |
|———————|—————–|——————————-|
| DEVICE | ens33 | 网卡设备名 |
| ONBOOT | yes | 开机启动该网卡 |
| BOOTPROTO | static | 静态IP(none为不启用) |
| IPADDR | 192.168.1.100 | IP地址 |
| PREFIX | 24 | 子网掩码位数(对应/24) |
| GATEWAY | 192.168.1.1 | 默认网关 |
| DNS1 | 8.8.8.8 | 主DNS服务器 |
| DNS2 | 223.5.5.5 | 备选DNS服务器 |

生效步骤

sudo systemctl restart network # 重启网络服务
# 或(较新版本):sudo systemctl restart NetworkManager

注意:若使用nmtui图形化工具修改,会自动生成上述配置文件,无需手动编辑。

openSUSE/SLES系(wicked服务)

配置文件路径/etc/wicked/wireless//etc/wicked/ethernet/
示例配置片段

[Match]
Name = ens33
[Network]
Address = 192.168.1.100/24
Gateway = 192.168.1.1
DNS = [ "8.8.8.8", "223.5.5.5" ]

生效命令sudo wicked --apply


跨发行版通用技巧与注意事项

关键信息核对清单

项目 必填项 常见错误案例
网卡名称 误将ens33写成eth0(需用ip link确认)
子网掩码 /24对应255.255.255.0
默认网关 未设置导致无法访问外部网络
DNS服务器 可选但建议 缺失会导致域名解析失败
路由优先级 高级需求 多网关场景需指定metric值

特殊场景处理

  • 容器内修改IP:需同时修改宿主机桥接网络或Docker/K8s的CNI插件配置。
  • 双栈环境(IPv4+IPv6):需分别配置addressesaddresses6字段。
  • VLAN标签:添加vlan-raw-device en.<VLAN ID>到网卡配置。

验证与排错命令

命令 作用
ip addr show 查看所有接口的当前IP配置
ip route show 显示路由表
nmcli device status NetworkManager管理的设备状态
journalctl -u network 查看网络服务日志(排查启动错误)
traceroute google.com 测试到外部网络的连通性

常见问题FAQs

Q1: 修改IP后无法上网怎么办?

A:按以下顺序排查:

  1. 检查网关可达性ping 192.168.1.1(假设网关为此地址),不通则检查物理连接或交换机端口。
  2. 验证DNS解析nslookup example.com,失败则检查/etc/resolv.conf是否包含正确DNS。
  3. 查看路由表ip route show,确认默认路由指向正确网关。
  4. 检查防火墙sudo firewall-cmd --list-all(CentOS)或sudo ufw status(Ubuntu),确保开放必要端口。
  5. 重置配置:若完全无法恢复,可回滚配置文件或使用nmtui重新生成默认配置。

Q2: 如何批量修改多台服务器的IP?

A:推荐两种高效方案:

  • Ansible Playbook:编写剧本自动推送Netplan/network-manager配置,适合大规模部署。
  • PXE+Kickstart:通过TFTP服务器提供自定义镜像,在安装阶段注入IP参数(适用于新装机)。
  • 脚本化处理:编写Shell脚本结合sed替换模板文件中的占位符(如${IP}, ${GATEWAY}),再分发到各节点执行。

通过以上步骤,可根据实际需求灵活选择临时或永久修改方案,建议生产环境优先使用永久配置,并通过版本控制系统管理配置文件变更,对于云服务器(如AWS/阿里云),还需注意安全组规则与弹性IP

0