Linux命令详解 —— IP 命令及永久配置

Linux命令详解 ------ IP 命令及永久配置

你希望全面掌握 ip 命令的用法,同时需要针对 CentOS 和 Ubuntu 两个主流发行版提供具体示例,接下来我会从命令概述、核心功能模块、分发行版实操、注意事项四个部分详细讲解,让你既能理解原理,又能直接落地使用。

一、ip 命令概述

ip 命令是 Linux 系统中用于配置网络接口、路由、ARP 缓存 等网络参数的核心工具,它是传统 ifconfigroutearp 等命令的升级版,功能更强大、语法更统一,目前已成为主流 Linux 发行版的默认网络配置工具。

核心特点

  1. root 权限执行(普通用户仅能查看,无法修改配置),需搭配 sudo

  2. 命令格式遵循 ip [选项] [对象] [操作] [参数],其中核心对象有:

    • addr(简写 a):网络地址(IP/子网掩码/广播地址)相关操作。

    • link(简写 l):网络链路(网卡本身,如启用/禁用、查看MAC地址)相关操作。

    • route(简写 r):路由表相关操作(网关、静态路由)。

    • neigh(简写 n):ARP 缓存(邻居表)相关操作。

二、ip 命令核心功能(通用,CentOS/Ubuntu 均适用)

以下示例中,统一使用网卡名 ens33(有线网卡,虚拟机默认常用)、wlan0(无线网卡),IP 段 192.168.1.0/24,网关 192.168.1.1,所有修改默认临时有效(重启失效),后续会单独讲永久配置。

模块 1:ip link(操作网卡本身)

用于查看、启用、禁用网卡,修改 MAC 地址等,核心操作如下:

1. 查看所有网卡的链路信息(含 MAC 地址、启用状态)
Bash 复制代码
# 完整命令
ip link show

# 简写命令(推荐,更高效)
ip l
2. 启用/禁用指定网卡
Bash 复制代码
# 启用 ens33 网卡(对应 ifconfig ens33 up)
sudo ip link set ens33 up

# 禁用 ens33 网卡(对应 ifconfig ens33 down)
sudo ip link set ens33 down
3. 修改网卡 MAC 地址(临时)
Bash 复制代码
# 先禁用网卡(修改 MAC 必须先禁用)
sudo ip link set ens33 down

# 修改 MAC 地址(格式:xx:xx:xx:xx:xx:xx)
sudo ip link set ens33 address 00:0c:29:aa:bb:cc

# 重新启用网卡
sudo ip link set ens33 up

模块 2:ip addr(操作网卡 IP 地址)

用于添加、删除、查看网卡的 IP 地址(IPv4/IPv6),是最常用的模块之一。

1. 查看所有网卡的 IP 地址信息
Bash 复制代码
# 完整命令
ip addr show

# 简写命令(推荐)
ip a
# 查看指定网卡的 IP 信息
ip a show ens33
2. 给网卡添加 IPv4 地址(单个/多个)
Bash 复制代码
# 基本语法:sudo ip addr add <IP/子网> dev <网卡名>
# 示例1:给 ens33 添加单个 IP 192.168.1.100/24
sudo ip addr add 192.168.1.100/24 dev ens33

# 示例2:给同一网卡添加多个 IP(别名,直接重复添加即可)
sudo ip addr add 192.168.1.101/24 dev ens33
sudo ip addr add 192.168.1.102/24 dev ens33
3. 删除网卡上的指定 IP 地址
Bash 复制代码
# 基本语法:sudo ip addr del <IP/子网> dev <网卡名>
sudo ip addr del 192.168.1.101/24 dev ens33
4. 清空网卡上的所有 IP 地址
Bash 复制代码
sudo ip addr flush dev ens33

模块 3:ip route(操作路由表)

用于查看、添加、删除路由规则,核心是配置网关(默认路由)和静态路由。

1. 查看路由表信息
Bash 复制代码
# 完整命令
ip route show

