linux设置静态ip需先确认网卡名和网络管理工具,再按发行版选择netplan(ubuntu 18.04+)、nmcli(rhel/centos 8+)或ifcfg文件(rhel/centos 7)配置地址、掩码、网关、dns,最后应用生效。

Linux 设置网卡 IP,核心在于先确认系统用的网络管理方式,再选对配置路径和语法,最后让配置生效。不同发行版工具不同,但原理一致:静态 IP 需手动填地址、掩码、网关、DNS;DHCP 只需启用自动获取,其余由服务器分发。
确认网卡名和当前网络管理工具
别凭经验猜 eth0 或 ens33,真实名称要查:
- 运行 ip -br a 或 ip addr show,找状态为 UP 的以太网接口(如 enp0s3、eno1)
- 判断网络服务类型:
– Ubuntu 18.04+、20.04、22.04 等:检查 /etc/netplan/ 下有无 .yaml 文件 → 用 Netplan
– RHEL/CentOS/Rocky/AlmaLinux 8+:默认用 NetworkManager → 推荐 nmcli
– RHEL/CentOS 7:用传统 network 服务 → 配置 /etc/sysconfig/network-scripts/ifcfg-xxx
– Debian 或旧版 Ubuntu:可能走 /etc/network/interfaces
永久设置静态 IP(生产环境推荐)
修改配置文件后必须应用,否则不生效。注意缩进、空格、大小写等细节:
-
Ubuntu(Netplan):编辑 /etc/netplan/*.yaml,例如
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: false
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 114.114.114.114]
保存后执行 sudo netplan apply -
RHEL/CentOS/Rocky 7:编辑 /etc/sysconfig/network-scripts/ifcfg-enp0s3,确保含
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
ONBOOT=yes
然后运行 sudo systemctl restart network -
RHEL/CentOS/Rocky 8+:用命令一步到位
sudo nmcli connection modify enp0s3 ipv4.method manual
sudo nmcli connection modify enp0s3 ipv4.addresses 192.168.1.100/24
sudo nmcli connection modify enp0s3 ipv4.gateway 192.168.1.1
sudo nmcli connection modify enp0s3 ipv4.dns "8.8.8.8,114.114.114.114"
再重启连接:nmcli connection down enp0s3 && nmcli connection up enp0s3
启用动态 DHCP 获取 IP
DHCP 配置更简单,关键是关闭静态参数、开启自动获取:
- Netplan(Ubuntu):把对应网卡的 dhcp4: false 改成 dhcp4: true,删掉 addresses、gateway4、nameservers 等静态字段,再 netplan apply
- RHEL/CentOS 7:在 ifcfg-enp0s3 中设 BOOTPROTO=dhcp,删掉 IPADDR、NETMASK、GATEWAY 等行,保留 ONBOOT=yes,然后 systemctl restart network
- RHEL/CentOS 8+:运行 sudo nmcli connection modify enp0s3 ipv4.method auto,再 nmcli connection down && up
临时设置(仅当前会话有效)
适合调试或应急,重启或重连即失效:
- 添加 IP:sudo ip addr add 192.168.1.100/24 dev enp0s3
- 启用网卡(如未 up):sudo ip link set enp0s3 up
- 加默认路由:sudo ip route add default via 192.168.1.1 dev enp0s3
- 设 DNS:echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf











