zoukankan      html  css  js  c++  java
  • ip命令网络配置

    Linux的ip命令和ifconfig类似,但前者功能更强大,并旨在取代后者。使用ip命令,只需一个命令,你就能很轻松地执行一些网络管理任务。ifconfig是net-tools中已被废弃使用的一个命令,许多年前就已经没有维护了。Linux系统提供iproute2工具用于替代一些常用的net-tools命令,iproute2套件里提供了许多增强功能的命令,ip命令即是其中之一,ip命令支持tab补全。

    一、ip常用命令格式如下:

    ip [ OPTIONS ] OBJECT { COMMAND | help }
    对象OBJECT={ link | addr | addrlabel | route | rule | neigh | ntable | tunnel | maddr | mroute | mrule | monitor | xfrm | token }

    选项OPTIONS={ -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] | -h[uman-readable] | -iec | -f[amily] { inet | inet6 | ipx | dnet | link } | -o[neline] | -t[imestamp] | -b[atch] [filename] | -rc[vbuf] [size] }

    --------------------------------------------------------------------
    常用对象的取值含义如下:
    link       :网络设备
    address    :设备上的协议(IP或IPv6)地址
    addrlabel  :协议地址选择的标签配置
    route    :路由表条目
    rule       :路由策略数据库中的规则

    常用选项的取值含义如下:
    -V,-Version      :显示指令版本信息
    -s,-stats,statistics    :输出详细信息
    -h,-human,-human-readable  :输出人类可读的统计信息和后缀
    -o,-oneline:         将每条记录输出到一行,用‘’字符替换换行符
    --------------------------------------------------------------------

    二、使用实例
    1、检查网卡信息

    命令:ip addr show
    说明:显示网卡及配置的地址信息
    ----------------------------------------------------------------------------------
    [root@CentOS7GUI1 ~]# ip addr show | more
    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: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:0b:cc:63 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.56/24 brd 192.168.1.255 scope global noprefixroute dynamic enp0s3
    valid_lft 81504sec preferred_lft 81504sec
    inet6 2408:832e:ca9:5c40:f046:c71f:fa9:134b/64 scope global noprefixroute dynamic
    valid_lft 174827sec preferred_lft 88427sec
    inet6 fe80::c632:ffaa:370:ca71/64 scope link noprefixroute
    valid_lft forever preferred_lft forever
    ---------------------------------------------------------------------------------
    输出内容详解:
    首先这个系统有两个接口:lo和enp0s3,lo是环回接口,而我们重点关注的则是enp0s3这个普通网络接口;下面在看看每个子项的含义:

    <BROADCAST,MULTICAST,UP,LOWER_UP>:BROADCAST表示该接口支持广播;MULTICAST表示该接口支持多播;UP表示该网络接口已启用;LOWER_UP表示网络电缆已插入,设备已连接至网络
    mtu 1500        :最大传输单位(数据包大小)为1,500字节
    qdisc pfifo_fast          :用于数据包排队
    state UP          :网络接口已激活
    qlen 1000            :传输队列长度
    link/ether 08:00:27:0b:cc:63  :接口的MAC(硬件)地址
    brd ff:ff:ff:ff:ff:ff             :广播地址
    inet 192.168.1.56/24      :IPv4地址
    brd 192.168.1.255       :广播地址
    scope global           :全局有效
    dynamic enp0s3          :地址是动态分配的
    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地址的首选生存期


    三、ip link 相关
    ip link 可以设定与设备(device)有关的相关设定,包括MTU以及该网络设备的MAC等,当然也可以启动(up)或关闭(down)某个网络设备。

    1、显示出所有可用网络接口的列表(无论接口是否激活)
    ip link show     #show可以省略

    2、激活或停用网络接口
    ip link set enp0s3 down     #停用接口,可以用tab补全
    ip link set enp0s3 up         #激活接口

    3、开启或关闭网卡混合模式(即网卡对流经它的任何数据都接收,不管目的是否是自己,一般用于网络分析)。
    ip link set enp0s3 promisc on      #开启
    ip link set enp0s3 promisc off      #关闭

    4、设置网卡的MTU
    ip link set enp0s3 mtu 1100

    5、改变网络接口的MAC地址
    ip link set dev enp0s3 address 08:00:27:75:2a:67

    6、显示网络统计数据
    ip -s link          #所以网卡统计数据
    ip -s link ls enp0s3    #单个网卡统计信息,这里可以添加多个-s会给你这个特定接口更详细的信息。特别是在排除网络连接故障时,这会非常有用。

    输出内容说明:
    ---------------------------------------------------------------------------------
    [root@CentOS7GUI1 ~]# ip -s link
    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 overrun mcast
    0 0 0 0 0 0
    TX: bytes packets errors dropped carrier collsns
    0 0 0 0 0 0
    2: enp0s3: <BROADCAST,MULTICAST> mtu 1100 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
    link/ether 08:00:27:0b:cc:63 brd ff:ff:ff:ff:ff:ff
    RX: bytes packets errors dropped overrun mcast
    993408 11778 0 0 0 6597
    TX: bytes packets errors dropped carrier collsns
    24237 228 0 0 0 0
    ---------------------------------------------------------------------------------
    输出重点内容详解:
    RX  :表示接收
    TX  :表示发送
    bytes  :接收/发送的字节数
    packets  :接收/发送的包数
    errors     :接收/发送的带有错误的包总数
    dropped  :由于处理资源不足导致接收/发送的丢弃的包数
    overrun  :因接收溢出(环形缓冲区)导致丢失的包;通常如果接口溢出,则表示内核中存在严重问题,或者说服务器上该网络设备的处理设备太慢
    mcast     :接收到的多播包数
    carrier    :因数据链路错误导致发送失败的包数
    collsns        :因在网络上发送冲突而导致的失败数


    四、ARP地址解析协议(ARP)用于将一个IP地址转换成它对应的物理地址,也就是通常所说的MAC地址。使用ip命令的neigh或者neighbour选项,你可以查看接入你所在的局域网的设备的MAC地址。
    1、显示ARP表
    ip neigh

    2、添加静态ARP项
    ip neigh add 192.168.111.100 lladdr 00:0c:29:c0:5a:ef dev enp0s3

    2删除静态ARP项
    ip neigh del 192.168.111.100 dev enp0s3

    五、ip address 相关
    如果说ip link是与OSI七层模型的第二层数据链路层有关的话,那么ip address (ip addr)就是与第三层网络层有关的了。主要是在设定与 IP 有关的各项参数,包括 netmask, broadcast 等。

    1、查看IP参数
    ip addr show    #show可以省略,addr是address的简写
    ip addr show enp0s3   #查看特定网络接口,这里的show不可以省略

    2、为网络接口分配IPv4地址
    ip addr add 10.0.0.1/24 dev enp0s3

    3、为网络接口分配多个IPv4地址,一个网卡只能绑定一个IP地址(即IP与MAC绑定),但可以设置多个IP地址,作用就是可以连接多个网段(就是可以访问多个网段),但前提是这些网段物理层是连接在一起。
    ip addr add 10.0.0.1/24 dev enp0s3
    ip addr add 10.0.0.2/24 dev enp0s3

    4、移除网络接口的IPv4地址
    ip addr del 10.0.0.2/24 dev enp0s3

    六、ip route 相关
    ip rule命令中包含add、delete、show(或者list)等子命令,注意:策略路由(policy routing)不等于路由策略(rouing policy)。在某些情况下,我们不只是需要通过数据包的目的地址决定路由,可能还需要通过其他一些域:源地址、IP协议、传输层端口甚至数据包的负载。这就叫做:策略路由(policy routing)。用这种方法修改的默认路由只是临时有效的,在系统重启后所有的改动都会丢失。

    路由配置格式:
    ip route [add|del] [IP或网域] [via gateway] [dev 设备]

    [add|del]:增加(add)或删除(del)路由。

    [IP或网域]:目标网络或目标主机,可使用192.168.110.0/24之类的网域或者是单纯的IP 。

    [via gateway]:从哪个gateway(下一跳ip地址)出去,这个ip地址必须与主机能二层互通。

    [dev 网络接口]:所要设定的设备,例如enp0s3, enp0s4等。


    1、查看IP路由表
    ip route show         #show可以省略
    ip route show|column -t   #如果感觉显示的太乱可以通过column -t命令让显示更友好
    ---------------------------------------------------------------------------------
    [root@CentOS7GUI1 ~]# ip route
    default via 192.168.1.1 dev enp0s3 proto dhcp metric 100
    10.10.10.0/24 dev enp0s8 proto kernel scope link src 10.10.10.71 metric 101
    192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.56 metric 100
    192.168.12.0/24 via 192.168.1.254 dev enp0s3
    192.168.100.0/24 via 192.168.1.1 dev enp0s3
    192.168.101.0/24 via 192.168.1.1 dev enp0s3
    192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
    192.168.200.0/24 dev enp0s3 scope link
    ---------------------------------------------------------------------------------
    上面每一行就是一条路由,或叫做路由条目,default字样的是默认路由(默认网关)
    proto:此路由的路由协定,主要有redirect,kernel,boot,static,ra等,其中kernel是直接由核心判断自动设定,可以理解为直连路由。
    scope:路由的范围,主要是link,是与本设备有关的直接连接。

    2、添加路由
    ip route add default via 192.168.1.2     #添加默认路由,可以添加多个但是不要这样做,一个设备只添加一个默认路由,如果多个默认路由不能通过优先级区分,那么数据包会不知道从哪里走
    ip route add 192.168.200.0/24 dev enp0s3    #通过网络接口方式
    ip route add 192.168.100.0/24 via 192.168.1.1   #通过网关的方式,也就是下一跳,推荐这种方式
    ip route add 192.168.101.0/24 via 192.168.1.1 dev enp0s3   #可以两个信息都有

    3、删除路由
    ip route del default     #删除默认路由,从后添加的让前删除
    ip route del default via 192.168.1.2   #删除指定的默认路由
    ip route del 192.168.200.0/24      #删除去往指定目的网络的路由

    4、刷新路由表
    ip route flush cache

    5清空路由表
    ip route flush all   #不要轻易用这个命令,用以前也要把路由信息备份下

    七、设置永久的静态路由(CentOS7以上)
    配置前最好先确认下当前网络是那套管理网络连接的方案,默认是Network-Manager(NetworkManager服务开启),如果是这套可以通过nmtui命令在网卡对应激活的连接中添加路由
    看前面的文章了解相应的概念:RHEL/CentOS系列发行版网络配置介绍  及RHEL/CentOS系列发行版nmcli命令概述

    1、添加永久静态路由

    /etc/sysconfig/network 配置文件仅仅可以提供全局默认网关,语法同 Centos6 一样: GATEWAY=<ip address> ;但是不推荐这样做,因为:
    存在多个网卡时,默认路由似乎是随机经由某个网卡设备。检查了所有连接配置文件后发现,第一网卡的默认连接配置文件 ifcfg-eth0 设置了GATEWAY0(此设置会覆盖/etc/sysconfig/network 定义的全局默认网关),第二网卡的连接配置文件 ifcfg-eth1 使用的是dhcp,会在启动时也分配默认网关,两个默认网关让计算机糊涂了。这是在测试系统里经常发生的现象,生产系统一般不会让网卡用dhcp,或者即使是用了也会仔细分配默认网关防止冲突。

    推荐的方法是如果多个网卡都有上网,就把能连接到所有网络的那个网卡的配置文件里的添加网关选项,其它网卡都不要添加,这样就会只有一个默认路由,需要的路由再单独添加路由信息

    永久静态路由需要写到 /etc/sysconfig/network-scripts/route-****** 文件中,故在/etc/sysconfig/network-scripts/下,新建文件名为route-******的文件,(*******代表网卡名)
    比如添加两条静态路由:
    ------------------------------------------------------------------------
    [root@centos7 ~]# vi /etc/sysconfig/network-scripts/route-enp0s3
    10.15.150.0/24 via 192.168.150.253 dev enp0s3
    10.25.250.0/24 via 192.168.150.253 dev enp0s3
    ------------------------------------------------------------------------
    这里一定要清楚目的网络要从那个网口出去,及下一跳ip是多少

    重启计算机,或者重新启用设备enp0s3才能生效。


    2、清除永久静态路由

    可以删除 ifcfg-enp0s3文件或者注释掉文件里的相应静态路由条目,重启计算机。

    想要让修改后的静态路由立即生效,只能用 ip route del 手工删除静态路由条目。


    其他需要注意的:

    1)连接配置文件 ifcfg-* 里可以设置多个GATEWAY,一般第一个是 GATEWAY0,然后GATEWAY1, GATEWAY2... ,尾号最大的有效;

    2)如果必须在/etc/sysconfig/network 文件定义全局网关,连接配置文件 ifcfg-* 就不要设置GATEWAY了,dhcp的连接要注意dhcp服务器不要定义默认网关。

    3)ifcfg-enp0s3 文件改名为 ifcfg-eth0 后,route-enp0s3 文件也要改名为 route-eth0。

    4)有时候路由生效了但是在 ip route show 却没有显示,重启计算机后是肯定显示的,原因暂时不明。

     

    参考:

    https://www.jellythink.com/archives/469

    https://www.jianshu.com/p/7466862382c4

    https://www.cnblogs.com/panblack/p/Centos7_Static_Routes.html

     

     

  • 相关阅读:
    poj 1562 Oil Deposits
    poj 1650 Integer Approximation
    snmp4j 编程
    ubuntu 13.04 163源(亲测可用)
    c语言中static 用法总结(转)
    Spring入门
    Hibernate入门
    Struts2入门教程
    素数距离问题
    ASCII码排序
  • 原文地址:https://www.cnblogs.com/pipci/p/12575601.html
Copyright © 2011-2022 走看看