# 简写命令(推荐)
ip r
2. 添加默认网关(所有非本地流量都走该网关)
Bash 复制代码
# 基本语法:sudo ip route add default via <网关IP> dev <网卡名>
sudo ip route add default via 192.168.1.1 dev ens33
3. 添加静态路由(指定网段流量走特定网关)

示例:所有访问 10.0.0.0/24 网段的流量,通过 192.168.1.254 网关转发

Bash 复制代码
sudo ip route add 10.0.0.0/24 via 192.168.1.254 dev ens33
4. 删除路由规则
Bash 复制代码
# 删除默认网关
sudo ip route del default via 192.168.1.1 dev ens33

# 删除静态路由
sudo ip route del 10.0.0.0/24 via 192.168.1.254 dev ens33

模块 4:ip neigh(操作 ARP 缓存)

用于查看、管理邻居表(ARP 缓存,记录 IP 与 MAC 地址的映射关系)。

1. 查看 ARP 缓存列表
Bash 复制代码
# 完整命令
ip neigh show

# 简写命令(推荐)
ip n
2. 手动添加 ARP 静态条目(绑定 IP 与 MAC)
Bash 复制代码
sudo ip neigh add 192.168.1.50 lladdr 00:0c:29:dd:ee:ff dev ens33 permanent
3. 删除 ARP 缓存条目
Bash 复制代码
sudo ip neigh del 192.168.1.50 dev ens33
4. 刷新 ARP 缓存
Bash 复制代码
sudo ip neigh flush dev ens33

三、分发行版实操(永久配置,基于 ip 命令核心配置)

前面的 ip 命令修改都是临时生效 (系统重启/网卡重启后丢失),接下来针对 CentOS(以 7/8/9 为例)和 Ubuntu(以 20.04/22.04 为例),讲解如何将 ip 配置的内容永久保存

场景:永久配置静态 IP

需求:网卡 ens33,IP 192.168.1.100/24,网关 192.168.1.1,DNS 223.5.5.58.8.8.8

1. CentOS 系统(永久配置)

CentOS 采用 ifcfg 配置文件格式,配置文件存放于 /etc/sysconfig/network-scripts/,命名规则为 ifcfg-<网卡名>

步骤 1:编辑网卡配置文件
Bash 复制代码
# 编辑 ens33 的配置文件(如果文件不存在,直接创建即可)
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33
步骤 2:写入以下配置内容
TOML 复制代码
# 网卡类型(以太网)
TYPE=Ethernet
# 网卡名(与文件名后缀一致)
NAME=ens33
DEVICE=ens33
# 开机自动启用网卡(关键:确保永久配置生效)
ONBOOT=yes
# 配置类型(static 静态 IP,dhcp 自动获取)
BOOTPROTO=static
# 静态 IP 地址(对应 ip addr add 的内容)
IPADDR=192.168.1.100
# 子网掩码(对应 /24,等价于 255.255.255.0)
NETMASK=255.255.255.0
# 网关(对应 ip route add default via 的内容)
GATEWAY=192.168.1.1
# DNS 服务器(多个 DNS 用空格分隔或写为 DNS2=8.8.8.8)
DNS1=223.5.5.5
DNS2=8.8.8.8
# 禁用 IPv6(可选,根据需求开启/关闭)
IPV6INIT=no
步骤 3:生效配置(二选一即可)
Bash 复制代码
# 方式 1:重启网络服务(CentOS 7 适用,CentOS 8/9 部分环境兼容)
sudo systemctl restart network

# 方式 2:重启网卡(推荐,CentOS 7/8/9 均适用,不影响其他网卡)
sudo nmcli connection reload
sudo nmcli connection up ens33
步骤 4:验证配置
Bash 复制代码
# 查看 IP 是否永久生效
ip a show ens33

# 查看路由是否永久生效
ip r

# 测试网络连通性
ping www.baidu.com
2. Ubuntu 系统(永久配置)

