linux包之iproute之ip命令

摘要:
[root@localhost~]#rpm-qf/sbin/ipiproute-2.6.32-31.el6.x86_64ip是个命令,ip命令的功能很多![root@linux~]#iplinkseteth0up#启动eth0这个设备;[root@linux~]#iplinkseteth0down#关闭eth0这个设备;[root@linux~]#iplinkseteth0mtu1000#更改MTU为1000bytes,单位就是bytes。iplinkseteth0addressaa:aa:aa:aa:aa:aa[root@localhost~]#ip-slink1:lo:mtu16436qdiscnoqueuestateUNKNOWNlink/loopback00:00:00:00:00:00brd00:00:00:00:00:00RX:bytespacketserrorsdroppedoverrunmcast1080164730000TX:bytespacketserrorsdroppedcarriercollsns10801647300002:eth0:mtu1500qdiscpfifo_faststateUPqlen1000link/ether00:0c:29:75:34:a5brdff:ff:ff:ff:ff:ffRX:bytespacketserrorsdroppedoverrunmcast23016263277850000TX:bytespacketserrorsdroppedcarriercollsns2402975170840000[root@localhost~]#ipaddr1:lo:mtu16436qdiscnoqueuestateUNKNOWNlink/loopback00:00:00:00:00:00brd00:00:00:00:00:00inet127.0.0.1/8scopehostloinet6::1/128scopehostvalid_lftforeverpreferred_lftforever2:eth0:mtu1500qdiscpfifo_faststateUPqlen1000link/ether00:0c:29:75:34:a5brdff:ff:ff:ff:ff:ffinet192.168.2.128/24brd192.168.2.255scopeglobaleth0inet6fe80::20c:29ff:fe75:34a5/64scopelinkvalid_lftforeverpreferred_lftforeveripaddr如果说iplink是与OSI七层模型的第二层数据链路层有关的话,那么ipaddress就是与第三层网络层有关的了。主要是在设定与IP有关的各项参数,包括netmask,broadcast等等。

[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

免责声明:文章转载自《linux包之iproute之ip命令》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇sublime text3 安装插件太慢,解决访问被墙linux时间同步,ntpd、ntpdate下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Windows不分区VHD装Linux多系统(六):优化 &amp;amp; 安装NVIDIA 920MX独显驱动

上一篇:Windows不分区VHD装Linux多系统(五):Win7(物理机)添加引导   优化: 开启关闭自动登录:设置--详细信息--用户--右上角解锁--自动登录关闭(开启) 关闭屏保:设置--电源--节点--空白屏幕--从不 安装NVIDIA 920MX独显驱动: 1.首先,安装独立显卡驱动前,确保之前的几篇文章以及阅读并制作出了可以引导VHD的i...

修改linux终端命令行颜色

本篇文章出自:http://www.cnblogs.com/menlsh/archive/2012/08/27/2659101.html 无意对此文章版权侵犯,仅用于学习和收藏   变量名:PS1   要修改linux终端命令行颜色,我们需要用到PS1,PS1是Linux终端用户的一个环境变量,用来说明命令行提示符的设置。在终端输入命令:#set,即可在...

Linux驱动学习 —— 在/sys下面创建目录示例

有时我们需要在/sys下面创建一些目录, 下面给出了一个示例。 在加载驱动模块后, 在/sys下面会创建一个名为sysfs_demo的目录,并在其中在创建几个文件和目录。 [root@tiny4412 mnt]# ls -R /sys/sysfs_demo/ /sys/sysfs_demo/: node_one node_two s...

BLDC开发笔记4.转速的计算

以下结合自己的理解,如有错误请帮忙及时指正。 转速公式 转速的计算我现在是通过一定时间内,霍尔信号的边沿数量来计算的。这里每隔50ms在滴答定时器中断服务函数里面计算一次。霍尔信号每变化一次,就产生一次霍尔触发中断。因为我的电机是2对极,所以在一圈内有12个霍尔状态,即电机转动一圈会触发12次中断。假设在50ms内,霍尔触发了 n 次中断,我们可以得到转速...

[虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(六)

目的: 1. 为我们自己的watchdog写一个驱动 步骤: 通过之前的介绍,我们很容易猜想到写我们基于PCI的watchdog驱动,可以分2个步骤。 1. 探测加载PCI设备 这部分代码跟我们的设备本身没有任何关系。 我们通过这部分代码,找到 厂商ID为 0x1af4, 设备ID为0x0101的设备。这个设备是我们用qemu中定义我们的watchdog中...

Ubuntu Linux系统下aptget命令详解

常用的APT命令参数:apt-cache search package 搜索包apt-cache show package 获取包的相关信息,如说明、大小、版本等sudo apt-get install package 安装包sudo apt-get install package - - reinstall 重新安装包sudo apt-get -f in...