linux包之iproute之ip命令

不羁岁月 提交于 2019-12-25 23:10:05

[root@localhost ~]# rpm -qf /sbin/ip
iproute-2.6.32-31.el6.x86_64
ip 是个命令, ip 命令的功能很多!基本上它整合了 ifconfig 与 route 这两个命令
ip - show / manipulate routing, devices, policy routing and tunnels

ip -c link 彩色
ip -br link 概述
ip -o link 一行显示
ip -d link 详细
ip -s addr 摘要



ip [ OPTIONS ] OBJECT { COMMAND | help }

       OBJECT := { link | addr | addrlabel | route | rule | neigh | tunnel |
               maddr | mroute | monitor }

       OPTIONS := { -V[ersion] | -s[tatistics] | -r[esolve] | -f[amily] { inet
               | inet6 | ipx | dnet | link } | -o[neline] }
[root@ipt ~]# ip addr help

[root@ipt ~]# ip link help
[root@localhost ~]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    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 qlen 1000
    link/ether 00:0c:29:75:34:a5 brd ff:ff:ff:ff:ff:ff
ip link  
ip link 可以设定与设备 (device) 有关的相关设定,包括 MTU 以及该网络设备的 MAC 等等,当然也可以启动 (up) 或关闭 (down) 某个网络设备。
ip link set [device] [动作与参数]  device 指的是 eth0, eth1 等等设备代号
   up|down :启动 (up) 或关闭 (down) 某个设备,其他参数使用预设的以太网参数;
   address :如果这个设备可以更改 MAC ,用这个参数修改;
   name     :给予这个设备一个特殊的名字;
   mtu      :设置最大传输单元。
[root@linux ~]# ip link set eth0 up
# 启动eth0这个设备;
[root@linux ~]# ip link set eth0 down
# 关闭eth0这个设备;
[root@linux ~]# ip link set eth0 mtu 1000
# 更改 MTU为1000 bytes,单位就是 bytes 。
ip link set eth0 address aa:aa:aa:aa:aa:aa
[root@localhost ~]# ip -s link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    RX: bytes  packets  errors  dropped overrun mcast
    108016     473      0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    108016     473      0       0       0       0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:75:34:a5 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast
    23016263   27785    0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    2402975    17084    0       0       0       0

