当前位置: 首页 > news >正文

Linux 常用命令 - ip 【显示和配置网卡参数】

简介

ip 是 “Internet Protocol” 的简写,属于 iproute2 工具集的组成部分。这个多功能网络配置工具通过 netlink 协议直接与内核通信,用于管理网络接口、路由表、ARP 缓存、隧道等网络组件。

使用方式

ip [ OPTIONS ] OBJECT { COMMAND | help }

ip [ -force ] -batch filename

OBJECT := { link | address | addrlabel | route | rule | neigh | ntable | tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm | netns | l2tp | tcp_metrics | token | macsec | vrf | mptcp | ioam }

OPTIONS := { -V[ersion] | -h[uman-readable] | -s[tatistics] | -d[etails] | -r[esolve] | -iec | -f[amily] { inet | inet6 | link } | -4 | -6 | -B | -0 | -l[oops] { maximum-addr-flush-attempts } | -o[neline] | -rc[vbuf][size] | -t[imestamp] | -ts[hort] | -n[etns] name | -N[umeric] | -a[ll] | -c[olor] | -br[ief] | -j[son] | -p[retty] }

常用选项

  • -h, -human, -human-readable:以易读格式显示网络统计数据(带单位)。
  • -b, -batch <FILENAME>:批量执行模式,从指定文件或标准输入读取命令序列,遇到第一条失败命令即停止执行。
  • -force:批量执行模式下若遇到错误不停止,继续执行后续指令,并且通过返回码反映出现的错误(遇到错误时不为零)。
  • -s, -stats, -statistics:输出更多信息,如果多次使用该选项,信息量会增加,通常是统计信息或时间值。
  • -d, -details:显示设备/接口的扩展属性。
  • -l, -loops <COUNT>:设置 ip address flush 操作的最大重试次数,默认为 10 次,0 代表循环至所有地址都被删除。
  • -f, -family <FAMILY>:指定协议栈类型,协议栈可以为 inetinet6bridgemplslink。如果没有指定该选项,则会依据其他参数来猜测协议栈。如果给出的参数不能够猜测出协议栈,则默认会使用 inetanylink 作为一个特殊的标识符,表示不涉及网络协议。
  • -4-family inet 的简写。
  • -6-family inet6 的简写。
  • -B-family bridge 的简写。
  • -M-family mpls 的简写。
  • -0-family link 的简写。
  • -o, -oneline: 单行输出模式,将多行记录压缩为单行(换行符转义为 \),这在使用 wcgrep 来进行记录条数统计时非常有用。
  • -r, -resolve:将 IP 地址转换为域名(依赖系统 DNS 设置)。
  • -n, -netns <NETNS>:跨命名空间操作:切换到指定网络命名空间 NETNS 执行命令。等效于将 ip netns exec NETNS ip [ OPTIONS ] OBJECT { COMMAND | help } 简化为 ip -n[etns] NETNS [ OPTIONS ] OBJECT { COMMAND | help }
  • -N, -Numeric:直接显示协议号/范围等元数据的数字标识(不转换为更易读的名称)。
  • -a, -all:对当前类别所有对象执行操作(如果子命令支持的话)。例如 ip -a link delete 删除所有网络接口(危险操作!)。
  • -c[color][={always|auto|never}:彩色输出模式配置(需终端支持)。如果不指定参数或参数为 always,则无论 stdout 的状态,强制启用彩色输出。如果参数为 auto,则当 stdout 是终端时启用彩色输出。如果参数为 never,则禁用彩色输出。如果该选项被指定了多次,则采用最后一次。当同时使用了 -json 时该选项会被忽略。
  • -t, -timestamp:在使用监控选项时显示当前时间。
  • -ts, -tshort:类似于 -timestamp 但简化输出的时间格式。
  • -rc, -rcvbuf<SIZE>:调整内核通信缓冲区,默认为 1MB。
  • -iec:单位转换基准设置为 1024 而非 1000。
  • -br, -brief:使用极简表格输出模式,当前支持的命令有 ip addr showip link show 以及 ip neigh show
  • -j, -json:以 JSON 格式输出结果(紧凑型)。
  • -p, -pretty:JSON 美化输出模式(增强可读性)。
  • -V, -Version:显示版本信息。

OBJECT

所有 OBJECT 名称均支持全称或缩写形式,比如 address 可以简写为 addra

  • address:设备的协议(IP 或 IPV6)地址。
  • addrlabel:协议地址选择的标签配置。
  • ioam:管理 IOAM 命名空间和模式。
  • l2tp:通过IP隧道传输以太网(L2TPv3)。
  • link:网络设备。
  • maddress:多播地址。
  • monitor:网络事件监视器。
  • mptcp:多路径 TCP 连接管理。
  • mroute:组播路由缓存操作。
  • mrule:组播路由策略规则管理。
  • neighbourARPNDISC 缓存管理。
  • netns:网络命名空间管理。
  • ntable:邻居缓存表参数管理。
  • route:路由表。
  • rule:路由策略数据库规则。
  • tcp_metrics/tcpmetrics:TCP 指标参数管理。
  • token:令牌化接口标识符管理。
  • tunnel:IP 隧道。
  • tuntap: TUN/TAP 设备管理。
  • vrf: 虚拟路由和转发设备管理。
  • xfrm:IPSec 策略管理。

COMMAND

COMMAND 用来指定要对前面选定的 OBJECT 执行的具体操作。

具体支持的操作项是根据所选择的对象类型来决定的。一般来说,对于大多数对象,你都可以执行 add(添加)、delete(删除)和 showlist(显示/列出)这些基本操作。但并不是所有对象都支持全部这些操作,有些对象可能还有一些自己独特的、额外的命令。

其中,help 命令支持所有对象。其会列出这个对象支持哪些命令,以及这些命令的参数应该怎么写。
如果不指定命令,那么系统会尝试执行一个默认的命令。通常情况下,这个默认命令是 list。但是,如果这种类型的对象本身就不支持被列出,那么默认命令就会是 help

环境变量 - COLORFGBG

如果你设置了 COLORFGBG 这个环境变量,ip 命令会利用它的值来判断你的终端背景是深色还是浅色,并据此选择对比度更高的颜色来显示输出,以提高可读性。

通常,COLORFGBG 环境变量的值包含两个或三个由分号 ; 分隔的数字。ip 命令关心的是最后一个数字。如果最后一个数字是 0 到 6 之间(包括 0 和 6)或者等于 8,那么 ip 命令会认为你正在使用深色背景,并选用适合深色背景的颜色方案:

COLORFGBG=";0" ip -c a

返回值

命令执行成功返回 0,语法错误返回 1,若执行过程中内核产生了错误则返回 2。

参考示例

显示网络接口信息

ip addr show

使用 addr show 可以显示分配给所有网络接口的地址信息:

jay@jaylinuxlenovo:~/test$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 68:f7:28:b3:02:81 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.110/24 brd 192.168.2.255 scope global enp2s0
       valid_lft forever preferred_lft forever
    ......
3: br-a9c8849ae008: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:d7:7c:99:f0 brd ff:ff:ff:ff:ff:ff
    inet 172.18.0.1/16 brd 172.18.255.255 scope global br-a9c8849ae008
       valid_lft forever preferred_lft forever
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:66:0b:80:97 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

显示指定网络接口的统计信息

ip -s link show lo

使用 -s 选项可以显示统计信息。这里的 lo 指定的是本地回环网络:

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
    RX:    bytes   packets errors dropped  missed   mcast           
    228037390453 236479161      0       0       0       0 
    TX:    bytes   packets errors dropped carrier collsns           
    228037390453 236479161      0       0       0       0 

查看内核中的网络邻居表

ip neigh

使用 neigh 可以查看当前内核缓存的网络邻居表信息:

jay@jaylinuxlenovo:~/test$ ip neigh
192.168.2.169 dev enp2s0 lladdr 1c:69:7a:b4:65:42 STALE
192.168.2.1 dev enp2s0 lladdr a4:a9:30:7d:0c:5e REACHABLE
192.168.2.199 dev enp2s0  FAILED
192.168.1.1 dev enp2s0 lladdr 88:c1:74:69:58:e9 STALE
192.168.2.8 dev enp2s0 lladdr b6:28:8f:4c:25:2b STALE
192.168.2.10 dev enp2s0 lladdr 28:6d:cd:3c:7f:14 STALE
192.168.2.12 dev enp2s0 lladdr 32:d8:2d:24:76:8c STALE
192.168.2.30 dev enp2s0 lladdr d2:5c:9f:eb:18:fb STALE
......

查看路由表

ip route

使用 route 可以显示当前的路由表信息:

jay@jaylinuxlenovo:~/test$ ip route
default via 192.168.2.1 dev enp2s0 proto static 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
172.18.0.0/16 dev br-a9c8849ae008 proto kernel scope link src 172.18.0.1 linkdown 
192.168.2.0/24 dev enp2s0 proto kernel scope link src 192.168.2.110 

注意事项

  • 使用 ip 命令修改网络配置需要 root 权限。

  • 修改网络配置时要小心,错误的配置可能导致网络中断。

  • 使用 ip 命令操作网络接口时,请确保接口名称正确,以免误操作其他接口。

  • 直接使用 ip 命令所做的大部分配置更改(如 ip addr add, ip route add),这些更改在系统重启或网络服务重启后会丢失。

  • ip 命令的默认输出信息比较详细,适合人类阅读,但也可能比较冗长,对于脚本处理,可以考虑使用 -brief (-br) 获取更简洁的输出,或者使用 -json 获取 JSON 格式的输出。

相关文章:

  • 【深度学习】自定义实现DataSet和DataLoader
  • zlm启用webrtc交叉编译指南
  • [免费]SpringBoot+Vue外卖(点餐)平台系统【论文+源码+SQL脚本】
  • 「出海匠」借助CloudPilot AI实现AWS降本60%,支撑AI电商高速增长
  • 鸿蒙开发-动画
  • C++核心机制-this 指针传递与内存布局分析
  • 读者、写者问题优化
  • 在AMGCL中使用多个GPU和多个计算节点求解大规模稀疏矩阵方程
  • JVM考古现场(十九):量子封神·用鸿蒙编译器重铸天道法则
  • 智能合约安全审计平台——以太坊虚拟机安全沙箱
  • Font Maker的成功之路:产品迭代与创新营销助力增长
  • 国达陶瓷重磅推出陶瓷罗马柱外墙整装尖端新产品“冠岩臻石”
  • Profibus DP主站转modbusTCP网关与dp从站通讯案例
  • 在vue项目中package.json中的scripts 中 dev:“xxx“中的xxx什么概念
  • 爬虫:一文掌握 curl-cffi 的详细使用(支持 TLS/JA3 指纹仿真的 cURL 库)
  • Nacos集群搭建和mysql持久化配置
  • 第三篇:[特殊字符] 深入理解MyBatis[特殊字符] 掌握MyBatis动态SQL——应对复杂查询的有力武器
  • 【vue】轮播图案例
  • 关于python字典的所有操作
  • 性能优化-Spring参数配置、数据库连接参数配置、JVM调优
  • 法官颁布紧急临时禁止令,中国留学生诉美国政府“首战胜利”
  • 精细喂养、富养宠物,宠物经济掀起新浪潮|私家周历
  • 南华期货递表港交所,冲刺第二家“A+H”股上市期货公司
  • 2025“上海之夏”向全球邀约,首批城市定制活动集中亮相
  • 直播电商监管新规将公开征求意见,出重拳净化行业生态
  • 如此城市|漫步瑞金医院展览,艺术可以成为一种“社会雕塑”