Ip命令用来显示或操纵Linux主机的路由、网络设备、策略路由和隧道。
格式:
# ip [options] OBJECT {COMMAND}
对象:
link:网络设备
address:设备上的协议(IP或IPv6)地址
addrlabel:协议地址选择的标签配置
route:路由表条目
rule:路由策略数据库中的规则
参数:
修改ip行为或者改变其输出的选项,所有的选项都是以-字符开头。
-V :-Version打印ip的版本并退出
-h: 人类可读输出
-s: -stats –statistics,输出更多的信息,如果这个选项出现两次或以上,输出的信息将更为详尽
d:输出更多的细节信息
-l:指定"IP地址刷新"逻辑将尝试的最大循环数,默认为10
-f :-family 指定要使用的协议族,协议可以是一个inet,inet6、bridge, ipx, dnet or link
-4: 是 -family inet的简写
-6 :是 -family inet6的简写
-0 :是 -family link 的简写
-I: 是-family ipx的简写
-o:-oneline 单行输出,用"\"字符替换换行符
-n:-netns交换机的IP到指定的网络空间netns
-r:-resolve 使用系统名称解析来打印DNS名称而不是主机地址
-t:使用监视器选项时显示当前时间
-a:-all对所有对象执行指定的命令,这取决于命令是否支持这个选项
-rc:-rcvbuf (size) 设置Netlink套接字接收缓冲区的大小设置,默认为1MB
事例1:
显示网卡及配置的地址信息:
# ip addr show
解释一下:
-
- 首先这个系统有两个接口:lo和eth0,lo是环回接口,而我们重点关注的则是eth0这个普通网络接口;下面在看看每个子项的含义:
- <BROADCAST,MULTICAST,UP,LOWER_UP>:BROADCAST表示该接口支持广播;MULTICAST表示该接口支持多播;UP表示该网络接口已启用;LOWER_UP表示网络电缆已插入,设备已连接至网络
- mtu 1500:最大传输单位(数据包大小)为1,500字节
- qdisc pfifo_fast:用于数据包排队
- state UP:网络接口已启用
- qlen 1000:传输队列长度
- link/ether 00:1e:4f:c8:43:fc:接口的MAC(硬件)地址
- brd ff:ff:ff:ff:ff:ff:广播地址
- inet 192.168.152/24:IPv4地址
- brd 192.168.0.255:广播地址
- scope global:全局有效
- dynamic enp0s25:地址是动态分配的
- valid_lft forever:IPv4地址的有效使用期限
- preferred_lft forever:IPv4地址的首选生存期
- inet6 fe80::2c8e:1de0:a862:14fd/64:IPv6地址
- scope link:仅在此设备上有效
- valid_lft forever:IPv6地址的有效使用期限
- preferred_lft forever:IPv6地址的首选生存期
事例2:
设置ip地址:
# ip addr add 192.168.0.123/24 dev eth0
事例3:
删除配置的ip
# ip add del 192.168.0.123/24 dev eth0
事例4:
启用/禁用网卡
# ip link set eth0 up
# ip link set eth0 down
事例5:
查看路由信息
# ip route show
内容详解:
输出内容第一条是默认的路由,我们可以根据我们的需要改动它
metric 1002:跳跃计数,确定网关的优先级,默认20,数值越小优先级越高
proto kernel:该路由的协议,主要有redirect,kernel,boot,static,ra等,其中kernel指的是直接由核心判断自动设定
事例6:
通过ip地址查询路由包从哪条路由来
# ip route get 192.168.162.131
事例7:
命令:ip route add default via 192.168.0.150/24
说明:所有的网络数据包都通过192.168.0.150来转发,而不是以前的默认路由
命令:ip route add 172.16.32.32 via 192.168.0.150/24 dev enp0s3
说明:修改特定网卡的默认路由
命令:ip route del 172.17.160.0/20
说明:删除路由
命令:ip route flush cache
说明:刷新路由表
事例8:
显示所有网络接口的统计数据:
内容详解:
RX:表示接收
TX:表示发送
bytes:接收/发送的字节数
packets:接收/发送的包数
errors:接收/发送的带有错误的包总数
dropped:由于处理资源不足导致接收/发送的丢弃的包数
overrun:因接收溢出(环形缓冲区)导致丢失的包;通常如果接口溢出,则表示内核中存在严重问题,或者说服务器上该网络设备的处理设备太慢
mcast:接收到的多播包数
carrier:因数据链路错误导致发送失败的包数
collsns:因在网络上发送冲突而导致的失败数
事例9:
命令:ip -s -s link ls eth0
获取一个特定网络接口的信息;在网络接口名字后面添加选项ls
即可。使用多个选项-s
会输出指定接口详细的信息;特别是在排除网络连接故障时,这会非常有用。