[root@localhost ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:75:34:a5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.128/24 brd 192.168.2.255 scope global eth0
    inet6 fe80::20c:29ff:fe75:34a5/64 scope link
       valid_lft forever preferred_lft forever

ip addr
如果说 ip link 是与 OSI 七层模型的第二层数据链路层有关的话,那么 ip address (ip addr) 就是与第三层网络层有关的了。主要是在设定与 IP 有关的各项参数,包括 netmask, broadcast 等等。
ip address [add|del] [IP参数] [dev 设备名] [相关参数]
IP 参数 :主要就是网域的设定,例如 192.168.100.100/24 之类的设定
相关参数如下所示:
        broadcast:设定广播位址,如果设定值是 + 表示让系统自动计算;
        label    :该设备的别名,例如eth0:0;
        scope    :这个设备的领域,通常是以下几个大类:
                   global :允许来自所有来源的连接;
                   site   :仅支持IPv6 ,仅允许本主机的连接;
                   link   :仅允许本设备自我连接;
                   host   :仅允许本主机内部的连接;
                   所以当然是使用 global 了。预设也是 global !
ip addr add 192.168.50.50/24 dev eth1
ip addr del 192.168.50.50/24 dev eth1

[root@localhost ~]# ip addrlabel
prefix ::1/128 label 0
prefix ::/96 label 3
prefix ::ffff:0.0.0.0/96 label 4
prefix 2001::/32 label 6
prefix 2001:10::/28 label 7
prefix 2002::/16 label 2
prefix fc00::/7 label 5
prefix ::/0 label 1

[root@localhost ~]# ip rule
0:      from all lookup local
32766:  from all lookup main
32767:  from all lookup default

使用ip命令的neigh或者neighbour选项,你可以查看接入你所在的局域网的设备的MAC地址。
[root@localhost ~]# ip neigh
192.168.2.190 dev eth0 lladdr 6c:fd:b9:3b:57:ff REACHABLE
192.168.2.2 dev eth0 lladdr 50:46:5d:b9:cd:68 REACHABLE

[root@localhost ~]# ip -s neigh
192.168.2.190 dev eth0 lladdr 6c:fd:b9:3b:57:ff ref 3 used 58/0/2 REACHABLE
192.168.2.2 dev eth0 lladdr 50:46:5d:b9:cd:68 ref 120 used 102/102/82 STALE

[root@localhost ~]# ip route
192.168.50.0/24 dev eth1  proto kernel  scope link  src 192.168.50.50
192.168.2.0/24 dev eth1  proto kernel  scope link  src 192.168.2.131  metric 1
default via 192.168.2.2 dev eth1  proto static
ip route
proto:此路由的路由协定,主要有 redirect, kernel, boot, static, ra 等, 其中 kernel 指的是直接由核心判断自动设定。
scope:路由的范围,主要是 link ,是与本设备有关的直接连接。
ip route add 192.168.5.0/24 dev eth0 直连网段
ip route add 192.168.10.0/24 via 192.168.5.100 dev eth0 非直连网段

 

ip命令的up和down选项来激某个特定的接口
ip link set ppp0 down
ip link set ppp0 up

ip route add default via 192.168.0.196


root@t1:~# ip neigh
192.168.3.254 dev bond1 lladdr 00:2e:c7:93:eb:25 STALE
192.168.1.254 dev enp50s0f0 lladdr 00:90:0b:58:c6:58 STALE
192.168.3.1 dev bond1 lladdr 90:e2:ba:89:20:21 STALE
192.168.7.161 dev vmbr7 lladdr fe:fc:fe:aa:1d:33 REACHABLE
192.168.7.1 dev vmbr7 lladdr fe:fc:fe:ae:b6:c1 STALE
192.168.8.1 dev vmbr8 lladdr fe:fc:fe:5b:87:49 STALE
192.168.8.254 dev vmbr8 lladdr 00:2e:c7:93:eb:2a STALE
192.168.7.254 dev vmbr7 lladdr 00:2e:c7:93:eb:29 STALE


root@t1:~# ip -s -s link ls vmbr7
15: vmbr7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether 90:e2:ba:89:5a:34 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast
    1455329    9710     0       0       0       0
    RX errors: length   crc     frame   fifo    missed
               0        0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    161846     1108     0       0       0       0
    TX errors: aborted  fifo   window heartbeat transns
               0        0       0       0       2


root@t1:~# ip link show type bond
11: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether 90:e2:ba:89:5a:34 brd ff:ff:ff:ff:ff:ff
16: bond1: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether 90:e2:ba:89:5a:35 brd ff:ff:ff:ff:ff:ff
	
root@t1:~# ip link show type bond_slave
6: enp28s0f0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP mode DEFAULT group default qlen 1000
    link/ether 90:e2:ba:89:5a:34 brd ff:ff:ff:ff:ff:ff
7: enp28s0f1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond1 state UP mode DEFAULT group default qlen 1000
    link/ether 90:e2:ba:89:5a:35 brd ff:ff:ff:ff:ff:ff
8: enp46s0f0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP mode DEFAULT group default qlen 1000
    link/ether 90:e2:ba:89:5a:34 brd ff:ff:ff:ff:ff:ff
9: enp46s0f1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond1 state UP mode DEFAULT group default qlen 1000
    link/ether 90:e2:ba:89:5a:35 brd ff:ff:ff:ff:ff:ff

	
	
	
root@t1:~# ip link show type bridge
13: vmbr8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether 90:e2:ba:89:5a:34 brd ff:ff:ff:ff:ff:ff
15: vmbr7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether 90:e2:ba:89:5a:34 brd ff:ff:ff:ff:ff:ff

root@t1:~# ip link show type bridge_slave
12: bond0.8@bond0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master vmbr8 state UP mode DEFAULT group default qlen 1000
    link/ether 90:e2:ba:89:5a:34 brd ff:ff:ff:ff:ff:ff
14: bond0.7@bond0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master vmbr7 state UP mode DEFAULT group default qlen 1000
    link/ether 90:e2:ba:89:5a:34 brd ff:ff:ff:ff:ff:ff
17: tap100i0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master vmbr8 state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether 82:bf:93:18:34:d9 brd ff:ff:ff:ff:ff:ff


root@t1:~# ip link show type vlan
12: bond0.8@bond0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master vmbr8 state UP mode DEFAULT group default qlen 1000
    link/ether 90:e2:ba:89:5a:34 brd ff:ff:ff:ff:ff:ff
14: bond0.7@bond0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master vmbr7 state UP mode DEFAULT group default qlen 1000
    link/ether 90:e2:ba:89:5a:34 brd ff:ff:ff:ff:ff:ff

 

 

net_device flags,网络设备的状态标识。

BROADCAST 该接口支持广播
MULTICAST 该接口支持多播
UP 网络接口已启用
LOWER_UP 网络电缆已插入,设备已连接至网络

BROADCAST 表示这个网卡有广播地址,可以发送广播包;
MULTICAST 表示网卡可以发送多播包;
UP 表示网卡处于启动的状态;
LOWER_UP 表示 L1 是启动的,也即网线插着呢。


最大传输单元 MTU 为 1500,这是以太网的默认值。
MTU 是二层 MAC 层的概念。MAC 层有 MAC 的头,以太网规定连 MAC 头带正文合起来,不允许超过 1500 个字节。


对于 eth0 这张网卡来讲,是 global,说明这张网卡是可以对外的,可以接收来自各个地方的包。对于 lo 来讲,是 host,说明这张网卡仅仅可以供本机相互通信。
参见/etc/iproute2/rt_scopes


qdisc
pfifo_fast 是什么意思呢?qdisc 全称是queueing discipline,中文叫排队规则。内核如果需要通过某个网络接口发送数据包,它都需要按照为这个接口配置的 qdisc(排队规则)把数据包加入队列。最简单的 qdisc 是pfifo,它不对进入的数据包做任何的处理,数据包采用先入先出的方式通过队列。pfifo_fast 稍微复杂一些,它的队列包括三个波段(band)。在每个波段里面,使用先进先出规则。三个波段(band)的优先级也不相同。band 0 的优先级最高,band 2 的最低。如果 band 0 里面有数据包,系统就不会处理 band 1 里面的数据包,band 1 和 band 2 之间也是一样。数据包是按照服务类型(Type of Service,TOS)被分配到三个波段(band)里面的。TOS 是 IP 头里面的一个字段,代表了当前的包是高优先级的,还是低优先级的。队列是个好东西,后面我们讲云计算中的网络的时候,会有很多用户共享一个网络出口的情况,这个时候如何排队,每个队列有多粗,队列处理速度应该怎么提升,我都会详细为你讲解。
pfifo,pfifo_fast,noop,noqueue

 

Linux下TC使用说明
https://www.cnblogs.com/endsock/archive/2011/12/09/2281519.html

[p|b]fifo
使用最简单的qdisc,纯粹的先进先出。只有一个参数:limit,用来设置队列的长度,pfifo是以数据包的个数为单位;bfifo是以字节数为单位。

pfifo_fast
在编译内核时,如果打开了高级路由器(Advanced Router)编译选项,pfifo_fast就是系统的标准QDISC。

 


lo 全称是loopback,又称环回接口,往往会被分配到 127.0.0.1 这个地址。这个地址用于本机通信,经过内核处理后直接返回,不会在任何网络中出现。

 

mtu 1500 最大传输单位(数据包大小)为1,500字节
qdisc pfifo_fast 用于数据包排队
state UP 网络接口已启用
group default 接口组
qlen 1000 传输队列长度
link/ether 00:1e:4f:c8:43:fc 接口的 MAC(硬件)地址
brd ff:ff:ff:ff:ff:ff 广播地址
inet 192.168.0.24/24 IPv4 地址
brd 192.168.0.255 广播地址
scope global 全局有效
dynamic enp0s25 地址是动态分配的
valid_lft 80866sec IPv4 地址的有效使用期限
preferred_lft 80866sec IPv4 地址的首选生存期
inet6 fe80::2c8e:1de0:a862:14fd/64 IPv6 地址
scope link 仅在此设备上有效
valid_lft forever IPv6 地址的有效使用期限
preferred_lft forever IPv6 地址的首选生存期

 

qlen 1000
ip -c link set eno1 txqueuelen 100


mode DEFAULT
group DEFAULT


2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 74:d4:35:f3:12:83 brd ff:ff:ff:ff:ff:ff
inet 192.168.3.15/24 brd 192.168.3.255 scope global dynamic eno1
valid_lft 21228sec preferred_lft 21228sec
inet6 fe80::76d4:35ff:fef3:1283/64 scope link
valid_lft forever preferred_lft forever

如果BOOTPROTO=dhcp
那么就是dynamic eno1
如果BOOTPROTO=static
那么就是eno1
并且valid_lft是forever,preferred_lft也是forever,没有21228sec秒,就是租约


2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 74:d4:35:f3:12:83 brd ff:ff:ff:ff:ff:ff
inet 192.168.3.16/24 brd 192.168.3.255 scope global eno1
valid_lft forever preferred_lft forever
inet6 fe80::76d4:35ff:fef3:1283/64 scope link
valid_lft forever preferred_lft forever

 

 

===========================================


新的命名方案被称为“可预测的网络接口Predictable Network Interface”。

global:全局有效;即指定添加的接口配置既可实现本地通信,又可实现跨网络通信;
link:仅接口有效;即只能与使用此接口配置的IP地址通信;
host:仅主机有效;即只能与本地主机上的IP地址进行通信;


修改接口属性(IP/NETMASK/GW/DNS)的配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE;
静态路由的配置文件:/etc/sysconfig/network-scripts/route-IFACE;

ifcfg-eno1
route-eno1
当需要用到非默认网关路由时,可通过此配置文件来配置路由条目;
支持两种配置方式:
(1)每行一个路由条目:TARGET via GW
100.0.0.0/8 via 10.10.10.2 #采用每一行一个路由条目方式;
(2)每三行一个路由条目
ADDRESS#=TARGET
NETMASK#=MASK
GATEWAY#=NEXTHOP
#其中'#'为数字,表示第几组路由条目;
注意:两种配置方式不能混用;


该配置文件通过大量参数来定义接口的属性,
配置文件参数:
DEVICE:此配置文件对应的设备的名称;
ONBOOT:在系统引导过程中,是否激活此接口;
BOOTPROTO:激活此接口时通过什么协议来配置此接口的属性;常用的有:dhcp, bootp, static, none;
PEERDNS:如果BOOTPROTO的值为"dhcp",则是否允许dhcp server分配的DNS服务器指向覆盖本地手动指定的DNS服务器指向;默认为允许(yes);
UUID:此设备的唯一标识;
IPV6INIT:是否初始化IPv6;
TYPE:接口类型,常见的有:Ethernet, Bridge;
DNS1:第一DNS服务器指向;
DNS2:备用DNS服务器指向;
DOMAIN:指定搜索域;
IPADDR:IP地址;
NETMASK:子网掩码;
GATEWAY:默认网关;在CentOS 7上还支持使用PREFIX以长度方式指明子网掩码;
USERCTL:是否允许普通用户控制此设备;
HWADDR:此设备的MAC地址;
NM_CONTROLLED:是否使用NetworkManager服务来控制此接口;



给网络接口配置多个地址,给每个附加的地址一个网卡别名的实现:
ifconfig ens33:0 192.168.1.1/24
永久生效
cp ens33 ens33:0
vi修改下面的,就可以了
DEVICE=IFACE_LABEL #指定网卡别名;
BOOTPROTO=static #网上别名不支持动态获取地址;支持static, none;
IPADDR= #IP地址;
NETMASK= #子网掩码;
删除原有其他接口的HWADDR
删除原有其他接口的UUID
systemctl restart network

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!