🐧 Linux ip 命令详解
🐧 Linux ip 命令详解
🎯 学习目标
- 掌握
ip命令的基本结构与常用子命令。 - 熟悉网络接口、路由表、ARP 表等的查看与配置方法。
- 能够在实际场景中使用
ip命令排查网络问题(如 IP 冲突、网关不通等)。 - 了解
ip命令与旧版ifconfig、route的差异及优势。
⚡ 核心重点(知识点提炼)
| 类别 | 命令 | 功能说明 |
|---|---|---|
| 网络接口管理 | ip link |
查看/启用/禁用网络接口 |
| IP地址配置 | ip addr |
添加/删除/查看IP地址 |
| 路由管理 | ip route |
添加/删除/查看路由规则 |
| ARP缓存查看 | ip neigh |
查看本地ARP缓存表 |
| 多播组管理 | ip maddr |
查看/添加/删除多播地址 |
| 隧道管理 | ip tunnel |
创建/删除 GRE/IP6GRE/VXLAN 隧道 |
📚 详细讲解
🧩 一、基本语法格式
ip [OPTIONS] OBJECT {COMMAND | help}
-
OBJECT 可以是:
link:网络设备(物理或虚拟)addr:IP 地址route:路由neigh:邻居(ARP 表)tunnel:隧道rule:策略路由规则maddr:多播地址- ...
-
OPTIONS 常见选项:
-s:显示统计信息(如收发包数量)-f或--family:指定协议族,如inet(IPv4)、inet6(IPv6)-4/-6:快捷方式,分别表示 IPv4 和 IPv6
🔍 二、ip link —— 管理网络接口
1. 查看所有网络接口状态
ip link show
输出示例:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 00:15:5d:xx:xx:xx brd ff:ff:ff:ff:ff:ff
📌 解释字段含义:
<UP>:接口已启用<LOWER_UP>:物理层连接正常mtu:最大传输单元(默认1500)qdisc:队列调度器类型(pfifo_fast 是默认的)
2. 启用/禁用接口
ip link set dev eth0 up # 启用eth0
ip link set dev eth0 down # 禁用eth0
⚠️ 注意事项:
- 如果你在远程服务器上操作,请勿误将当前连接的网卡禁用,否则可能断连。
- Ubuntu/CentOS/EulerOS 中都支持该命令。
📡 三、ip addr —— 管理IP地址
1. 查看所有IP地址
ip addr show
或者简写为:
ip a
输出示例:
2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500...
inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic eth0
valid_lft 86397sec preferred_lft 86397sec
inet6 fe80::xxxx:xxxx:xxxx:xxxx/64 scope link
valid_lft forever preferred_lft forever
📌 字段说明:
inet:IPv4 地址inet6:IPv6 地址brd:广播地址scope global:全局作用域(可被其他主机访问)dynamic:由 DHCP 获取(Ubuntu 默认行为)valid_lft:地址有效期(秒)
2. 添加/删除IP地址
ip addr add 192.168.1.200/24 dev eth0 # 添加一个新IP
ip addr del 192.168.1.200/24 dev eth0 # 删除指定IP
📌 注意:
- 添加多个 IP 到同一接口时,称为“IP Alias”,适用于虚拟主机等场景。
- 这些更改重启后会失效,需写入配置文件(如
/etc/network/interfaces或netplan)才能持久化。
🛣 四、ip route —— 管理路由表
1. 查看路由表
ip route show
输出示例:
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 scope link src 192.168.1.100
📌 字段说明:
default via:默认路由,通过 192.168.1.1 出去192.168.1.0/24:直连网络段src:源地址(用于 NAT 或多IP场景)
2. 添加静态路由
ip route add 10.0.0.0/24 via 192.168.1.2 dev eth0
📌 用途:
- 多网段通信,比如公司内网有多个 VLAN,需要手动配置路由。
3. 删除路由
ip route del 10.0.0.0/24
⚠️ 注意:
- 不要轻易删除默认路由,可能导致无法上网。
- 在 CentOS 和 Ubuntu 中,
networkmanager或systemd-networkd可能会覆盖手动设置。
🕵️♂️ 五、ip neigh —— ARP 缓存管理
1. 查看本地 ARP 表
ip neigh show
输出示例:
192.168.1.1 dev eth0 lladdr 00:11:22:33:44:55 REACHABLE
📌 说明:
- 显示本机缓存的 MAC 地址(局域网内其他设备的硬件地址)
REACHABLE:可达状态;STALE:过期但未确认
2. 清除 ARP 条目
ip neigh flush dev eth0
📌 用途:
- 解决 ARP 欺骗攻击
- 强制重新获取 MAC 地址
🧱 六、ip tunnel —— 隧道管理(进阶)
1. 创建 GRE 隧道
ip tunnel add gre1 mode gre remote 192.168.2.100 local 192.168.1.100 ttl 255
ip link set gre1 up
ip addr add 10.10.10.1/24 dev gre1
📌 用途:
- 实现跨网络通信(如两个不同 VPC 之间的点对点连接)
- VXLAN、IP6GRE 等也支持
📌 注意:
- 需确保两端设备都配置相同参数
- Ubuntu/CentOS 支持良好,EulerOS 需安装相应模块
🧪 七、实战案例:排查网络不通问题
🧩 场景描述:
你的阿里云 ECS 上部署了一个 Web 服务,用户反馈无法访问。你应该如何排查?
✅ 步骤如下:
-
检查网卡是否启用
ip link show eth0确保看到
<UP>字样。 -
检查是否有正确IP地址
ip addr show eth0确保公网IP或私网IP存在。
-
检查默认路由是否存在
ip route show应该包含类似
default via xxx.xxx.xxx.xxx dev eth0的默认路由。 -
尝试 ping 网关
ping 192.168.1.1如果失败,可能是交换机或云平台配置问题。
-
检查 ARP 缓存
ip neigh show确认网关 MAC 地址是否正确。
-
抓包分析(配合 tcpdump 使用)
tcpdump -i eth0 port 80 -nn查看是否有请求到达服务器。
🧠 小贴士:ip vs ifconfig
| 功能 | ip 命令 |
ifconfig |
|---|---|---|
| 查看IP | ✅ ip addr |
✅ |
| 修改IP | ✅ ip addr add/del |
✅(已弃用) |
| 查看路由 | ✅ ip route |
✅ |
| 修改路由 | ✅ ip route add/del |
✅(已弃用) |
| 查看ARP | ✅ ip neigh |
✅ |
| 查看统计信息 | ✅ ip -s link |
✅ |
| 支持IPv6 | ✅ | ❌(部分支持) |
| 支持策略路由 | ✅ | ❌ |
| 支持命名空间 | ✅ | ❌ |
📌 建议:
- 新项目请统一使用
ip命令。 ifconfig已被标记为过时,在某些发行版中甚至不再预装(如 Ubuntu 20.04+)。
🧩 不同发行版差异小结
| 发行版 | 默认工具 | 网络管理方式 | 特殊说明 |
|---|---|---|---|
| Ubuntu 20.04+/Debian 11+ | ip, systemd-networkd |
Netplan YAML | 推荐使用 netplan 配置 |
| CentOS 7+/RHEL 8+ | ip, NetworkManager |
nmcli 或 nmtui |
支持 GUI 配置 |
| EulerOS 2.0+ | ip, networkmanager |
支持多种方式 | 华为云推荐使用 |
| Alpine Linux | ip, ifupdown-ng |
精简系统 | 更适合容器环境 |
🧪 实验练习题(动手练一练)
- 给 eth0 添加一个别名 IP 地址 192.168.1.200/24,并验证是否生效。
- 删除当前默认路由,并重新添加一个新的默认网关。
- 创建一个 GRE 隧道,模拟跨网段通信。
- 使用
ip -s link查看接口流量统计信息,观察变化。 - 使用
ip neigh flush all清空 ARP 缓存,再执行ping www.baidu.com观察 ARP 表更新。
🧩 拓展阅读
man ip:查看完整帮助文档ip --help:快速查看可用子命令- 《Understanding Linux Network Internals》——深入理解 Linux 网络架构
- Linux 网络命名空间实践:
ip netns命令详解
🎉 恭喜!你已经掌握了 Linux 中最强大的网络管理命令之一 ip,下一章节我们将进入《Linux 网络命名空间与虚拟网络设备》的学习,敬请期待!🚀

浙公网安备 33010602011771号