Skip to content

ip 命令: 显示或操纵路由、设备、策略路由和隧道

1. 命令简介

ip 是一个强大的网络配置工具,用于在 Linux 系统中显示和操作网络设备、路由、隧道和策略路由。它是 ifconfigroute 等传统网络工具的现代替代品,提供了更多功能和更灵活的语法。ip 命令通常默认安装在大多数现代 Linux 发行版中。

2. 基本语法

bash
ip [ OPTIONS ] OBJECT { COMMAND | help }

其中 OBJECT 可以是: link, address, route, rule, neigh, tunnel, maddr, mroute, monitor 等。

3. 常用选项详解

  • -4: 使用 IPv4 协议
  • -6: 使用 IPv6 协议
  • -s, -stats, -statistics: 显示更详细的信息
  • -d, -details: 显示详细信息
  • -h, -human, -human-readable: 以人类可读的方式显示统计信息
  • -o, -oneline: 将每条记录输出到一行,便于使用文本处理工具
  • -r, -resolve: 使用系统的域名解析来显示主机名而不是 IP 地址

4. 基础用法示例

4.1 显示网络接口信息

bash
ip link show

4.2 显示 IP 地址

bash
ip addr show

4.3 显示路由表

bash
ip route show

5. 高级用法和技巧

5.1 添加/删除 IP 地址

bash
ip addr add 192.168.1.10/24 dev eth0
ip addr del 192.168.1.10/24 dev eth0

5.2 启用/禁用网络接口

bash
ip link set eth0 up
ip link set eth0 down

5.3 添加/删除路由

bash
ip route add 10.0.0.0/24 via 192.168.1.1
ip route del 10.0.0.0/24

5.4 配置网络命名空间

bash
ip netns add mynetwork
ip netns exec mynetwork ip addr

6. 实际应用场景

6.1 网络接口监控脚本

bash
#!/bin/bash
# monitor_network.sh
interface="$1"
interval="$2"

if [ -z "$interface" ] || [ -z "$interval" ]; then
    echo "Usage: $0 <interface> <interval_in_seconds>"
    exit 1
fi

while true; do
    echo "$(date): Interface $interface statistics"
    ip -s link show $interface
    sleep $interval
done

6.2 自动配置 IP 地址脚本

bash
#!/bin/bash
# auto_configure_ip.sh
interface="$1"
ip_address="$2"

if [ -z "$interface" ] || [ -z "$ip_address" ]; then
    echo "Usage: $0 <interface> <ip_address/prefix>"
    exit 1
fi

ip addr flush dev $interface
ip addr add $ip_address dev $interface
ip link set $interface up

echo "Interface $interface configured with IP $ip_address"

7. 性能考虑

  • ip 命令通常比传统的 ifconfigroute 命令更快,因为它直接与内核通信。
  • 对于大型网络配置,使用 ip -batch 命令可以一次性应用多个配置更改,提高效率。
  • 在脚本中频繁调用 ip 命令时,考虑使用 ip -o 选项减少输出处理的复杂性。

8. 安全注意事项

  • ip 命令需要 root 权限才能进行大多数操作,谨慎使用 sudo。
  • 在多用户系统上修改网络配置时要格外小心,可能会影响其他用户。
  • 在远程系统上更改网络配置时,确保有备用的访问方法,以防意外断开连接。

9. 与其他工具的集成

  • 可以与 ss 命令结合使用,获取更详细的套接字统计信息。
  • tcpdumpwireshark 配合使用可以进行更深入的网络故障排查。
  • 在脚本中可以与 awk, sed 等工具结合,实现复杂的网络配置自动化。

10. 故障排除

  • 如果 ip 命令不可用,检查是否已安装 iproute2 包。
  • 使用 ip -V 检查版本,某些功能可能只在较新版本中可用。
  • 如果遇到权限问题,确保以适当的权限运行命令(通常需要 root 权限)。

11. 相关命令

  • ifconfig: 传统的网络接口配置工具(已被 ip 取代)
  • route: 传统的路由表管理工具(已被 ip route 取代)
  • ss: 用于调查套接字统计信息
  • netstat: 网络统计信息工具(正逐渐被 ss 取代)
  • ping: 测试网络连接性
  • traceroute: 显示数据包到达目标主机所经过的路由

通过掌握 ip 命令,用户可以更有效地管理和配置 Linux 系统的网络设置。无论是日常的网络故障排除、服务器配置,还是复杂的网络环境管理,ip 命令都是一个不可或缺的工具。它提供了灵活而强大的功能,使网络管理任务变得更加高效和精确。