🐧 Linux ip 命令详解

🐧 Linux ip 命令详解


🎯 学习目标

  1. 掌握 ip 命令的基本结构与常用子命令。
  2. 熟悉网络接口、路由表、ARP 表等的查看与配置方法。
  3. 能够在实际场景中使用 ip 命令排查网络问题(如 IP 冲突、网关不通等)。
  4. 了解 ip 命令与旧版 ifconfigroute 的差异及优势。

⚡ 核心重点(知识点提炼)

类别 命令 功能说明
网络接口管理 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

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/interfacesnetplan)才能持久化。

🛣 四、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 中,networkmanagersystemd-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 服务,用户反馈无法访问。你应该如何排查?

✅ 步骤如下:

  1. 检查网卡是否启用

    ip link show eth0
    

    确保看到 <UP> 字样。

  2. 检查是否有正确IP地址

    ip addr show eth0
    

    确保公网IP或私网IP存在。

  3. 检查默认路由是否存在

    ip route show
    

    应该包含类似 default via xxx.xxx.xxx.xxx dev eth0 的默认路由。

  4. 尝试 ping 网关

    ping 192.168.1.1
    

    如果失败,可能是交换机或云平台配置问题。

  5. 检查 ARP 缓存

    ip neigh show
    

    确认网关 MAC 地址是否正确。

  6. 抓包分析(配合 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 nmclinmtui 支持 GUI 配置
EulerOS 2.0+ ip, networkmanager 支持多种方式 华为云推荐使用
Alpine Linux ip, ifupdown-ng 精简系统 更适合容器环境

🧪 实验练习题(动手练一练)

  1. 给 eth0 添加一个别名 IP 地址 192.168.1.200/24,并验证是否生效。
  2. 删除当前默认路由,并重新添加一个新的默认网关。
  3. 创建一个 GRE 隧道,模拟跨网段通信。
  4. 使用 ip -s link 查看接口流量统计信息,观察变化。
  5. 使用 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 网络命名空间与虚拟网络设备》的学习,敬请期待!🚀


posted @ 2025-06-23 23:20  红尘过客2022  阅读(395)  评论(0)    收藏  举报