商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 系统应用 > 如何在Linux中配置具体的网络静态IP模式

如何在Linux中配置具体的网络静态IP模式

  发布于2026-08-21 阅读(0)

扫一扫,手机访问

在Ubuntu系统中配置静态IP,首先要确认网卡名和网络管理机制。可以运行“ip -br a”命令查看网卡信息,“ip route | grep default”命令查看网关,“cat /etc/resolv.conf”命令查看DNS来源。接着,通过“ls /etc/netplan/”或“nmcli”等命令判断后端服务。然后,严格按照YAML格式进行配置,包括缩进空格、addresses列表、gateway4字段、nameservers嵌套addresses,并确保与renderer匹配。最后,执行“netplan apply”命令使配置生效。

如何在Linux中配置具体的网络静态IP模式

先确认网卡名和当前网络管理机制

硬改配置文件前,必须知道系统用的是哪套网络服务。直接改错地方,netplan applysystemctl restart network 都不会生效。

运行这三条命令看输出:

  • ip -br a —— 找出真实网卡名(比如 ens33enp0s3,排除 lo 和带 @ 的虚拟接口)
  • ip route | grep default —— 看默认网关走哪个接口、当前是否 DHCP 获取
  • cat /etc/resolv.conf —— 如果开头有 # Generated by NetworkManagersystemd-resolved,说明 DNS 是动态注入的,不能直接改这个文件

再查后端服务:

  • ls /etc/netplan/ 有文件 → Ubuntu 17.10+ / Debian 11+ / CentOS Stream 默认走 Netplan
  • nmcli connection show 有输出且 systemctl is-active NetworkManageractive → 优先用 nmcli
  • ls /etc/sysconfig/network-scripts/ifcfg-* 存在 → RHEL/CentOS/Fedora/Alibaba Cloud Linux 风格
  • cat /etc/network/interfacesiface 块 → Debian/Ubuntu Server 传统 ifupdown

/etc/netplan/*.yaml 配置后不生效的常见原因

Netplan 本身不干活,它只是把 YAML 翻译给后端(systemd-networkdNetworkManager)。错配就白忙。

  • YAML 缩进必须用空格,Tab 键直接解析失败 —— 用 sudo netplan --debug apply 能定位到具体哪行报错
  • addresses: 必须是列表格式:[192.168.1.100/24] 或换行加 -,写成 192.168.1.100/24(无括号/破折号)会静默忽略
  • gateway4: 不能写成 gateway:,后者是无效字段
  • nameservers: 下必须嵌套 addresses:,完整写法是:nameservers: {addresses: [8.8.8.8, 114.114.114.114]},漏掉 addresses: 键,DNS 就不会写入
  • renderer: 值必须和实际运行的服务一致:设了 renderer: networkd 就得 systemctl is-active systemd-networkdactive;设了 renderer: NetworkManager 就得关掉 systemd-networkd,否则冲突

nmcli 修改连接后 ping 不通网关

这是 NetworkManager 场景下最典型的“配置写了但没生效”问题。只改 ipv4.method manual 不设地址,NM 会 fallback 到 DHCP。

  • 必须配套设置:ipv4.addressesipv4.gatewayipv4.dns,缺一不可
  • 修改完要显式 down/up:nmcli connection down "连接名称" && nmcli connection up "连接名称"
  • 检查是否启用 IPv4 路由:nmcli connection show "连接名称" | grep ipv4.ignore-auto-routes,如果为 yes,需设为 no,否则网关路由不装入内核
  • 执行 ip route show 确认是否有对应 default via ... dev ... 条目,没有说明路由没加载成功

RHEL/CentOS 中 ifcfg-* 文件改完不生效

这类系统靠 network.service 读取 /etc/sysconfig/network-scripts/ifcfg-*,失效点常不在 IP 字段本身。

  • ONBOOT=yes —— 这是开机自启开关,设成 no 就算重启也不会拉起
  • BOOTPROTO=static(不是 none,部分旧版脚本不识别 none
  • GATEWAY= 必须写在主接口配置里(如 ifcfg-ens33),不能写在其他文件中
  • DNS1=DNS2= 是有效字段,但若系统启用了 NetworkManager,它可能覆盖这些设置 —— 可临时停用:sudo systemctl stop NetworkManagersystemctl restart network
  • 改完别只 systemctl restart network,建议补一句 ip addr flush dev ens33(换成你的网卡名),清除残留 DHCP 地址避免冲突

但真正容易被忽视的是,不同机制间存在着隐式互斥。例如,当systemd-networkdNetworkManager同时运行时,Netplan的renderer: networkd可能会接管失败;再比如,/etc/resolv.conf若被systemd-resolved通过符号链接管理,即便你手动修改了,下次NM reload或DHCP lease更新时也会被覆盖。所以说,配置静态IP并非仅仅是填写几个字段那么简单,它实际上是对整个网络栈的声明式协商过程。

本文转载于:https://www.php.cn/faq/3026448.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注