ip ¶
第一部分:ip 命令是什么? ¶
- 单词意思:
ip是 Internet Protocol(互联网协议)的缩写。 - 命令目的:它是 Linux 系统中用来显示和配置网络接口、路由、隧道等网络参数的核心工具。简单说,它就是用来管理和查看你电脑网络一切状况的“控制中心”。
- 作用:它取代了旧时代的
ifconfig、route和arp等命令,功能更强大、更统一、更现代化。
第二部分:总览语法结构(分步拆解) ¶
Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
ip [ -force ] -batch filename
这个结构告诉我们,ip 命令由几个关键部分组成,顺序很重要:
ip:命令本身。[ OPTIONS ]:可选参数,用来改变ip命令的行为(比如显示更详细的信息,或者改变输出格式)。OBJECT:必须指定。你要操作的对象是什么?是网卡(link)?是IP地址(address)?还是路由表(route)?{ COMMAND | help }:必须指定。对选定的对象执行什么操作?是add(添加)、delete(删除)、show(查看)还是flush(清空)?如果输入help,会显示该对象支持的操作帮助。
简单记忆公式:ip 对 什么对象 (OBJECT) 做 什么操作 (COMMAND),并且可以带上 怎么做的参数 (OPTIONS)。
第三部分:详解 OBJECT(操作对象) ¶
OBJECT 是你操作的目标。你给出的列表很长,但日常工作中90%的情况只用其中几个。我们分成高频必学和了解即可两类。
🔥 高频必学 OBJECT(你必须掌握) ¶
| OBJECT | 意思 | 目的和作用 |
|---|---|---|
link |
网络链路/接口 | 指物理或虚拟的网卡设备(如 eth0, wlan0, lo)。 作用:查看网卡状态(UP/DOWN)、MAC地址、MTU值,或开启/关闭网卡。 |
address (或 addr) |
IP地址 | 指分配给网卡的IP地址(IPv4或IPv6)。 作用:查看、添加、删除、修改网卡上的IP地址。这是最常用的操作。 |
route |
路由表 | 指数据包如何从本机到达目标网络的路径规则。 作用:查看路由表,添加或删除静态路由(比如设置网关)。 |
neighbor (或 neighbour) |
邻居(ARP表) | 指在同一局域网内,与本机通信的其他设备的IP和MAC地址映射表。 作用:查看或修改ARP缓存表。 |
📚 了解即可的 OBJECT(见到认识就行) ¶
| OBJECT | 意思 | 用途简述 |
|---|---|---|
netns |
网络命名空间 | 用于网络虚拟化,隔离不同的网络栈(容器技术常用)。 |
rule |
路由策略数据库 | 用于高级路由,决定数据包使用哪个路由表。 |
maddress |
多播地址 | 管理多播(Multicast)MAC地址。 |
tunnel |
隧道 | 配置IP隧道(如GRE、IPIP)。 |
xfrm |
IPsec框架 | 配置IPsec VPN加密策略。 |
vrf |
虚拟路由转发 | 用于电信级的多路由表实例。 |
| 其他 | … | 用于非常特定的网络场景,初学者可暂不深究。 |
第四部分:详解 OPTIONS(选项参数) ¶
OPTIONS 是用来调整命令输出和行为的小开关。
-s[tatistics]:(常用) 显示更详细的统计信息。比如ip -s link会显示网卡收发了多少数据包、有多少错误。-d[etails]:(常用) 显示更详细的技术细节。-h[uman-readable]:以人类易读的单位显示数字(比如 1.5K, 2.3M 而不是 2345)。-f[amily] { inet \| inet6 \| link }:指定协议族。inet= IPv4(最常用)inet6= IPv6link= 数据链路层(MAC地址)
-4: 等同于-f inet,只显示IPv4信息。-6: 等同于-f inet6,只显示IPv6信息。-br[ief]:(超级常用) 以简洁的表格形式输出,只显示核心信息,非常清晰。-j[son]:以JSON格式输出,方便程序解析。-p[retty]:与-j配合,让JSON输出有缩进,更易读。-o[neline]:每行显示一个条目,方便用grep等文本工具过滤。-V[ersion]:显示ip命令的版本号。
第五部分:具体命令实战讲解(一次学会!) ¶
我们通过最常用的三个场景来实战,让你彻底掌握。
场景一:查看网络接口(网卡)状态 ¶
命令:ip link show
- 目的:查看所有网卡的物理/虚拟状态。
- 讲解:
ip是命令。link是对象(网卡)。show是操作(显示)。show可以省略不写,即ip link等价于ip link show。
更推荐的方式:ip -br link show
-
-br 让输出简洁美观。
-
输出示例:
text
lo UNKNOWN 00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> eth0 UP 08:00:27:ab:cd:ef <BROADCAST,MULTICAST,UP,LOWER_UP> wlan0 DOWN 02:42:ac:11:00:02 <BROADCAST,MULTICAST> -
解读:
- 第一列:网卡名称(
lo是本地回环,eth0是网线接口,wlan0是无线网卡)。 - 第二列:状态(
UP开启,DOWN关闭,UNKNOWN未知)。 - 第三列:MAC地址(物理地址)。
- 第一列:网卡名称(
场景二:查看和管理 IP 地址 ¶
查看所有IP地址:ip address show (或者 ip a,这是最简写法)
-
目的:查看所有网卡配置的IP地址。
-
推荐:
ip -br address show -
输出示例:
text
lo UNKNOWN 127.0.0.1/8 ::1/128 eth0 UP 192.168.1.100/24 fe80::a00:27ff:feab:cdef/64 -
解读:清晰显示了每个网卡上配置的IPv4和IPv6地址及子网掩码位数(如
/24)。
添加一个IP地址:ip address add 192.168.1.200/24 dev eth0
- 目的:给网卡
eth0添加一个额外的IP地址(可以绑定多个IP)。 - 讲解:
address add是操作(添加地址)。192.168.1.200/24是要添加的IP和子网掩码。dev eth0指定设备(device)是eth0。
删除一个IP地址:ip address del 192.168.1.200/24 dev eth0
场景三:查看和管理路由表 ¶
查看路由表:ip route show (或 ip r)
-
目的:查看数据包走向外部世界的路径规则。
-
输出示例:
text
default via 192.168.1.1 dev eth0 proto dhcp metric 100 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100 metric 100 -
解读:
- 第一行是默认路由(
default):意思是所有去外网的数据包,都通过网关192.168.1.1从eth0网卡发出。 - 第二行是直连路由:意思是访问
192.168.1.0/24这个局域网,直接通过eth0网卡发送,来源IP是192.168.1.100。
- 第一行是默认路由(
添加一条静态路由:ip route add 10.0.0.0/24 via 192.168.1.254 dev eth0
- 目的:告诉系统,去往
10.0.0.0/24网络的数据包,要交给192.168.1.254这个下一跳路由器处理。 - 讲解:
route add是操作(添加路由)。10.0.0.0/24是目标网络。via 192.168.1.254是下一跳网关地址。dev eth0是从哪个网卡发出。
删除一条静态路由:ip route del 10.0.0.0/24
第六部分:特殊用法解析 ¶
你给出的总览中还有一行:ip [ -force ] -batch filename
- 意思:这是批处理模式。
- 目的:从一个文件中读取一系列
ip命令,一次性执行。 - 作用:方便自动化配置,比如系统启动时批量设置网络。
- 用法:创建一个文本文件,里面按行写好
ip命令,然后执行ip -batch 文件名。如果加上-force,即使中间有命令出错,也会强制继续执行后面的命令。
第七部分:核心总结与速查口诀 ¶
- 记住公式:
ip+(选项)+ 对象 + 操作。 - 记住三个核心对象:
link→ 看网卡(物理/状态/MAC)。addr→ 看IP(增删查改IP地址)。route→ 看路由(查网关/设路径)。
- 记住三个最佳选项:
-br→ 简洁清晰(强烈推荐!)。-s→ 看统计(流量/错误)。-4/-6→ 只看IPv4或IPv6。
最后,一个万能秘诀:任何时候不记得怎么用了,输入 ip OBJECT help,例如:
ip addr help→ 它会告诉你所有关于address对象的可用操作和参数。ip link help→ 它会告诉你所有关于link对象的操作。
这比任何手册都直接!你已经掌握了学习 ip 命令的终极方法。现在,去你的Linux终端试试这些命令吧!
ip 命令实战案例大全(Bash 环境) ¶
说明:所有命令需在 root 权限下执行(或使用
sudo),案例基于 Linux 系统。
一、查看网络信息(最常用) ¶
1. 查看所有网络接口状态 ¶
ip link show
解释:显示所有网卡的物理状态(UP/DOWN)、MAC地址、MTU值。
输出示例:
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 08:00:27:ab:cd:ef brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
更简洁的方式(强烈推荐):
ip -br link show
输出示例:
lo UNKNOWN 00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP>
eth0 UP 08:00:27:ab:cd:ef <BROADCAST,MULTICAST,UP,LOWER_UP>
wlan0 DOWN 02:42:ac:11:00:02 <BROADCAST,MULTICAST>
2. 查看所有 IP 地址 ¶
ip addr show
# 或者简写
ip a
解释:显示所有网卡配置的 IPv4 和 IPv6 地址。
输出示例:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic eth0
valid_lft 86382sec preferred_lft 86382sec
inet6 fe80::a00:27ff:feab:cdef/64 scope link
valid_lft forever preferred_lft forever
更简洁的方式:
ip -br addr show
输出示例:
lo UNKNOWN 127.0.0.1/8 ::1/128
eth0 UP 192.168.1.100/24 fe80::a00:27ff:feab:cdef/64
3. 查看指定网卡的详细信息 ¶
ip addr show eth0
解释:只查看 eth0 网卡的 IP 地址配置。
4. 查看路由表 ¶
ip route show
# 或者简写
ip r
解释:显示系统的路由表,决定数据包如何到达目标网络。
输出示例:
default via 192.168.1.1 dev eth0 proto dhcp metric 100
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100 metric 100
解读:
- 第一行:默认网关是
192.168.1.1,通过eth0网卡出去 - 第二行:访问
192.168.1.0/24局域网,直接从eth0网卡发送
5. 查看 ARP 表(邻居表) ¶
ip neigh show
# 或者
ip neighbour show
解释:显示局域网内与本机通信的其他设备的 IP 和 MAC 地址映射。
输出示例:
192.168.1.1 dev eth0 lladdr 00:11:22:33:44:55 REACHABLE
192.168.1.101 dev eth0 lladdr aa:bb:cc:dd:ee:ff STALE
192.168.1.102 dev eth0 lladdr 11:22:33:44:55:66 DELAY
更简洁的方式:
ip -br neigh show
二、配置 IP 地址 ¶
6. 添加 IP 地址 ¶
ip addr add 192.168.1.200/24 dev eth0
解释:给 eth0 网卡添加一个额外的 IP 地址(可以绑定多个 IP)。
验证:
ip addr show eth0
# 会看到新增的 192.168.1.200/24
7. 添加带标签的 IP 地址(虚拟网卡) ¶
ip addr add 192.168.1.201/24 dev eth0 label eth0:1
解释:创建一个虚拟网卡 eth0:1,配置独立 IP。常用于服务器托管多个网站。
验证:
ip addr show eth0:1
# 或者
ifconfig -a
8. 删除 IP 地址 ¶
ip addr del 192.168.1.200/24 dev eth0
解释:删除之前添加的 IP 地址。
9. 清空网卡所有 IP 地址 ¶
ip addr flush dev eth0
⚠️ 危险操作:会删除 eth0 上所有 IP 地址,可能导致网络断开!谨慎使用。
三、管理网络接口(启用/禁用) ¶
10. 启用网卡 ¶
ip link set eth0 up
解释:开启 eth0 网卡(相当于 ifconfig eth0 up)。
11. 禁用网卡 ¶
ip link set eth0 down
解释:关闭 eth0 网卡(相当于 ifconfig eth0 down)。
⚠️ 注意:禁用网卡会断开所有网络连接,远程操作时谨慎使用!
12. 修改 MTU 值 ¶
ip link set eth0 mtu 9000
解释:将 eth0 的 MTU(最大传输单元)修改为 9000(巨型帧),提高大文件传输效率。
验证:
ip link show eth0 | grep mtu
13. 修改 MAC 地址 ¶
ip link set eth0 address 00:11:22:33:44:55
解释:修改网卡的 MAC 地址(需要先 down 再修改,最后 up)。
完整步骤:
ip link set eth0 down
ip link set eth0 address 00:11:22:33:44:55
ip link set eth0 up
四、路由管理 ¶
14. 添加默认网关 ¶
ip route add default via 192.168.1.1 dev eth0
解释:设置默认网关为 192.168.1.1,所有外网流量走 eth0。
15. 添加静态路由(到特定网络) ¶
ip route add 10.0.0.0/24 via 192.168.1.254 dev eth0
解释:去往 10.0.0.0/24 网络的数据包,交给 192.168.1.254 路由器处理。
16. 添加静态路由(到特定主机) ¶
ip route add 8.8.8.8 via 192.168.1.1 dev eth0
解释:访问 8.8.8.8 这个 IP 时,走 192.168.1.1 网关。
17. 删除路由 ¶
ip route del 10.0.0.0/24
# 或删除默认路由
ip route del default
18. 查看指定目标的路由 ¶
ip route get 8.8.8.8
解释:查看系统会通过哪条路径访问 8.8.8.8。
输出示例:
8.8.8.8 via 192.168.1.1 dev eth0 src 192.168.1.100 uid 1000
cache
五、查看网络统计信息 ¶
19. 查看网卡流量统计 ¶
ip -s link show eth0
解释:显示 eth0 网卡的收发包数量、错误数、丢包数等统计信息。
输出示例:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 08:00:27:ab:cd:ef brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
123456789 123456 0 0 0 0
TX: bytes packets errors dropped carrier collsns
987654321 987654 0 0 0 0
更详细的统计(双倍细节):
ip -s -s link show eth0
20. 查看所有网卡的流量统计 ¶
ip -s link
六、网络命名空间(高级用法) ¶
21. 创建网络命名空间 ¶
ip netns add myns
解释:创建一个名为 myns 的网络命名空间,用于隔离网络环境(容器技术基础)。
22. 查看所有命名空间 ¶
ip netns list
23. 在命名空间中执行命令 ¶
ip netns exec myns ip addr show
解释:在 myns 命名空间中查看 IP 地址。
24. 删除命名空间 ¶
ip netns delete myns
七、批量与脚本操作 ¶
25. 批量执行 ip 命令(从文件读取) ¶
ip -batch commands.txt
解释:从 commands.txt 文件读取并执行多条 ip 命令。
commands.txt 内容示例:
addr add 192.168.1.200/24 dev eth0
link set eth0 up
route add default via 192.168.1.1
强制执行(遇到错误继续):
ip -force -batch commands.txt
26. 配合 grep 过滤查询 ¶
# 查看所有包含 "192.168" 的 IP 配置
ip addr show | grep 192.168
# 查看 UP 状态的网卡
ip link show | grep UP
# 查看正在使用的路由
ip route show | grep via
27. 配合 awk 提取特定信息 ¶
# 提取所有网卡的 IP 地址
ip -4 addr show | grep inet | awk '{print $2}'
# 提取所有网卡名称
ip -br link show | awk '{print $1}'
# 提取默认网关 IP
ip route show default | awk '{print $3}'
28. 监控网络状态变化(持续输出) ¶
# 监控路由表变化
ip monitor route
# 监控所有网络事件
ip monitor all
# 监控特定对象
ip monitor address link route
八、快速排错案例 ¶
场景 1:网络不通,检查网卡状态 ¶
# 步骤1:查看网卡是否 UP
ip link show eth0
# 步骤2:查看是否配置 IP
ip addr show eth0
# 步骤3:查看默认路由是否存在
ip route show default
场景 2:IP 冲突,需要释放并重新获取 DHCP ¶
# 释放 IP(清空)
ip addr flush dev eth0
# 重新获取(使用 dhclient 或 systemd-networkd)
dhclient -v eth0
场景 3:添加临时 IP 用于测试 ¶
# 添加测试 IP
ip addr add 192.168.1.250/24 dev eth0
# 测试连通性
ping 192.168.1.250
# 测试完后删除
ip addr del 192.168.1.250/24 dev eth0
场景 4:双网卡配置策略路由 ¶
# 为 eth1 添加独立路由表(需配合 /etc/iproute2/rt_tables)
ip route add 0.0.0.0/0 via 10.0.0.1 dev eth1 table 100
ip rule add from 10.0.0.100/32 table 100
解释:让从 eth1 网卡 IP 进来的数据包,从同一个网卡出去(对称路由)。
九、颜色与格式化输出 ¶
29. 彩色输出(便于阅读) ¶
ip -color link show
ip -color addr show
30. JSON 格式输出(便于程序解析) ¶
ip -json addr show eth0
ip -json -pretty addr show eth0 # 格式化显示
31. 单行输出(便于 grep) ¶
ip -o link show
ip -o addr show | grep eth0
十、常用组合快捷键速查表 ¶
| 操作目标 | 查看命令 | 添加命令 | 删除命令 | 修改命令 |
|---|---|---|---|---|
| 网卡状态 | ip link show |
- | - | ip link set eth0 up/down |
| IP 地址 | ip addr show |
ip addr add |
ip addr del |
ip addr flush |
| 路由表 | ip route show |
ip route add |
ip route del |
ip route replace |
| ARP 表 | ip neigh show |
ip neigh add |
ip neigh del |
ip neigh flush |
| 命名空间 | ip netns list |
ip netns add |
ip netns delete |
- |
十一、终极排错组合拳 ¶
当网络出问题时,按顺序执行以下命令快速诊断:
# 1. 查看所有网卡状态
ip -br link show
# 2. 查看所有 IP 配置
ip -br addr show
# 3. 查看默认路由
ip route show default
# 4. 查看网关 ARP
ip neigh show | grep -E 'REACHABLE|STALE'
# 5. 查看网卡流量统计(排查丢包)
ip -s link show eth0 | grep -A 5 "RX:\|TX:"
总结 ¶
- 日常查看:用
ip -br addr和ip -br link最清晰 - 添加 IP:
ip addr add IP/掩码 dev 网卡 - 添加路由:
ip route add 目标网段 via 网关 dev 网卡 - 排错:按照 "状态 → IP → 路由 → ARP" 顺序检查
- 不记得语法:用
ip 对象 help查看帮助(如ip addr help)