Linux 静态 IP(Static)配置经验分享
2026-07-22
基础学习笔记
00

目录

Linux 静态 IP(Static)配置经验分享
一、先确认网卡名和网关信息
二、临时固定(重启失效,救急 / 测试用)
三、永久配置(按发行版 / 版本区分)
1. Debian / Ubuntu 系
旧版(Ubuntu 16.04 及以前、Debian 9 及以前):/etc/network/interfaces
新版(Ubuntu 18.04+ / Debian 10+):Netplan(YAML)
2. RHEL / CentOS 系
CentOS 6 / RHEL 6(传统 ifcfg)
CentOS 7 / RHEL 7(ifcfg + NetworkManager 并存)
CentOS 8+ / RHEL 8/9/10 / Rocky / Alma(NetworkManager 统一管理)
3. openSUSE / SLES(简要)
四、验证
五、常见问题排查
六、经验提醒
七、参考资料(来自「Linux运维」知识库)

Linux 静态 IP(Static)配置经验分享

本文记录在不同 Linux 发行版上把网卡配置为**固定 IP(Static)**的几种做法。场景通常是:服务器需要稳定地址供 SSH / 服务访问、做端口映射、或加入集群。这些步骤照着做基本能一次配通,命令均可在终端直接执行。


一、先确认网卡名和网关信息

固定 IP 前必须知道三件事:网卡名网段/掩码网关 IP。先看网卡名:

bash
ip addr show nmcli device status # 用 NetworkManager 的发行版可用

查当前网关(改之前先记下,避免填错):

bash
ip route show # 找 default via 那行

本文示例统一用这套参数(按你的实际网络替换):

  • 网卡:ens33
  • IP:192.168.1.100/24(即掩码 255.255.255.0)
  • 网关:192.168.1.1
  • DNS:223.5.5.5114.114.114.114

二、临时固定(重启失效,救急 / 测试用)

不改配置文件、立刻生效,但重启后丢失:

bash
sudo ip addr add 192.168.1.100/24 dev ens33 # 加 IP/掩码 sudo ip link set ens33 up # 确保网卡 UP sudo ip route add default via 192.168.1.1 # 加默认网关 echo "nameserver 223.5.5.5" | sudo tee /etc/resolv.conf # 临时 DNS(重启失效)

验证:

bash
ip addr show ens33 ip route show ping -c 4 192.168.1.1

三、永久配置(按发行版 / 版本区分)

1. Debian / Ubuntu 系

旧版(Ubuntu 16.04 及以前、Debian 9 及以前):/etc/network/interfaces

bash
sudo vi /etc/network/interfaces
ini
auto eth0 iface eth0 inet static address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 223.5.5.5 114.114.114.114 # 空格分隔多个

生效:

bash
sudo systemctl restart networking

新版(Ubuntu 18.04+ / Debian 10+):Netplan(YAML)

bash
sudo vi /etc/netplan/50-cloud-init.yaml

静态写法是 dhcp4: no + 手写 addresses / routes(网关) / nameservers

yaml
network: version: 2 renderer: networkd ethernets: ens33: dhcp4: no # 关闭 DHCP addresses: - 192.168.1.100/24 # IP/掩码(CIDR) routes: - to: default via: 192.168.1.1 # 网关 nameservers: addresses: [223.5.5.5, 114.114.114.114]

注意:gateway4: 在较新 Netplan 里已弃用,推荐用上面的 routes 写法。YAML 缩进只用空格、不用 Tab,冒号后留空格。

先验证再应用:

bash
sudo netplan try # 120 秒回滚保护,无误自动保留 sudo netplan apply

2. RHEL / CentOS 系

CentOS 6 / RHEL 6(传统 ifcfg)

bash
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
ini
DEVICE=eth0 BOOTPROTO=static # 关键:static 表示静态 ONBOOT=yes # 开机自动激活(最易漏!) IPADDR=192.168.1.100 NETMASK=255.255.255.0 # 也可写 PREFIX=24 GATEWAY=192.168.1.1 DNS1=223.5.5.5 DNS2=114.114.114.114

生效:

bash
sudo service network restart

CentOS 7 / RHEL 7(ifcfg + NetworkManager 并存)

