Linux IP配置最重要的结论是:临时配置用ip addr命令立即生效,永久配置需修改发行版对应配置文件,新手最容易搞混的是Ubuntu和CentOS的配置方式完全不同。
linux ip配置的两种核心场景:临时生效和永久生效
从事Linux运维的朋友都会遇到配置IP的需求,你刚装好一台服务器,或者虚拟机网络不通,第一反应就是去改IP,Linux配置IP不像Windows那样在图形界面点几下就完事,它需要你对命令行有一定了解。
临时配置IP适用于测试环境,服务器重启后就丢失配置,永久配置IP则写入配置文件,重启后依然保留,判断用哪种方式,主要看你的使用场景:临时调试网络、做实验,用临时配置就够了;生产环境服务器、需要长期稳定运行的机器,必须永久配置。
查看当前IP信息的三个常用命令
配置IP之前,先要看清当前网络状态,你可以在终端输入以下命令查看:
ip addr show:显示所有网络接口的IP地址和状态,目前最推荐使用ifconfig -a:老牌命令,部分最小化安装的系统可能没有ip route show:查看路由表,确认默认网关设置
ip addr show输出中最关键的信息是网络接口名称,常见的有eth0、ens33、ens5f0等,配置文件名称和接口名称一一对应,像eno16777736这种长名字,配置文件名也是这个,看清接口名再去修改配置,这是最要紧的第一步。
linux配置ip地址的完整命令实操方法
临时配置IP是我们日常排障、实验时最高频的操作,它不写入任何文件,重启后失效,适合快速验证网络连通性,比如你刚接了一台新设备,测试网络通不通,临时配置比改配置文件更快更安全。
用ip addr命令配置临时IP地址
现代Linux系统都支持ip命令,它是iproute2软件包提供的工具,临时添加IP的完整命令如下:
sudo ip addr add 192.168.1.100/24 dev ens33
这条命令给ens33接口添加一个IP地址192.168.1.100,子网掩码是255.255.255.0(用CIDR表示为/24),命令分解来看:
sudo:获取管理员权限ip addr add:添加地址的核心动作168.1.100/24:IP地址和子网前缀长度dev ens33:指定网络接口设备
删除临时IP同样简单,只需把add换成del:
sudo ip addr del 192.168.1.100/24 dev ens33
临时配置IP还需要设置默认网关,命令是:
sudo ip route add default via 192.168.1.1 dev ens33
这里的192.168.1.1是你的路由器或网关地址,如果不设置网关,跨网段通信会失败,能ping通同网段机器但访问不了外网。
临时配置IP后网络不通的排查顺序
配置完IP发现网络不通,别急着重复操作,按以下顺序排查:
- 检查IP是否真的添加成功:
ip addr show dev ens33,确认inet行是否有地址 - 检查网卡是否处于UP状态:
ip link set ens33 up,然后再次查看 - 检查网关路由是否生效:
ip route show,确认default条目存在 - 检查物理链路:网线插好没有,虚拟机的话检查虚拟网络编辑器设置

这类问题有一个明显特征:IP配置命令没报错但ping不通网关,多数情况下是网卡没有激活,或是NetworkManager服务在接管网络后又把配置覆盖了,临时配置适合绕开NetworkManager做快速测试,永久配置则要考虑和NetworkManager的兼容关系。
现在网上搜索“linux ip配置不生效怎么办”的帖子很多,核心问题大多出在配置文件和NetworkManager的冲突上,最直接的解决办法,就是统一用一种管理方式。
永久配置IP:Ubuntu和CentOS的配置差异
永久配置IP就要动配置文件了,绝大多数Linux新手迷惑的地方就在这:Ubuntu用netplan,CentOS 7用ifcfg文件,CentOS 8/9用nmcli,老系统的配置方式又不一样,这里分开说明,ubuntu静态ip配置和centos固定ip配置的核心区别在于配置文件的格式和管理工具。
Ubuntu 18.04及以上版本配置方法
Ubuntu 18.04之后使用netplan作为默认网络配置工具,配置文件位于/etc/netplan/目录下,通常是01-network-manager-all.yaml或50-cloud-init.yaml,在ubuntu静态ip配置的教程中,首先要找到YAML配置文件,修改前建议先备份原文件:
sudo cp /etc/netplan/01-netplan.yaml /etc/netplan/01-netplan.yaml.bak
然后用编辑器打开配置文件,写入以下内容:
network:
version: 2
ethernets:
ens33:
dhcp4: no
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 114.114.114.114
关键点在于dhcp4: no表示关闭自动获取IP,addresses指定静态IP,routes设置默认网关,nameservers配置DNS,保存后应用配置:
sudo netplan apply
这个命令让配置立即生效,而且不报错就说明YAML格式正确,如果语法错误会直接提示,不会像其他系统那样留下“配置了但没生效”的隐患,这也是ubuntu配置IP相对友善的地方。
CentOS/RHEL系列的ifcfg配置文件方法
centos固定ip配置的核心是修改/etc/sysconfig/network-scripts/ifcfg-ens33文件(接口名后缀对应你的网卡名),CentOS 7及之前版本使用network服务管理网络,配置方式如下:
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33
需要做以下调整:
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.1.100
PREFIX=24
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=114.114.114.114
这里最重要的是BOOTPROTO=static和ONBOOT=yes两个参数,BOOTPROTO把网卡设为静态模式,ONBOOT让网卡开机自启,很多人配置完重启后网络还是不通,检查ONBOOT是不是yes,十有八九是漏了。

