Linux 系统中强大的 ip 命令已经彻底取代了传统的 ifconfig,成为管理网络接口、IP 地址、路由表和邻居表的核心工具。本文将从基础用法到高级技巧,全面带你掌握 ip 命令的精髓,助你轻松驾驭 Linux 网络配置。
引言:告别 ifconfig,拥抱 ip
在 Linux 系统管理中,网络配置是核心任务之一。过去,我们习惯使用 ifconfig 来查看和配置网络接口。然而,随着 Linux 内核和网络工具的发展,功能更强大、设计更现代的 ip 命令已经完全取代了 ifconfig。它不仅提供了更细致的网络控制,还在命令语法和信息呈现上做了优化。如果你还在使用 ifconfig,那么是时候升级你的技能树了!
ip 命令基础:结构与对象
ip 命令的结构非常清晰:ip [ OPTIONS ] OBJECT { COMMAND | help }。
- OPTIONS: 全局选项,例如
-s(显示更多统计信息),-d(显示详情),-json(JSON 输出)。 - OBJECT: 要操作的网络对象,这是
ip命令的核心。常见的对象包括:link:网络设备(如网卡)属性。addr:IP 地址。route:路由表。neigh:邻居表(ARP/NDP 缓存)。
- COMMAND: 对特定对象执行的操作,如
show(显示),add(添加),del(删除),set(设置)。
管理网络接口:ip link
ip link 对象用于管理和显示网络设备的属性,它提供了比 ifconfig 更详细的信息。
查看网络接口状态
显示所有网络接口及其状态:
ip link show只显示特定接口(例如 eth0 或 enp0s3):
ip link show dev eth0显示详细统计信息:
ip -s link show启用/禁用网络接口
启用接口:
ip link set dev eth0 up禁用接口:
ip link set dev eth0 down修改接口属性
修改 MTU (最大传输单元):
ip link set dev eth0 mtu 9000更改 MAC 地址:
ip link set dev eth0 address 00:11:22:33:44:55重命名接口(注意:需要先禁用接口):
ip link set dev eth0 downip link set dev eth0 name eth1ip link set dev eth1 up
管理 IP 地址:ip addr
ip addr 对象用于管理网络接口上的 IP 地址配置。
查看 IP 地址
显示所有接口的 IP 地址:
ip addr show只显示特定接口的 IP 地址:
ip addr show dev eth0只显示 IPv4 地址:
ip -4 addr show只显示 IPv6 地址:
ip -6 addr show添加 IP 地址
为接口添加一个 IP 地址(带子网掩码):
ip addr add 192.168.1.100/24 dev eth0添加一个带有广播地址的 IP 地址:
ip addr add 192.168.1.101/24 broadcast 192.168.1.255 dev eth0删除 IP 地址
从接口删除一个 IP 地址:
ip addr del 192.168.1.100/24 dev eth0删除所有属于某个接口的 IP 地址是不推荐的,一般都是删除特定的地址。
管理路由表:ip route
ip route 对象用于管理系统的路由表,决定数据包如何被转发。
查看路由表
显示当前系统的所有路由:
ip route show显示默认路由:
ip route show default通过源地址过滤路由:
ip route show src 192.168.1.100添加路由
添加一个默认路由(网关):
ip route add default via 192.168.1.1 dev eth0添加一个到特定网络的路由:
ip route add 10.0.0.0/8 via 192.168.1.254 dev eth0添加一个到特定主机的路由:
ip route add 172.16.1.100 via 192.168.1.254 dev eth0删除路由
删除一个默认路由:
ip route del default via 192.168.1.1 dev eth0删除一个到特定网络的路由:
ip route del 10.0.0.0/8 via 192.168.1.254 dev eth0管理邻居表:ip neigh
ip neigh 对象用于管理 ARP 缓存 (IPv4) 和 NDP 缓存 (IPv6),它们将 IP 地址映射到 MAC 地址。
查看邻居表
显示所有邻居条目:
ip neigh show只显示特定接口的邻居:
ip neigh show dev eth0添加静态邻居
添加一个静态 ARP 条目:
ip neigh add 192.168.1.200 lladdr 00:aa:bb:cc:dd:ee dev eth0 nud permanent删除邻居
删除一个邻居条目:
ip neigh del 192.168.1.200 dev eth0高级技巧与注意事项
- 持久化配置:
ip命令的所有配置在系统重启后都会丢失。为了实现持久化,你需要使用操作系统提供的网络配置工具,例如:- 基于 RedHat/CentOS 的系统:
/etc/sysconfig/network-scripts/目录下的配置文件。 - 基于 Debian/Ubuntu 的系统:
/etc/network/interfaces或netplan。 - 其他现代系统:
NetworkManager或systemd-networkd。
- 基于 RedHat/CentOS 的系统:
- JSON 输出: 使用
-json选项可以获取机器可读的 JSON 格式输出,这对于脚本自动化非常有用。ip -json addr show - 颜色输出: 某些版本的
ip命令支持彩色输出,可以通过配置别名或环境变量来启用。
总结
ip 命令是现代 Linux 网络管理不可或缺的利器。它以其强大的功能、清晰的对象模型和丰富的信息输出,彻底取代了老旧的 ifconfig。从查看网络接口状态、配置 IP 地址,到管理路由和邻居表,ip 命令提供了全面的控制。掌握它,你将能够更高效、更专业地处理 Linux 网络配置任务。
希望这篇深度解析能帮助你全面理解和运用 ip 命令,成为一名更优秀的网络管理员或开发者!