目录
Linux 静态 IP(Static)配置经验分享
本文记录在不同 Linux 发行版上把网卡配置为**固定 IP(Static)**的几种做法。场景通常是:服务器需要稳定地址供 SSH / 服务访问、做端口映射、或加入集群。这些步骤照着做基本能一次配通,命令均可在终端直接执行。
一、先确认网卡名和网关信息
固定 IP 前必须知道三件事:网卡名、网段/掩码、网关 IP。先看网卡名:
baship addr show
nmcli device status # 用 NetworkManager 的发行版可用
查当前网关(改之前先记下,避免填错):
baship route show # 找 default via 那行
本文示例统一用这套参数(按你的实际网络替换):
- 网卡:
ens33 - IP:
192.168.1.100/24(即掩码 255.255.255.0) - 网关:
192.168.1.1 - DNS:
223.5.5.5和114.114.114.114
二、临时固定(重启失效,救急 / 测试用)
不改配置文件、立刻生效,但重启后丢失:
bashsudo 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(重启失效)
验证:
baship addr show ens33 ip route show ping -c 4 192.168.1.1
三、永久配置(按发行版 / 版本区分)
1. Debian / Ubuntu 系
旧版(Ubuntu 16.04 及以前、Debian 9 及以前):/etc/network/interfaces
bashsudo vi /etc/network/interfaces
iniauto 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 # 空格分隔多个
生效:
bashsudo systemctl restart networking
新版(Ubuntu 18.04+ / Debian 10+):Netplan(YAML)
bashsudo vi /etc/netplan/50-cloud-init.yaml
静态写法是 dhcp4: no + 手写 addresses / routes(网关) / nameservers:
yamlnetwork:
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,冒号后留空格。
先验证再应用:
bashsudo netplan try # 120 秒回滚保护,无误自动保留
sudo netplan apply
2. RHEL / CentOS 系
CentOS 6 / RHEL 6(传统 ifcfg)
bashsudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
iniDEVICE=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
生效:
bashsudo service network restart
CentOS 7 / RHEL 7(ifcfg + NetworkManager 并存)
bashsudo vi /etc/sysconfig/network-scripts/ifcfg-ens33
iniTYPE=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
生效:
bashsudo systemctl restart network
# 或
sudo ifdown ens33; sudo ifup ens33
CentOS 8+ / RHEL 8/9/10 / Rocky / Alma(NetworkManager 统一管理)
推荐用 nmcli 一行配完:
bashsudo 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;
改完重载:
bashsudo nmcli connection reload sudo nmcli connection up ens33
3. openSUSE / SLES(简要)
- SLES 11/12/15(wicked):
/etc/sysconfig/network/ifcfg-eth0写BOOTPROTO='static'、IPADDR='192.168.1.100/24';网关单独写/etc/sysconfig/network/routes(default 192.168.1.1 - -);DNS 写/etc/sysconfig/network/config的NETCONFIG_DNS_STATIC_SERVERS。重启sudo rcnetwork restart。 - SLES 16(NetworkManager):同 RHEL 8+ 的
nmcli做法,method=manual。
四、验证
baship 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协作,人工编辑