菜鸟科技网

命令行如何修改IP地址?

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

命令行如何修改IP地址?-图1
(图片来源网络,侵删)

在开始之前,需要明确两种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文件:

命令行如何修改IP地址?-图2
(图片来源网络,侵删)
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]

配置完成后,运行以下命令使配置生效:

命令行如何修改IP地址?-图3
(图片来源网络,侵删)
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使用netctlsystemd-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地址后可能遇到网络不通的问题,可通过以下命令排查:

  1. ip addr show:查看网卡IP地址配置是否正确。
  2. ping 192.168.1.1:测试网关是否可达。
  3. ping 8.8.8.8:测试外网连通性。
  4. systemctl status networksystemctl status NetworkManager:检查网络服务状态。
  5. 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服务器,检查防火墙规则(如iptablesfirewalld)是否阻止了网络访问。

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分配。

分享:
扫描分享到社交APP
上一篇
下一篇