Ubuntu 采用 netplan 配置工具,配置文件存放于 /etc/netplan/,后缀为 .yaml(注意:yaml 格式严格缩进,不能用制表符,只能用空格)。

步骤 1:找到 netplan 配置文件
Bash 复制代码
# 列出 /etc/netplan/ 下的配置文件(通常是 00-installer-config.yaml 或 50-cloud-init.yaml)
ls /etc/netplan/
步骤 2:编辑 netplan 配置文件
Bash 复制代码
# 编辑配置文件(替换为你找到的文件名)
sudo nano /etc/netplan/00-installer-config.yaml
步骤 3:写入以下配置内容
YAML 复制代码
network:
  # 配置版本(固定为 2,不可修改)
  version: 2
  # 以太网配置
  ethernets:
    # 网卡名(对应 ens33,需与实际网卡名一致)
    ens33:
      # 禁用 DHCP,使用静态 IP
      dhcp4: no
      # 静态 IP 地址(可配置多个,用逗号分隔,对应 ip addr add 多个 IP)
      addresses: [192.168.1.100/24]
      # 网关(对应 ip route add default via,注意缩进)
      routes:
        - to: default
          via: 192.168.1.1
      # DNS 服务器(对应 /etc/resolv.conf,可配置多个)
      nameservers:
        addresses: [223.5.5.5, 8.8.8.8]
步骤 4:生效配置(关键:netplan apply 无需重启系统)
Bash 复制代码
# 验证配置文件语法是否正确(可选,避免缩进错误)
sudo netplan try

# 应用配置(永久生效,立即生效,无需重启)
sudo netplan apply
步骤 5:验证配置
Bash 复制代码
# 查看 IP
ip a show ens33

# 查看路由
ip r

# 测试 DNS 和网络连通性
ping www.baidu.com

四、补充说明

  1. CentOS 与 Ubuntu 核心差异

    • 永久配置的配置文件格式和存放路径 不同(CentOS: ifcfg,Ubuntu: netplan)。

    • 配置生效命令不同(CentOS: restart network/nmcli,Ubuntu: netplan apply)。

    • ip 命令的临时操作在两个发行版中完全一致,无差异。

  2. 如何快速确认网卡名

    Bash 复制代码
    # 通用命令,两个发行版均适用
    ip link show
    ls /sys/class/net/
  3. 避免 IP 冲突 :添加静态 IP 前,可通过 ping <目标IP> 测试该 IP 是否被其他设备占用。

总结

  1. ip 命令是 Linux 网络配置的核心工具,核心模块为 addr(IP)、link(网卡)、route(路由)、neigh(ARP)。

  2. ip 命令临时配置在 CentOS 和 Ubuntu 中语法一致,永久配置需区分发行版(CentOS 用 ifcfg 文件,Ubuntu 用 netplan)。

  3. 永久配置生效后,可通过 ip aip r 验证,再用 ping 测试网络连通性。

相关推荐
yqcoder2 小时前
uni-app 之 下拉刷新
运维·服务器·uni-app
江畔何人初2 小时前
k8s中Role与networkpolicy区别
linux·运维·云原生
huohaiyu2 小时前
IP协议详解
服务器·网络·tcp/ip
互成2 小时前
电脑文件如何加密?2026年6款高安全性文件加密软件评测
运维
木子啊2 小时前
ThinkCMF命令行实战:自动化后台任务
运维·自动化
骂我的人都死了2 小时前
DevOps架构部署
运维·ubuntu·docker·k8s·github·devops·python3.11
Madison-No72 小时前
【Linux】一切皆文件的理解 && 缓冲区 && 简易设计libc库
linux·运维·服务器
AL3172 小时前
模拟实现NetDevOps全生命周期自动化网络运维
运维·docker·centos·ensp·netmiko
乾元2 小时前
实战案例:解析某次真实的“AI vs. AI”攻防演练
运维·人工智能·安全·web安全·机器学习·架构