zoukankan      html  css  js  c++  java
  • linux包之iproute之ip命令

    [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

  • 相关阅读:
    Web应用程序的开发步骤
    APAP INCLUDE
    2015-07-12
    oracle自定义异常
    java quartz 设置定时任务串行执行
    java stream peek的使用
    java List转String
    Java打jar包后如何获取resource中的文件
    ImmutablePair和ImmutableTriple的使用
    mvn打jar包示例:依赖打入jar包和依赖打到外部文件夹
  • 原文地址:https://www.cnblogs.com/createyuan/p/3839991.html
Copyright © 2011-2022 走看看