ip 命令 #
ip
命令是一个强大的网络配置工具,用于显示和操作网络设备、路由、策略路由和隧道。它是iproute2
包的一部分,旨在替代旧的网络工具如ifconfig
、route
和arp
。
语法 #
ip [选项] 对象 {命令 | help}
常用对象 #
对象 | 描述 |
---|---|
link |
网络设备 |
address |
设备上的协议(IP 或 IPv6)地址 |
neighbour |
ARP 或 NDISC 缓存条目 |
route |
路由表条目 |
rule |
路由策略数据库中的规则 |
maddress |
多播地址 |
mroute |
多播路由缓存条目 |
tunnel |
IP 隧道 |
tuntap |
管理 TUN/TAP 设备 |
netns |
管理网络命名空间 |
vrf |
管理虚拟路由和转发 |
常用选项 #
选项 | 描述 |
---|---|
-V, -Version |
显示版本信息 |
-s, -stats, -statistics |
显示更详细的信息 |
-d, -details |
显示更详细的信息 |
-h, -human, -human-readable |
以人类可读的方式输出统计信息 |
-c, -color |
使用彩色输出 |
-br, -brief |
使用简短输出格式 |
-f, -family {inet|inet6|ipx|...} |
指定协议族 |
-4 |
IPv4 的简写 |
-6 |
IPv6 的简写 |
-o, -oneline |
每行输出一条记录 |
-r, -resolve |
使用系统的名称解析器解析主机名 |
-n, -netns <命名空间> |
在指定的网络命名空间中执行命令 |
-a, -all |
执行特定于对象的所有操作 |
常见用法 #
链路(网络设备)管理 #
1. 显示所有网络接口 #
ip link show
或简写为:
ip l
2. 显示特定网络接口 #
ip link show dev eth0
3. 激活网络接口 #
sudo ip link set eth0 up
4. 停用网络接口 #
sudo ip link set eth0 down
5. 更改 MAC 地址 #
sudo ip link set dev eth0 address 00:11:22:33:44:55
6. 设置 MTU 值 #
sudo ip link set dev eth0 mtu 9000
7. 设置接口别名(描述) #
sudo ip link set dev eth0 alias "Primary Network Interface"
8. 显示接口统计信息 #
ip -s link show dev eth0
地址管理 #
1. 显示所有 IP 地址 #
ip address show
或简写为:
ip a
2. 显示特定接口的 IP 地址 #
ip addr show dev eth0
3. 添加 IP 地址 #
sudo ip addr add 192.168.1.100/24 dev eth0
4. 添加 IPv6 地址 #
sudo ip addr add 2001:db8::1/64 dev eth0
5. 删除 IP 地址 #
sudo ip addr del 192.168.1.100/24 dev eth0
6. 添加带广播地址的 IP 地址 #
sudo ip addr add 192.168.1.100/24 broadcast 192.168.1.255 dev eth0
7. 添加次要 IP 地址 #
sudo ip addr add 192.168.2.100/24 dev eth0 label eth0:1
路由管理 #
1. 显示路由表 #
ip route show
或简写为:
ip r
2. 添加默认路由 #
sudo ip route add default via 192.168.1.1
3. 添加静态路由 #
sudo ip route add 10.0.0.0/24 via 192.168.1.254
4. 添加带设备的静态路由 #
sudo ip route add 10.0.0.0/24 dev eth0
5. 删除路由 #
sudo ip route del 10.0.0.0/24
6. 查看到特定目的地的路由 #
ip route get 8.8.8.8
7. 添加带指标的路由 #
sudo ip route add 10.0.0.0/24 via 192.168.1.254 metric 100
邻居(ARP)管理 #
1. 显示 ARP 表 #
ip neighbour show
或简写为:
ip n
2. 添加静态 ARP 条目 #
sudo ip neigh add 192.168.1.100 lladdr 00:11:22:33:44:55 dev eth0
3. 删除 ARP 条目 #
sudo ip neigh del 192.168.1.100 dev eth0
4. 清除 ARP 缓存 #
sudo ip neigh flush all
网络命名空间管理 #
1. 列出所有网络命名空间 #
ip netns list
2. 创建网络命名空间 #
sudo ip netns add mynetns
3. 删除网络命名空间 #
sudo ip netns delete mynetns
4. 在命名空间中执行命令 #
sudo ip netns exec mynetns ip addr
5. 将接口移动到命名空间 #
sudo ip link set eth0 netns mynetns
隧道管理 #
1. 创建 GRE 隧道 #
sudo ip tunnel add mytunnel mode gre remote 10.0.0.1 local 10.0.0.2 ttl 255
2. 激活隧道 #
sudo ip link set mytunnel up
3. 为隧道分配 IP 地址 #
sudo ip addr add 192.168.100.1/30 dev mytunnel
4. 删除隧道 #
sudo ip tunnel del mytunnel
实用示例 #
1. 查看网络接口的详细信息 #
ip -d link show dev eth0
2. 临时配置新的网络接口 #
sudo ip link add name br0 type bridge
sudo ip link set dev eth0 master br0
sudo ip link set dev br0 up
sudo ip addr add 192.168.1.100/24 dev br0
3. 设置多个 IP 地址 #
sudo ip addr add 192.168.1.100/24 dev eth0
sudo ip addr add 10.0.0.100/24 dev eth0
4. 查看路由表的统计信息 #
ip -s route show
5. 添加策略路由 #
sudo ip rule add from 192.168.1.100 table 10
sudo ip route add default via 192.168.1.1 table 10
6. 创建 VLAN 接口 #
sudo ip link add link eth0 name eth0.100 type vlan id 100
sudo ip link set dev eth0.100 up
sudo ip addr add 192.168.100.1/24 dev eth0.100
7. 创建虚拟以太网对 #
sudo ip link add veth0 type veth peer name veth1
sudo ip link set dev veth0 up
sudo ip link set dev veth1 up
8. 使用网络命名空间隔离网络 #
sudo ip netns add ns1
sudo ip link add veth0 type veth peer name veth1
sudo ip link set veth1 netns ns1
sudo ip addr add 192.168.1.1/24 dev veth0
sudo ip link set veth0 up
sudo ip netns exec ns1 ip addr add 192.168.1.2/24 dev veth1
sudo ip netns exec ns1 ip link set veth1 up
sudo ip netns exec ns1 ip route add default via 192.168.1.1
与传统命令的对比 #
传统命令 | ip 命令 | 描述 |
---|---|---|
ifconfig |
ip addr |
显示或设置网络接口的地址和参数 |
ifconfig eth0 up |
ip link set eth0 up |
激活网络接口 |
ifconfig eth0 down |
ip link set eth0 down |
停用网络接口 |
ifconfig eth0 192.168.1.1 |
ip addr add 192.168.1.1/24 dev eth0 |
设置 IP 地址 |
route |
ip route |
显示或操作路由表 |
route add default gw 192.168.1.1 |
ip route add default via 192.168.1.1 |
添加默认路由 |
arp -a |
ip neigh |
显示 ARP 表 |
netstat -r |
ip route |
显示路由表 |
netstat -i |
ip -s link |
显示网络接口统计信息 |
提示 #
ip
命令支持命令和参数的简写,例如ip a
代替ip address show
- 使用
-s
选项可以查看更详细的统计信息 - 使用
-d
选项可以查看更详细的设备信息 - 使用
-h
选项可以以人类可读的方式显示统计信息 - 使用
-br
选项可以获得更简洁的输出 - 使用
-o
选项可以使每条记录只占一行,便于处理 - 使用
-c
选项可以启用彩色输出,使信息更易读 - 大多数
ip
命令需要 root 权限才能执行,特别是进行配置更改时 - 使用
ip
命令进行的配置在系统重启后不会保留,要永久更改网络配置,应该修改网络配置文件 ip
命令是模块化的,可以通过安装额外的模块来扩展功能- 在脚本中使用
ip
命令时,建议使用-o
选项以便于解析输出