在Linux和Unix-like系统中,命令行修改IP地址是系统管理员和开发人员必备的技能之一,不同发行版可能使用不同的网络配置工具,但核心原理相似,本文将详细介绍在常见Linux发行版中通过命令行临时和永久修改IP地址的方法,包括静态IP和DHCP配置,并涉及网络配置文件的格式和常见故障排查。

在开始之前,需要明确两种IP配置方式:临时配置和永久配置,临时配置会立即生效,但重启系统或网络服务后失效;永久配置则通过修改配置文件实现,重启后仍保留设置,对于生产环境服务器,通常推荐使用永久配置,避免意外重启导致网络中断。
临时修改IP地址
临时修改IP地址适用于快速测试或临时网络调整,无需重启网络服务,以Ubuntu/Debian系统为例,使用ip命令可以轻松实现。ip命令是iproute2包的一部分,功能强大且现代,逐渐取代了传统的ifconfig命令。
假设要配置eth0网卡的IP地址为192.168.1.100,子网掩码为255.255.255.0,网关为192.168.1.1,可以使用以下命令:
sudo ip addr add 192.168.1.100/24 dev eth0 sudo ip route add default via 192.168.1.1
/24表示子网掩码255.255.255.0,是CIDR表示法,第一条命令为eth0网卡添加IP地址,第二条命令设置默认网关,若需临时修改DNS服务器,可以编辑/etc/resolv.conf文件:

sudo echo "nameserver 8.8.8.8" >> /etc/resolv.conf
这种方法的缺点是系统重启后配置会丢失,且重启网络服务(如sudo systemctl restart networking)也会清除临时配置。
永久修改IP地址
永久修改IP地址需要根据发行版选择不同的配置工具和文件,以下是主流发行版的配置方法:
Ubuntu/Debian (Netplan)
Ubuntu 18.04及更高版本默认使用Netplan作为网络配置工具,配置文件通常位于/etc/netplan/目录下,例如01-network-manager-all.yaml,编辑该文件,添加以下内容:
network:
version: 2
ethernets:
eth0:
dhcp4: no
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
配置完成后,运行以下命令使配置生效:

sudo netplan apply
Netplan支持YAML和JSON格式,语法简洁,适合现代网络环境。
CentOS/RHEL (NetworkManager)
CentOS 7及更高版本默认使用NetworkManager管理网络,可以通过nmtui(文本用户界面)或直接编辑配置文件,若使用命令行,首先查看网络连接名称:
nmcli connection show
假设连接名为eth0,修改静态IP配置:
sudo nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8 1.1.1.1" sudo nmcli connection up eth0
ipv4.method manual表示静态IP配置,up参数激活连接,配置文件通常位于/etc/sysconfig/network-scripts/目录下,如ifcfg-eth0,但直接编辑文件不如使用nmcli命令安全。
CentOS/RHEL (传统ifcfg文件)
对于较旧的CentOS版本或禁用NetworkManager的系统,需编辑ifcfg-eth0文件:
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
添加或修改以下参数:
TYPE=Ethernet BOOTPROTO=none IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8 DNS2=1.1.1.1 ONBOOT=yes
保存后重启网络服务:
sudo systemctl restart network
BOOTPROTO=none表示静态IP,ONBOOT=yes确保开机启动。
Arch Linux
Arch Linux使用netctl或systemd-networkd,以netctl为例,创建配置文件:
sudo cp /etc/netctl/examples/ethernet-static /etc/netctl/eth0
Connection='ethernet'
Interface=eth0
IP='static'
Address=('192.168.1.100/24')
Gateway='192.168.1.1'
DNS=('8.8.8.8' '1.1.1.1')
启用并启动网络:
sudo netctl enable eth0 sudo netctl start eth0
DHCP配置
若需从DHCP服务器获取IP地址,只需将配置中的静态IP参数改为DHCP即可,在Netplan中设置dhcp4: yes;在ifcfg文件中设置BOOTPROTO=dhcp;在nmcli中设置ipv4.method auto。
常见故障排查
修改IP地址后可能遇到网络不通的问题,可通过以下命令排查:
ip addr show:查看网卡IP地址配置是否正确。ping 192.168.1.1:测试网关是否可达。ping 8.8.8.8:测试外网连通性。systemctl status network或systemctl status NetworkManager:检查网络服务状态。journalctl -u network:查看网络服务日志,定位错误信息。
配置文件格式对比
不同发行版的网络配置文件格式差异较大,以下是常见格式的对比:
| 发行版 | 配置工具 | 配置文件位置 | 关键参数示例 |
|---|---|---|---|
| Ubuntu 18.04+ | Netplan | /etc/netplan/*.yaml | dhcp4: no, addresses: [192.168.1.100/24] |
| CentOS 7+ | NetworkManager | /etc/sysconfig/network-scripts/ | BOOTPROTO=none, IPADDR=192.168.1.100 |
| Arch Linux | netctl | /etc/netctl/* | IP='static', Address=('192.168.1.100/24') |
| 通用 | ifconfig | /etc/network/interfaces | iface eth0 inet static, address 192.168.1.100 |
相关问答FAQs
Q1: 修改IP地址后无法上网,如何排查?
A1: 首先检查IP地址、子网掩码、网关配置是否正确,使用ip addr show确认网卡IP设置,测试网关连通性(ping 网关IP),若不通可能是网关配置错误或物理线路问题,然后检查DNS配置,使用ping 8.8.8.8测试外网,若能通但域名无法解析,则需修改/etc/resolv.conf中的DNS服务器,检查防火墙规则(如iptables或firewalld)是否阻止了网络访问。
Q2: 如何在Linux中批量修改多块网卡的IP地址?
A2: 可以通过编写脚本批量配置,使用nmcli命令结合循环遍历网卡列表:
for iface in eth0 eth1 eth2; do sudo nmcli connection modify $iface ipv4.method manual ipv4.addresses "192.168.1.$((RANDOM%254+2))/24" ipv4.gateway 192.168.1.1 sudo nmcli connection up $iface done
对于Netplan,可以编辑配置文件,为每个网卡定义独立的网络段配置,然后运行netplan apply一次性生效,批量操作时需注意避免IP地址冲突,建议使用固定IP范围或DHCP分配。