修改完成后重启网络服务让配置生效:
sudo systemctl restart network
CentOS 8和RHEL 8之后的版本默认使用NetworkManager管理网络,推荐用nmcli命令行工具,更简洁也更少出错:
sudo nmcli connection modify ens33 ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8 114.114.114.114" ipv4.method manual sudo nmcli connection up ens33
不同Linux发行版配置文件位置对比
| 发行版 | 配置文件路径 | 推荐工具 | 生效命令 |
|---|---|---|---|
| Ubuntu 18.04+ | /etc/netplan/.yaml | netplan | netplan apply |
| CentOS 7 | /etc/sysconfig/network-scripts/ifcfg- | network服务 | systemctl restart network |
| CentOS/RHEL 8/9 | NetworkManager连接配置 | nmcli | nmcli connection up |
| Debian | /etc/network/interfaces | ifupdown | systemctl restart networking |
内核版本也在持续演进,ip命令的参数在某些场景下会有微调,比如较新内核对路由规则的支持更细,但底层原理一致,掌握了思路,换发行版也只是改改配置格式。
配置DNS解析和主机名:很多人会忘的一步
IP配置完成后,DNS设置往往被忽视,比如centos固定ip配置完成后发现能ping通IP但打不开域名,这是DNS文件没修改或没生效,DNS配置文件是/etc/resolv.conf,但在某些系统上该文件被NetworkManager接管,直接修改可能被覆盖。
优先推荐在IP配置文件里同时设置DNS参数,netplan的DNS在nameservers字段下配置,ifcfg文件的DNS在DNS1、DNS2参数中,nmcli则用ipv4.dns参数,只有这些方式不行的情况下,再考虑直接编辑/etc/resolv.conf。
主机名虽然和IP没有直接关系,但会影响某些服务的日志记录和域名解析测试,修改主机名用hostnamectl命令:
sudo hostnamectl set-hostname myserver
设置完成后重开终端,新主机名就生效了,在排查linux ip配置不生效的问题时,主机名也是一个辅助排查维度,特别是多机互联场景下主机名相互解析不通会造成很多困扰。
linux ip配置不生效怎么办:常见故障排查思路
配置完IP后遇到问题很正常,业内专家指出90%以上的IP配置问题源于配置文件格式错误或服务未重启,下面列出几个常见现象和对应的排查方向:
重启网络服务报错
先检查配置文件语法,用ip addr show观察接口状态,多数情况是ifcfg文件中的参数名拼写错误或YAML缩进不对。
IP配置正确但无法访问外网
依次执行ping 网关、ping 8.8.8.8、ping 域名三个测试,定位是哪一段断了,网关不通查路由表,公网IP不通查网关设置和防火墙,域名不通查DNS配置。

配置后IP地址消失了
这种情况常见于NetworkManager和network服务同时管理的场景,两个管理工具互相覆盖配置,解决办法是选择一个主要管理工具,禁掉另一个,Ubuntu上执行systemctl stop systemd-networkd,CentOS上执行systemctl disable NetworkManager来避免冲突。
虚拟机配置静态IP后无法上网
Vmware和VirtualBox的虚拟机上网模式需要确认是桥接还是NAT,桥接模式IP要保持在局域网同一网段,NAT模式则必须配置为虚拟网络编辑器允许的网段,不少人在NAT网络里配了和物理网络相同的地址,结果怎么都上不了网。
配置了IPv6地址但无法使用
IPv6和IPv4配置相互独立,确认系统是否启用了IPv6,sysctl net.ipv6.conf.all.disable_ipv6返回0才表示启用,某些云服务器默认关闭IPv6,需要在引导参数中开启。
linux指定ip配置的实用技巧
除了一般的静态IP配置,还有一些特殊需求的Linux IP配置方式:
- 配置多个IP地址(IP别名)到同一个网卡:
ip addr add 192.168.1.101/24 dev ens33,重复执行命令添加其他地址即可 - 配置DHCP自动获取IP:Ubuntu在netplan中设置
dhcp4: yes,CentOS将BOOTPROTO改为dhcp - 配置bonding(双网卡绑定)实现链路冗余或负载均衡,方式比单网卡复杂,需要加载bonding模块并创建bond配置文件
这些操作日常运维中遇到概率较低,但掌握Linux多IP配置的知识对系统管理员来说是加分项,熟练掌握这些技能后,面对复杂的网络环境也会从容很多。
Linux IP配置常见问题快速解答
问:Ubuntu系统用netplan配置IP后,如何确认配置生效了?
答:运行netplan apply后,用ip addr show查看网卡信息,确认地址和掩码与配置文件一致,也可以用ip route show检查默认网关,如果配置不生效,先看netplan try命令的提示,它会自动检测配置错误,超时后自动回滚,不会把系统网络搞挂。
问:CentOS 7系统中修改ifcfg-ens33文件后,为什么重启机器IP配置就丢了?
答:最直接的原因是ONBOOT参数设置为no,网卡开机时不会自动激活,那么你在文件里写好的静态IP配置自然也不会加载,确认ONBOOT=yes,同时检查NetworkManager是否被启用,如果你使用network服务管理网络,建议先禁用NetworkManager,这个服务同时存在时可能和network服务产生冲突。
问:Linux系统配置IP时,DNS和IP写在一个配置文件和单独放在resolv.conf里,有什么区别?
答:写在一个配置文件里更可靠,因为network服务或netplan在重启网络时会自动把DNS配置写入resolv.conf,而单独编辑/resolv.conf,在network服务或NetworkManager重启后,修改内容会被自动覆盖重置,有一个操作系统默认的规范,即动态生成的resolv.conf优于手动修改的内容,推荐在IP配置文件中一并设置DNS,这也是行业共识。