bash
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33
ini
TYPE=Ethernet NAME=ens33 DEVICE=ens33 BOOTPROTO=static ONBOOT=yes IPADDR=192.168.1.100 PREFIX=24 # 取代 NETMASK 的 CIDR 写法 GATEWAY=192.168.1.1 DNS1=223.5.5.5 DNS2=114.114.114.114

生效:

bash
sudo systemctl restart network # 或 sudo ifdown ens33; sudo ifup ens33

CentOS 8+ / RHEL 8/9/10 / Rocky / Alma(NetworkManager 统一管理)

推荐用 nmcli 一行配完:

bash
sudo nmcli connection modify ens33 \ ipv4.addresses 192.168.1.100/24 \ ipv4.gateway 192.168.1.1 \ ipv4.dns "223.5.5.5 114.114.114.114" \ ipv4.method manual # 关键:manual = 静态 sudo nmcli connection up ens33

若用连接名而非网卡名,先 nmcli connection show 看 NAME 列再替换。

直接改配置文件(在 /etc/NetworkManager/system-connections/ens33.nmconnection),[ipv4] 段写成:

ini
[ipv4] method=manual address1=192.168.1.100/24,192.168.1.1 # 地址/24,网关 dns=223.5.5.5;114.114.114.114;

改完重载:

bash
sudo nmcli connection reload sudo nmcli connection up ens33

3. openSUSE / SLES(简要)

  • SLES 11/12/15(wicked):/etc/sysconfig/network/ifcfg-eth0BOOTPROTO='static'IPADDR='192.168.1.100/24';网关单独写 /etc/sysconfig/network/routesdefault 192.168.1.1 - -);DNS 写 /etc/sysconfig/network/configNETCONFIG_DNS_STATIC_SERVERS。重启 sudo rcnetwork restart
  • SLES 16(NetworkManager):同 RHEL 8+ 的 nmcli 做法,method=manual

四、验证

bash
ip addr show ens33 # 确认 inet 是你要的固定地址 ip route show # 确认 default via 网关正确 cat /etc/resolv.conf # 确认 nameserver 是设置的 DNS ping -c 4 192.168.1.1 # 网关通不通 ping -c 4 www.baidu.com # DNS 解析通不通

五、常见问题排查

现象可能原因处理
重启后网卡不启动、连不上ONBOOT=no(CentOS 6/7)ONBOOT=yes 后重启网络
netplan apply 后整台断网YAML 缩进错误 / gateway4 冲突netplan try 提前验证;检查空格缩进、冒号后空格
配了 IP 但 ping 不通网关网关填错 / 网段不对ip route show 核对;确认 IP 和网关在同一网段
DNS 不生效resolv.conf 被覆盖CentOS 8+ 可在 nmcli 加 ipv4.ignore-auto-dns yes;确认 DNS1/DNS2 写对
改完没生效直接改文件但没重载CentOS 8+ 执行 nmcli connection reload;CentOS 7 执行 systemctl restart network
物理层 DOWN网线/虚拟网卡没接ip link show ens33 | grep state 看是否 UP,DOWN 则 ip link set ens33 up

排查顺序:物理层 UP → IP 配对 → 网关通 → DNS 通,逐层定位。


六、经验提醒

  • 改之前一定备份原配置sudo cp /etc/netplan/50-cloud-init.yaml{,.bak}(Ubuntu);sudo cp ifcfg-ens33{,.bak}(CentOS)。
  • ONBOOT=yes 是高频坑:CentOS 6/7 忘了它,重启直接失联。
  • 远程改配置留后路:通过 SSH 操作时,建议开两个会话,或用 netplan try(有回滚)/screen,避免改错锁死自己。
  • CentOS 8+ 别再找 ifcfg:新系统用 nmcli*.nmconnection 文件,老习惯会踩空。
  • 需要和动态获取对照:如果只是临时联网或内网客户端,参考动态 IP(DHCP)配置

七、参考资料(来自「Linux运维」知识库)

  • 《主流Linux操作系统各版本网卡配置方法汇总》—— 运维网工
  • 《运维新手必看 | 5分钟掌握Linux网络配置命令 nmcli》—— 网络运维刘师傅
  • 《RHEL/SLES/Ubuntu主流Linux发行版网络配置与差异》—— 小飞锅实施运维笔记
  • 《传统网卡名 eth0 + 静态IP 配置》—— 阿干tkl
  • 《Linux 网络管理速查:ip/ifconfig/Netplan 配置指南》

ai协作,人工编辑

本文作者:张老板

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!