ip命令

ip 命令 #

ip命令是一个强大的网络配置工具,用于显示和操作网络设备、路由、策略路由和隧道。它是iproute2包的一部分,旨在替代旧的网络工具如ifconfigroutearp

语法 #

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选项以便于解析输出