linux网络管理及常用网络工具详解


目录

1. linux网络管理

1.1 centos网卡命名规则

centos6的网卡命名规则为eth0,eth1...

centos7的网卡是基于硬件,设备拓扑等信息命名,命名规则为ens33,ens34...

  • centos7的网卡命名规则不易理解和操作,可以使用以下方法将其更改为centos6上的命名规则:

    1. 修改内核的启动参数,禁用预命名规则,在内核启动参数那里将net.ifnames=0和biosdevname=0参数关闭,其中biosdevname=0主要用在实体机上。

      [root@xuzhichao ~]# cat /etc/default/grub
      GRUB_TIMEOUT=5
      GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
      GRUB_DEFAULT=saved
      GRUB_DISABLE_SUBMENU=true
      GRUB_TERMINAL_OUTPUT="console"
      GRUB_CMDLINE_LINUX="crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet net.ifnames=0 biosdevname=0" <==此行为内核启动项
      GRUB_DISABLE_RECOVERY="true"

      可以使用sed命令在脚本中修改启动参数:

      #修改启动项
      [root@xuzhichao ~]# sed -i.bak -r '/CMDLINE/s/(.*)"$/\1 net.ifnames=0 biosdevname=0"/' /etc/default/grub
      #为grub2生成配置文件
      [root@xuzhichao ~]# grub2-mkconfig -o /etc/grub2.cfg &> /dev/null0

      注意:以上操作需要设备重启后生效

    2. 修改网卡的配置参数

      #修改网卡配置文件名称和配置文件内容
      [root@xuzhichao ~]# cd /etc/sysconfig/network-scripts/
      [root@xuzhichao network-scripts]# mv ifcfg-ens32 ifcfg-eth0
      [root@xuzhichao network-scripts]# vim ifcfg-eth0
      NAME=eth0
      DEVICE=eth0
  • 使用ethtool命令可以查看网卡的一些信息:

    [root@xuzhichao ~]# ethtool -i eth0
    driver: e1000 <==网卡的驱动程序
    version: 7.3.21-k8-NAPI
    firmware-version:
    expansion-rom-version:
    bus-info: 0000:02:04.0
    supports-statistics: yes
    supports-test: yes
    supports-eeprom-access: yes
    supports-register-dump: yes
    supports-priv-flags: no
  • 卸载和装载网卡驱动的方法

    #卸载网卡驱动
    [root@xuzhichao ~]# modprobe -r e1000
    #装载网卡驱动
    [root@xuzhichao ~]# modprobe e1000

1.2 域名解析配置文件

  • /etc/hosts文件用于存放主机名和ip地址的映射关系

    [root@xuzhichao ~]# cat /etc/hosts
    127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.20.17 xuzhichao
  • /etc/resolve.conf文件设置本机的DNS地址,进行域名解析

    [root@xuzhichao ~]# cat /etc/resolv.conf
    # Generated by NetworkManager
    search lan localdomain
    nameserver 192.168.2.1 <==此项即为设置的DNS地址
    nameserver 192.168.20.1
  • /etc/nsswitch.conf文件用户配置上述两个文件查找的顺序,在hosts那一行中,file代表/etc/hosts文件,dns则代表去dns服务器上查找。

    默认情况下设备时先去/etc/hosts文件中查找ip和域名的对应,若没有查到则去/etc/resolv.conf中定义的DNS地址上查找。

    [root@xuzhichao ~]# grep "host" /etc/nsswitch.conf
    #hosts: db files nisplus nis dns
    hosts: files dns myhostname

1.3 ifconfig命令管理网络接口

ifconfig命令用于显示和配置各个网卡的ip地址,该命令由net-tools软件包提供,常见用法如下。

  • ifconfig不加参数单独使用表示当前所有已经激活的接口

    [root@xuzhichao ~]# ifconfig
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 <==显示网卡状态和MTU值
    inet 192.168.2.123 netmask 255.255.255.0 broadcast 192.168.2.255 <==ip地址和掩码
    inet6 fe80::4809:4d0d:96a:b68e prefixlen 64 scopeid 0x20<link> <==ipv6地址和前缀
    ether 00:0c:29:2f:d0:d0 txqueuelen 1000 (Ethernet) <==网卡的mac地址
    RX packets 10200 bytes 851531 (831.5 KiB) <==网卡收到包的数量和字节
    RX errors 0 dropped 0 overruns 0 frame 0 <==网卡收包的错误统计
    TX packets 377 bytes 29724 (29.0 KiB) <==网卡发送包的数量和字节
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 <==网卡发送包的错误统计 eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet 192.168.20.17 netmask 255.255.255.0 broadcast 192.168.20.255
    inet6 fe80::f0da:450f:5a80:de8b prefixlen 64 scopeid 0x20<link>
    ether 00:0c:29:2f:d0:da txqueuelen 1000 (Ethernet)
    RX packets 2091 bytes 187809 (183.4 KiB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 1078 bytes 144097 (140.7 KiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 eth2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet 192.168.20.30 netmask 255.255.255.0 broadcast 192.168.20.255
    inet6 fe80::9932:c796:7c47:7513 prefixlen 64 scopeid 0x20<link>
    ether 00:0c:29:2f:d0:e4 txqueuelen 1000 (Ethernet)
    RX packets 737 bytes 75209 (73.4 KiB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 53 bytes 9122 (8.9 KiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
    inet 127.0.0.1 netmask 255.0.0.0
    inet6 ::1 prefixlen 128 scopeid 0x10<host>
    loop txqueuelen 1000 (Local Loopback)
    RX packets 64 bytes 5184 (5.0 KiB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 64 bytes 5184 (5.0 KiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  • ifconfig可以跟上接口名只显示指定接口信息

    [root@xuzhichao ~]# ifconfig eth0
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet 192.168.2.123 netmask 255.255.255.0 broadcast 192.168.2.255
    inet6 fe80::4809:4d0d:96a:b68e prefixlen 64 scopeid 0x20<link>
    ether 00:0c:29:2f:d0:d0 txqueuelen 1000 (Ethernet)
    RX packets 10220 bytes 853115 (833.1 KiB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 377 bytes 29724 (29.0 KiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  • ifconfig -a参数表示显示设备的所有网卡信息,包括状态为down的网卡

  • ifconfig -s参数显示接口的简要信息和收发报文的统计

    [root@xuzhichao ~]# ifconfig -s
    Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
    eth0 1500 10275 0 0 0 381 0 0 0 BMRU
    eth1 1500 2226 0 0 0 1154 0 0 0 BMRU
    eth2 1500 764 0 0 0 55 0 0 0 BMRU
    lo 65536 64 0 0 0 64 0 0 0 LRU
  • ipconfig命令可以激活或禁用接口,使用up和down参数。

    也可以使用ifup和ifdown启用和禁用网卡,该命令依赖于网卡的配置文件。

    #把eth2接口down掉
    [root@xuzhichao ~]# ifconfig eth2 down
    [root@xuzhichao ~]# ifconfig eth2
    eth2: flags=4098<BROADCAST,MULTICAST> mtu 1500
    inet 192.168.20.30 netmask 255.255.255.0 broadcast 192.168.20.255
    ether 00:0c:29:2f:d0:e4 txqueuelen 1000 (Ethernet)
    RX packets 776 bytes 79166 (77.3 KiB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 55 bytes 9524 (9.3 KiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 #把eth2接口重新激活
    [root@xuzhichao ~]# ifconfig eth2 up
  • ifconfig命令可以直接配置接口的ip地址

    注意:使用ifconfig命令设置ip地址会直接覆盖掉接口原来的ip地址

    ip地址有两种表示形式:

    • IP/NETMASK
    • IP netmask NETMASK
    [root@xuzhichao ~]# ifconfig eth2 10.0.0.1/24 up
    [root@xuzhichao ~]# ifconfig eth2
    eth2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet 10.0.0.1 netmask 255.255.255.0 broadcast 10.0.0.255
    inet6 fe80::9932:c796:7c47:7513 prefixlen 64 scopeid 0x20<link>
    ether 00:0c:29:2f:d0:e4 txqueuelen 1000 (Ethernet)
    RX packets 777 bytes 79508 (77.6 KiB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 66 bytes 10678 (10.4 KiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@xuzhichao ~]# ifconfig eth2 10.1.1.1 netmask 255.255.255.0 up
    [root@xuzhichao ~]# ifconfig eth2
    eth2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet 10.1.1.1 netmask 255.255.255.0 broadcast 10.1.1.255
    inet6 fe80::9932:c796:7c47:7513 prefixlen 64 scopeid 0x20<link>
    ether 00:0c:29:2f:d0:e4 txqueuelen 1000 (Ethernet)
    RX packets 777 bytes 79508 (77.6 KiB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 66 bytes 10678 (10.4 KiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  • ifconfig命令可以为网卡配置别名并配置第二地址

    [root@xuzhichao ~]# ifconfig eth2:0 21.1.1.1/24 up
    [root@xuzhichao ~]# ifconfig eth2:0
    eth2:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet 21.1.1.1 netmask 255.255.255.0 broadcast 21.1.1.255
    ether 00:0c:29:2f:d0:e4 txqueuelen 1000 (Ethernet) #取消设置别名和第二地址
    [root@xuzhichao ~]# ifconfig eth2:0 down

最后需要注意:使用ifconfig命令对网卡进行设置都是临时的,一旦网络服务重启或设备重启,网卡配置都会丢失,若需要永久生效,需要把网络配置写到相应的配置文件当中。

1.4 网卡配置文件

网卡的配置文件都放置在目录/etc/sysconfig/network-scripts/中,以ifcfg-网卡名称来命名的文件,通过配置文件可以让网卡上的ip,网关,dns等信息永久生效。

网卡配置文件的主要内容如下:

  • DEVICE=eth0 #此配置文件应用到的网卡设备,网卡设备名必须是/sys/class/net下的某个网卡名;

  • HWADDR=00:0C:29:CC:60:B2 #以太网卡硬件地址,即MAC地址(如果是VMware克隆的虚拟机无法启动网卡,可以删除此项);

  • TYPE=Ethernet #网卡类型,目前基本上都是以太网;

  • UUID=176582f6-d198-4e4f-aab0-34ab10d1724 #网卡的通用唯一识别码(Universally Unique Identifier,如果是VMware克隆的虚拟机无法启动网卡,可以删除此项);

  • ONBOOT=YES #这里要设置为yes,yes表示下次开机时自动激活网卡设备,no表示下次开机时不激活网卡设备;

  • NM_CONTROLLED=yes #是否通过NetWorkManager服务管理网卡设备,在centos6上建议设置为no;

  • BOOTPROTO=none #激活此网卡时使用的地址配置方式,有:none|static|dhcp三种方式,none和static表示手动配置ip地址,dhcp表示通过dhcp自动获取ip地址,当配置为dhcp时,以下的IPADDR项无效;

  • IPADDR=10.0.0.8 #配置网卡的ip地址;

  • NETMASK=255.255.255.0 #配置子网掩码;

  • PERFIX=24 #也可以使用前缀方式设置子网掩码;

  • GATEWAY=10.0.0.254 #配置网关地址;

  • DNS1=202.206.0.20 #主DNS,这里默认会覆盖,以及优先于/etc/resolv.conf的配置生效;

  • DNS2=8.8.8.8 #备DNS,这里默认会覆盖,以及优先于/etc/resolv.conf的配置生效;

  • IPV6INIT=no #是否支持IPV6;

  • USERCTL=no #是否允许普通用户启用或禁用网卡。

  • PEERDNS=yes #默认为yes,设置为yes时,表示此文件设置的DNS会覆盖/etc/resolv.conf文件中的DNS,若使用dhcp方式获取地址,自动获取的dns默认优先于/etc/resolv.conf文件中的DNS。

  • PEERROUTES=yes #设置为yes时,表示dhcp获取的路由会覆盖route-ethx中的永久路由。

  • DEFROUTE=yes #设置为yes时,表示dhcp获取的默认路由会覆盖route-ethx中的默认路由。

    #示例:对网卡eth1静态配置ip地址
    [root@xuzhichao network-scripts]# cat ifcfg-eth1
    TYPE=Ethernet
    BOOTPROTO=none
    IPADDR=192.168.20.17
    PREFIX=24
    GATEWANY=192.168.20.1
    DNS1=192.168.20.1
    DEFROUTE=yes
    NAME=eth1-static
    UUID=b0b223a0-fa90-4cdb-b762-16d88aeed548
    DEVICE=eth1
    ONBOOT=yes

注意:在网卡配置文件中配置的网关地址会生成metric为0的默认路由。

1.4.1 为网卡配置多个地址

为eth2网卡配置两个地址,其中一个使用dhcp方式获取地址,一个配置静态地址,永久生效。

注意:需要把eth2主接口设置为dhcp自动获取地址,为其子接口配置静态地址,实现dhcp和静态同时使用,子接口不支持dhcp模式。

  • 临时配置,使用ifcofig或ip命令配置

    1. ifconfig eth2:0 192.168.20.100/24 up
    2. ip add add 10.1.1.1/24 dev eth2 label eth2:1
    [root@xuzhichao network-scripts]# ip add add 10.1.1.1/24 dev eth2 label eth2:1
    
    [root@xuzhichao network-scripts]# ifconfig eth2:0 192.168.20.100/24 up
    
    [root@xuzhichao network-scripts]# ip add show eth2
    4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:2f:d0:e4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.20.30/24 brd 192.168.20.255 scope global noprefixroute dynamic eth2
    valid_lft 1753sec preferred_lft 1753sec
    inet 10.1.1.1/24 scope global eth2:1
    valid_lft forever preferred_lft forever
    inet 192.168.20.100/24 brd 192.168.20.255 scope global secondary eth2:0
    valid_lft forever preferred_lft forever
    inet6 fe80::9932:c796:7c47:7513/64 scope link noprefixroute
    valid_lft forever preferred_lft forever
  • 永久配置,使用配置文件

    [root@xuzhichao network-scripts]# cat ifcfg-eth2
    DEVICE=eth2
    TYPE=Ethernet
    BOOTPROTO=dhcp
    ONBOOT=yes #子接口的配置文件
    [root@xuzhichao network-scripts]# cat ifcfg-eth2:0
    DEVICE=eth2:0
    TYPE=Ethernet
    BOOTPROTO=static
    ONBOOT=yes
    IPADDR=192.168.20.100
    NETMASK=255.255.255.0
    GATEWAY=192.168.20.1
    DNS1=192.168.20.1 [root@xuzhichao network-scripts]# systemctl restart network
    [root@xuzhichao network-scripts]# ifconfig eth2
    eth2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet 192.168.20.30 netmask 255.255.255.0 broadcast 192.168.20.255
    inet6 fe80::9932:c796:7c47:7513 prefixlen 64 scopeid 0x20<link>
    ether 00:0c:29:2f:d0:e4 txqueuelen 1000 (Ethernet)
    RX packets 726 bytes 66044 (64.4 KiB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 289 bytes 49106 (47.9 KiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@xuzhichao network-scripts]# ifconfig eth2:0
    eth2:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet 192.168.20.100 netmask 255.255.255.0 broadcast 192.168.20.255
    ether 00:0c:29:2f:d0:e4 txqueuelen 1000 (Ethernet)
    [root@xuzhichao network-scripts]# ip add show eth2
    4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:2f:d0:e4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.20.30/24 brd 192.168.20.255 scope global noprefixroute dynamic eth2
    valid_lft 1280sec preferred_lft 1280sec
    inet 192.168.20.100/24 brd 192.168.20.255 scope global secondary eth2:0
    valid_lft forever preferred_lft forever
    inet6 fe80::9932:c796:7c47:7513/64 scope link noprefixroute
    valid_lft forever preferred_lft forever

1.5 路由管理

linux中常用的路由一般使用静态路由,可分为主机路由,网段路由和默认路由。

路由的匹配顺序是:

  1. 最长掩码匹配;
  2. 比较路由的metric值,越小越优先;

配置路由的方式可以使用route和ip等命令进行配置,这种配置方法为临时生效,要想永久生效,需要写入路由的配置文件中。

1.5.1 route命令

使用route命令可以临时添加或删除路由,也可以查看当前路由。

  • route -n用于查看当前路由

    [root@xuzhichao ~]# route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    0.0.0.0 192.168.2.1 0.0.0.0 UG 105 0 0 eth0 <==默认路由
    10.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2 <==直接路由
    10.1.1.0 0.0.0.0 255.255.255.0 U 102 0 0 eth2
    192.168.2.0 0.0.0.0 255.255.255.0 U 105 0 0 eth0
    192.168.20.0 0.0.0.0 255.255.255.0 U 102 0 0 eth2
    192.168.20.0 0.0.0.0 255.255.255.0 U 102 0 0 eth2
    192.168.20.0 0.0.0.0 255.255.255.0 U 104 0 0 eth1
    192.168.20.0 0.0.0.0 255.255.255.0 U 105 0 0 eth0
  • route可以添加路,语法格式为:

    route add [-net | -host] target [netmask] gw GATEWAY
    
    说明:
    -net:表示添加网段路由;
    -host:表示添加主机路由;
    target:为目标网络地址或主机地址;
    netmask:网络地址对应的掩码;
    GATEWAY:下一跳地址
    #示例:添加主机路由和网段路由
    [root@xuzhichao ~]# route add -host 106.1.1.1 gw 192.168.20.30
    [root@xuzhichao ~]# route add -net 107.0.0.0 netmask 255.255.255.0 gw 192.168.20.17
    [root@xuzhichao ~]# route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    0.0.0.0 192.168.2.1 10.0.0.0 UG 105 0 0 eth0
    10.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
    10.1.1.0 0.0.0.0 255.255.255.0 U 102 0 0 eth2
    106.1.1.1 192.168.20.30 255.255.255.255 UGH 0 0 0 eth2 <==主机路由
    107.0.0.0 192.168.20.17 255.255.255.0 UG 0 0 0 eth1 <==网段路由
    192.168.2.0 0.0.0.0 255.255.255.0 U 105 0 0 eth0
    192.168.20.0 0.0.0.0 255.255.255.0 U 102 0 0 eth2
    192.168.20.0 0.0.0.0 255.255.255.0 U 102 0 0 eth2
    192.168.20.0 0.0.0.0 255.255.255.0 U 104 0 0 eth1
    192.168.20.0 0.0.0.0 255.255.255.0 U 105 0 0 eth0
  • route添加默认路由的方法为

    route add default gw GATEWAY
    route add -net 0.0.0.0 netmask 0.0.0.0 gw GATEWAY
    [root@xuzhichao ~]# route add default gw 192.168.20.17
    [root@xuzhichao ~]# route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    0.0.0.0 192.168.20.17 0.0.0.0 UG 0 0 0 eth1 <==手动添加的默认路由
    0.0.0.0 192.168.2.1 0.0.0.0 UG 105 0 0 eth0
    10.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
    10.1.1.0 0.0.0.0 255.255.255.0 U 102 0 0 eth2
    106.1.1.1 192.168.20.30 255.255.255.255 UGH 0 0 0 eth2
    107.0.0.0 192.168.20.17 255.255.255.0 UG 0 0 0 eth1
    192.168.2.0 0.0.0.0 255.255.255.0 U 105 0 0 eth0
    192.168.20.0 0.0.0.0 255.255.255.0 U 102 0 0 eth2
    192.168.20.0 0.0.0.0 255.255.255.0 U 102 0 0 eth2
    192.168.20.0 0.0.0.0 255.255.255.0 U 104 0 0 eth1

    注意:手动添加的默认路由的metric值为0,优先于dhcp获取的到的默认路由。

  • route删除路由的语法如下:

    route del [-net | -host] target [netmask] gw GATEWAY
    #示例一:删除网段路由
    [root@xuzhichao ~]# route del -net 107.0.0.0 netmask 255.255.255.0 gw 192.168.20.17 #示例二:删除默认路由
    [root@xuzhichao ~]# route del -net default gw 192.168.20.17

1.5.2 配置永久路由

  • 方法一:创建路由配置文件/etc/sysconfig/network-scripts/route-ethX,该路由的出接口是什么,路由文件就以该接口命名。例如出接口是eth0,路由配置文件就命名为route-eth0。

    路由配置文件的格式为,一行写一个路由条目,每一个路由条目格式如下:

    DEST/PREFIX     via     nexthop
    
    说明:
    DEST:目标网络号;
    PREFIX:网络号对应的掩码;
    via:固定关键字;
    nexthop:下一跳地址;

    例如eth2的地址为192.168.20.31,以下几条路由的出接口都是eth2,可以编写配置文件/etc/sysconfig/network-scripts/route-eth2:

    [root@xuzhichao ~]# vim /etc/sysconfig/network-scripts/route-eth2
    #默认路由的两种编写方法
    default via 192.168.20.1
    0.0.0.0/0 via 192.168.20.1 #网段路由
    20.0.0.0/24 via 192.168.20.1 #主机路由
    31.1.1.1/32 via 192.168.20.1

    写完以后重新启动network服务,路由才能生效。

    重启网路服务的命令为 systemctl restart network(centos7)或service network restart(centos6)

    [root@xuzhichao ~]# systemctl restart network
    [root@xuzhichao ~]# service network restart
    Restarting network (via systemctl): [ OK ] [root@xuzhichao ~]# route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    0.0.0.0 192.168.2.1 0.0.0.0 UG 100 0 0 eth0
    20.0.0.0 192.168.20.1 255.255.255.0 UG 102 0 0 eth2
    31.1.1.1 192.168.20.1 255.255.255.255 UGH 102 0 0 eth2
    192.168.2.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
    192.168.20.0 0.0.0.0 255.255.255.0 U 101 0 0 eth1
    192.168.20.0 0.0.0.0 255.255.255.0 U 102 0 0 eth2

    注意以上路由中默认路由没有生效。

    在使用上述方法配置永久路由时,需要注意以下事项:

    1. route-ethX的对应的网卡配置文件ifcfg-ethX必须存在(网卡配置文件名称必须是ifcfg-ethX)且其中的DEVICE必须设置为ethX,否则路由不生效;

    2. 如果要配置默认路由,必须保证所有使用了DHCP服务的网卡配置文件中的DEFROUTE需要设置为no,即DHCP不设置默认路由,否则dhcp设置的默认路由会覆盖此处配置的默认路由;

    3. 如果要配置非默认路由,则必须保证所有使用了DHCP服务的网卡配置文件中的PEERROUTES设置为no,即dhcp设置的路由允许被覆盖,否则dhcp中设置的相同网段的路由会覆盖此处配置的路由;

    PS:在实际测试时,方法一默认路由无法生效。

  • 方法二:

    可以参考/etc/init.d/network脚本中关于路由的添加方法:

    [root@xuzhichao ~]#cat /etc/init.d/network
    #Add non interface-specific static-routes.
    if [ -f /etc/sysconfig/static-routes ]; then
    if [ -x /sbin/route ]; then
    grep "^any" /etc/sysconfig/static-routes | while read ignore args ; do
    /sbin/route add -$args
    done
    else
    net_log $"Legacy static-route support not available: /sbin/route not found"
    fi
    fi

    添加以下路由:

    #配置静态路由和默认路由
    [root@xuzhichao ~]# vim /etc/sysconfig/static-routes
    any net 99.0.0.0 netmask 255.255.255.0 gw 192.168.2.1
    any net 0.0.0.0 netmask 0.0.0.0 gw 192.168.20.1 #重启网络服务(二选一即可)
    [root@xuzhichao ~]# systemctl restart network
    [root@xuzhichao ~]# service network restart
    Restarting network (via systemctl): [ OK ] #查看路由,此时默认路由可以和dhcp下发的默认路由并存,而且优先级高于dhcp下发的默认路由
    [root@xuzhichao ~]# route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    0.0.0.0 192.168.20.1 0.0.0.0 UG 0 0 0 eth1
    0.0.0.0 192.168.2.1 0.0.0.0 UG 100 0 0 eth0
    20.0.0.0 192.168.20.1 255.255.255.0 UG 102 0 0 eth2
    31.1.1.1 192.168.20.1 255.255.255.255 UGH 102 0 0 eth2
    99.0.0.0 192.168.2.1 255.255.255.0 UG 0 0 0 eth0
    192.168.2.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
    192.168.20.0 0.0.0.0 255.255.255.0 U 101 0 0 eth1
    192.168.20.0 0.0.0.0 255.255.255.0 U 102 0 0 eth2

    第二种方法为使用network配置脚本添加,没有方法一种的限制条件。

1.6 ip命令详解

ip命令是一个功能及其强大的命令,几乎可以管理和查看网络相关的一切信息。

ip命令有很多的子命令,分别用来完成不同的功能。

[root@xuzhichao ~]# ip --help
Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
ip [ -force ] -batch filename
where OBJECT := { link | address | addrlabel | route | rule | neigh | ntable |
tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm |
netns | l2tp | fou | macsec | tcp_metrics | token | netconf | ila |
vrf }
OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |
-h[uman-readable] | -iec |
-f[amily] { inet | inet6 | ipx | dnet | mpls | bridge | link } |
-4 | -6 | -I | -D | -B | -0 |
-l[oops] { maximum-addr-flush-attempts } | -br[ief] |
-o[neline] | -t[imestamp] | -ts[hort] | -b[atch] [filename] |
-rc[vbuf] [size] | -n[etns] name | -a[ll] | -c[olor]}

每一个OBJECT都是一个子命令,子命令获取帮助的方法如下:

[root@xuzhichao ~]# ip link help

ip的子命令支持缩写,例如ip addr 可以简写成ip a ,会依据上述ip --help语法中OBJECT从前往后匹配的第一项。

同时ip命令的自命令支持tab键自动补全的功能,如果自动补全功能使用,可以尝试安装以下数据包:

yum install bash-completion.noarch  -y

ip命令的常用的几个子命令以下依次说明。

1.6.1 ip addr命令用法

ip addr命令用于管理网卡的ip地址。

  • 查看网卡ip地址的语法为ip addr show,其中show可以省略,可以加上对应的接口只显示该接口的地址信息,加上接口后show不能省略。

    [root@xuzhichao ~]# ip a
    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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:2f:d0:d0 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.123/24 brd 192.168.2.255 scope global noprefixroute dynamic eth0
    valid_lft 85634sec preferred_lft 85634sec
    inet6 fe80::4809:4d0d:96a:b68e/64 scope link noprefixroute
    valid_lft forever preferred_lft forever
    3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:2f:d0:da brd ff:ff:ff:ff:ff:ff
    inet 192.168.20.17/24 brd 192.168.20.255 scope global noprefixroute eth1
    valid_lft forever preferred_lft forever
    inet6 fe80::f0da:450f:5a80:de8b/64 scope link noprefixroute
    valid_lft forever preferred_lft forever
    4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:2f:d0:e4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.20.31/24 brd 192.168.20.255 scope global noprefixroute dynamic eth2
    valid_lft 1035sec preferred_lft 1035sec
    inet6 fe80::20c:29ff:fe2f:d0e4/64 scope link
    valid_lft forever preferred_lft forever [root@xuzhichao ~]# ip addr show eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:2f:d0:d0 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.123/24 brd 192.168.2.255 scope global noprefixroute dynamic eth0
    valid_lft 85625sec preferred_lft 85625sec
    inet6 fe80::4809:4d0d:96a:b68e/64 scope link noprefixroute
    valid_lft forever preferred_lft forever
  • 增加或删除ip地址的语法格式为:

    ip addr add|del IP/PREFIX dev IFACE [label LABEL]
    
    说明:
    add:增加ip地址;
    del:删除ip地址;
    IP/PREFIX:配置ip地址和掩码;
    IFACE:指定接口设备名称;
    LABEL:添加地址时指明网卡别名;

    使用ip addr可以直接添加接口的第二地址,使用示例如下:

    #示例一:增加ip地址
    [root@xuzhichao ~]# ip add add 12.1.1.1/24 dev eth2
    [root@xuzhichao ~]# ip add add 13.1.1.1/24 dev eth2
    [root@xuzhichao ~]# ip ad show eth2
    4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:2f:d0:e4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.20.31/24 brd 192.168.20.255 scope global noprefixroute dynamic eth2
    valid_lft 1474sec preferred_lft 1474sec
    inet 12.1.1.1/24 scope global eth2
    valid_lft forever preferred_lft forever
    inet 13.1.1.1/24 scope global eth2
    valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe2f:d0e4/64 scope link
    valid_lft forever preferred_lft forever #示例二:删除接口的13.1.1.1的ip地址
    [root@xuzhichao ~]# ip add del 13.1.1.1/24 dev eth2 #示例三:添加eth2的别名
    [root@xuzhichao ~]# ip add add 13.1.1.1/24 dev eth2 label eth2:0
    [root@xuzhichao ~]# ip add show eth2
    4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:2f:d0:e4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.20.31/24 brd 192.168.20.255 scope global noprefixroute dynamic eth2
    valid_lft 1196sec preferred_lft 1196sec
    inet 12.1.1.1/24 scope global eth2
    valid_lft forever preferred_lft forever
    inet 13.1.1.1/24 scope global eth2:0
    valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe2f:d0e4/64 scope link
    valid_lft forever preferred_lft forever
    [root@xuzhichao ~]# ip add del 13.1.1.1/24 dev eth2 label eth2:0
  • ip addr flush可以清空接口上的所有ip地址,包括别名下的地址。

    [root@xuzhichao ~]# ip add show eth2
    4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:2f:d0:e4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.20.31/24 brd 192.168.20.255 scope global noprefixroute dynamic eth2
    valid_lft 1193sec preferred_lft 1193sec
    inet 12.1.1.1/24 scope global eth2
    valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe2f:d0e4/64 scope link
    valid_lft forever preferred_lft forever
    [root@xuzhichao ~]# ip add flush eth2
    [root@xuzhichao ~]# ip add show eth2
    4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:2f:d0:e4 brd ff:ff:ff:ff:ff:ff

1.6.2 ip link命令用法

ip link命令可以查看和修改网卡的链路层信息,即MAC地址。

  • ip link show 可以用来查看接口的物理状态和MAC地址

    [root@xuzhichao ~]# ip 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
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:2f:d0:d0 brd ff:ff:ff:ff:ff:ff
    3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:2f:d0:da brd ff:ff:ff:ff:ff:ff
    4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:2f:d0:e4 brd ff:ff:ff:ff:ff:ff [root@xuzhichao ~]# ip link show eth2
    4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:2f:d0:e4 brd ff:ff:ff:ff:ff:ff
  • ip link可以启动或禁用接口,语法为:

    ip link set DEVICE up|down

    #禁用eth2接口
    [root@xuzhichao ~]# ip link set eth2 down
    [root@xuzhichao ~]# ip link show eth2
    4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:2f:d0:e4 brd ff:ff:ff:ff:ff:ff #启用eth2接口
    [root@xuzhichao ~]# ip link set eth2 up
    [root@xuzhichao ~]# ip link show eth2
    4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:2f:d0:e4 brd ff:ff:ff:ff:ff:ff
  • ip link 命令可以修改网卡的mac地址,设置mtu。

    #设置eth2接口的MAC地址
    [root@xuzhichao ~]# ip link set eth2 address 00:01:7a:03:1c:9b
    [root@xuzhichao ~]# ip link show eth2
    4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:01:7a:03:1c:9b brd ff:ff:ff:ff:ff:ff #设置eth2接口的mtu值
    [root@xuzhichao ~]# ip link set eth2 mtu 1480
    [root@xuzhichao ~]# ip link show eth2
    4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1480 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:01:7a:03:1c:9b brd ff:ff:ff:ff:ff:ff

1.6.3 ip route 命令方法

ip route 命令用于查看和管理路由,支持查看,添加,删除,清空路由,备份恢复路由等。

ip route对路由的操作都是临时行为,网络服务重启失效。

  • 查看路由信息:ip route list|show用于查看路由信息,list|show可以省略。

    [root@xuzhichao ~]# ip route list
    default via 192.168.20.1 dev eth1
    default via 192.168.2.1 dev eth0 proto dhcp metric 100
    99.0.0.0/24 via 192.168.2.1 dev eth0
    192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.123 metric 100
    192.168.20.0/24 dev eth1 proto kernel scope link src 192.168.20.17 metric 101
    192.168.20.0/24 dev eth2 proto kernel scope link src 192.168.20.32 metric 102 [root@xuzhichao ~]# ip route list 99.0.0.0/24
    99.0.0.0/24 via 192.168.2.1 dev eth0
  • 添加或删除路由信息,语法为:

    ip route add|del TARGET/PREFIX via nexthop
    
    说明:
    add:增加路由;
    del:删除路由;
    TARGET:目标网段;
    PREFIX:网路掩码;
    nexthop:下一跳地址

    添加路由示例如下:

    #添加网段路由
    [root@xuzhichao ~]# ip route add 30.0.0.0/24 via 192.168.20.1 #添加主机路由
    [root@xuzhichao ~]# ip route add 30.0.1.1/32 via 192.168.20.1 #添加默认路由
    [root@xuzhichao ~]# ip route add default via 192.168.20.1 dev eth2 [root@xuzhichao ~]# ip route
    default via 192.168.20.1 dev eth2
    default via 192.168.2.1 dev eth0 proto dhcp metric 100
    30.0.0.0/24 via 192.168.20.1 dev eth1
    30.0.1.1 via 192.168.20.1 dev eth1
    99.0.0.0/24 via 192.168.2.1 dev eth0
    192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.123 metric 100
    192.168.20.0/24 dev eth1 proto kernel scope link src 192.168.20.17 metric 101
    192.168.20.0/24 dev eth2 proto kernel scope link src 192.168.20.32 metric 102

    删除路由示例如吗,使用ip route删除路由只需要复制ip route查看出来的路由即可。

    #删除默认路由
    [root@xuzhichao ~]# ip route del default via 192.168.20.1 dev eth2 #删除网段路由
    [root@xuzhichao ~]# ip route del 30.0.0.0/24 via 192.168.20.1 dev eth1 [root@xuzhichao ~]# ip route
    default via 192.168.2.1 dev eth0 proto dhcp metric 100
    30.0.1.1 via 192.168.20.1 dev eth1
    99.0.0.0/24 via 192.168.2.1 dev eth0
    192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.123 metric 100
    192.168.20.0/24 dev eth1 proto kernel scope link src 192.168.20.17 metric 101
    192.168.20.0/24 dev eth2 proto kernel scope link src 192.168.20.32 metric 102
  • ip route flush 用于清空路由表,可以使用dev DEVICE和via nexthop两个参数,指定清空哪个接口或下一跳的路由,不指定接口或下一跳会清空所有路由:

    [root@xuzhichao ~]# ip route
    default via 192.168.2.1 dev eth0 proto dhcp metric 100
    30.0.1.1 via 192.168.20.1 dev eth1
    99.0.0.0/24 via 192.168.2.1 dev eth0
    192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.123 metric 100
    192.168.20.0/24 dev eth1 proto kernel scope link src 192.168.20.17 metric 101
    192.168.20.0/24 dev eth2 proto kernel scope link src 192.168.20.32 metric 102
    [root@xuzhichao ~]# ip route flush dev eth2
    [root@xuzhichao ~]# ip route flush via 192.168.20.1
    [root@xuzhichao ~]# ip route
    default via 192.168.2.1 dev eth0 proto dhcp metric 100
    99.0.0.0/24 via 192.168.2.1 dev eth0
    192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.123 metric 100

    注意:Ip route flush清空接口路由时会清空直连路由,导致主机无法ping通直连网段,慎用!

    #无法ping通网关地址
    [root@xuzhichao ~]# ping 192.168.20.1
    PING 192.168.20.1 (192.168.20.1) 56(84) bytes of data.
    ^C
    --- 192.168.20.1 ping statistics ---
    77 packets transmitted, 0 received, 100% packet loss, time 76445ms #增加直连路由
    [root@xuzhichao ~]# ip route add 192.168.20.0/24 dev eth1 proto kernel scope link src 192.168.20.17 metric 102
  • 备份和恢复路由:

    ip route save > FILE

    ip route restore < FILE

    #备份路由
    [root@xuzhichao ~]# ip route save > route.txt [root@xuzhichao ~]# ip route flush dev eth2
    [root@xuzhichao ~]# ip route flush dev eth0
    [root@xuzhichao ~]# ip route
    192.168.20.0/24 dev eth1 proto kernel scope link src 192.168.20.17 metric 102 #恢复路由
    [root@xuzhichao ~]# ip route restore < route.txt
    RTNETLINK answers: File exists
    [root@xuzhichao ~]# ip route
    default via 192.168.2.1 dev eth0 proto dhcp metric 100
    99.0.0.0/24 via 192.168.2.1 dev eth0
    192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.123 metric 100
    192.168.20.0/24 dev eth2 proto kernel scope link src 192.168.20.31 metric 102
    192.168.20.0/24 dev eth1 proto kernel scope link src 192.168.20.17 metric 102

1.7 nmcli命令详解

nmcli和nmtui是NetworkManger提供的网络管理工具,nmtui是图形界面,nmcli是命令行配置工具。

nmcli命令支持子命令简写和自动补全,任意不能补全需要安装软件包yum install bash-completion.noarch。

1.7.1 nmcli常用概念

在nmcli中有一个重要概念:connection,在nmcli中,每一个网络接口都有一个对应的connection,对应了接口的一套完整的网络配置,接口可以切换不同的connection来切换不同的配置。

每一个connection都有一个con-name,还有系统为其分配的UUID。

connection中需要执行网卡的类型,一般为ethernet,也可以是bond,wifi等接口类型;还有指定该connection对应的网络接口,以及指定接口的各种属性,例如地址获取方式,ip地址,掩码,网关,dns等。

每增加一个connection,都会自动生成一个网卡的配置文件,即在/etc/sysconfig/network-scripts/下生成一个名为ifcfg-NAME的文件,其中NAME为connection的con-name。

1.7.2 nmcli用法说明

nmcli的用法较多,下面一一说明。

  • nmcli connection show CON-NAME:查看connection的的内容

    #示例一:查看当前的网卡和con-name的对应关系
    [root@xuzhichao ~]# nmcli connection
    NAME UUID TYPE DEVICE
    eth1-static b0b223a0-fa90-4cdb-b762-16d88aeed548 ethernet eth1
    eth0-dhcp 3b80adc9-20cb-4da5-8ca2-3049006cdd0a ethernet eth0
    System eth2 3a73717e-65ab-93e8-b518-24f5af32dc0d ethernet eth2 #示例二:查看eth0-dhcp的具体配置
    [root@xuzhichao ~]# nmcli connection show eth0-dhcp
    connection.id: eth0-dhcp
    connection.uuid: 3b80adc9-20cb-4da5-8ca2-3049006cdd0a
    connection.stable-id: --
    connection.type: 802-3-ethernet
    connection.interface-name: eth0
    connection.autoconnect: yes
    connection.autoconnect-priority: 0
    connection.autoconnect-retries: -1 (default)
    connection.multi-connect: 0 (default)
    connection.auth-retries: -1
    connection.timestamp: 1622945363
    connection.read-only: no
    connection.permissions: --
    connection.zone: --
    connection.master: --
    connection.slave-type: --
    connection.autoconnect-slaves: -1 (default)
    ......
  • nmclic device [disconnect | connect] IFACE:启用或禁用指定网卡接口

    nmcli device status:查看接口状态

    nmcli device show IFCFG :查看网卡的信息

    #禁用eth2网卡
    [root@xuzhichao ~]# nmcli device disconnect eth2
    Device 'eth2' successfully disconnected. #查看网卡的状态
    [root@xuzhichao ~]# nmcli device status
    DEVICE TYPE STATE CONNECTION
    eth1 ethernet connected eth1-static
    eth0 ethernet connected eth0-dhcp
    eth2 ethernet disconnected --
    lo loopback unmanaged -- #禁用后网卡物理up,但是没有地址,可以临时配置ip地址
    [root@xuzhichao ~]# ip add show eth2
    4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:2f:d0:e4 brd ff:ff:ff:ff:ff:ff [root@xuzhichao ~]# ip add add 1.1.1.1/24 dev eth2
    [root@xuzhichao ~]# ip add show eth2
    4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:2f:d0:e4 brd ff:ff:ff:ff:ff:ff
    inet 1.1.1.1/24 scope global eth2
    valid_lft forever preferred_lft forever #启用网卡接口
    [root@xuzhichao ~]# nmcli device connect eth2
    Device 'eth2' successfully activated with '3a73717e-65ab-93e8-b518-24f5af32dc0d'.
    [root@xuzhichao ~]# nmcli device status
    DEVICE TYPE STATE CONNECTION
    eth1 ethernet connected eth1-static
    eth0 ethernet connected eth0-dhcp
    eth2 ethernet connected System eth2
    lo loopback unmanaged -- #查看eth2的网卡信息
    [root@xuzhichao ~]# nmcli device show eth2
    GENERAL.DEVICE: eth2
    GENERAL.TYPE: ethernet
    GENERAL.HWADDR: 00:0C:29:2F:D0:E4
    GENERAL.MTU: 1500
    GENERAL.STATE: 100 (connected)
    GENERAL.CONNECTION: System eth2
    GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/5
    WIRED-PROPERTIES.CARRIER: on
    IP4.ADDRESS[1]: 192.168.20.31/24
    IP4.GATEWAY: --
    IP4.ROUTE[1]: dst = 192.168.20.0/24, nh = 0.0.0.0, mt = 102
    IP4.ROUTE[2]: dst = 20.0.0.0/24, nh = 192.168.20.1, mt = 102
    IP4.ROUTE[3]: dst = 31.1.1.1/32, nh = 192.168.20.1, mt = 102
    IP4.DNS[1]: 192.168.20.1
    IP4.DOMAIN[1]: localdomain
    IP6.ADDRESS[1]: fe80::20c:29ff:fe2f:d0e4/64
    IP6.GATEWAY: --
    IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 256
    IP6.ROUTE[2]: dst = ff00::/8, nh = ::, mt = 256, table=255
  • 新建和删除connection,语法格式为:

    nmcli connection add con-name CON-NAME type TYPE ifname IFCFG ipv4.method METHOD ipv4.address IP/PREFIX ipv4.gateway GATEWAY ipv4.dns DNS
    
    nmcli connection delete CON-NAME
    
    说明:
    add:增加connection
    delete:删除connection
    con-name CON-NAME:connection的名字
    type TYPE:指定网卡类型,一般为ethernet
    ifname IFCFG:指定网卡接口
    ipv4.method METHOD:指定地址获取方式,manual为静态地址,auto为自动获取
    ipv4.address IP/PREFIX:配置接口ip地址
    ipv4.gateway GATEWAY:配置接口网关地址
    ipv4.dns DNS:配置dns地址

    配置示例如下:

    #示例一:为eth2增加静态地址的connection
    [root@xuzhichao ~]# nmcli connection add con-name eth2-static type ethernet ifname eth2 ipv4.method manual ipv4.addresses 10.1.1.1/24 ipv4.gateway 10.1.1.254 ipv4.dns 8.8.8.8 +ipv4.dns 9.9.9.9
    Connection 'eth2-static' (fdd6eb05-7517-4e7a-8197-288fb12ccaef) successfully added. #自动生成的配置文件
    [root@xuzhichao ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth2-static
    TYPE=Ethernet
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO=none
    IPADDR=10.1.1.1
    PREFIX=24
    GATEWAY=10.1.1.254
    DNS1=8.8.8.8
    DNS2=9.9.9.9
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_FAILURE_FATAL=no
    IPV6_ADDR_GEN_MODE=stable-privacy
    NAME=eth2-static
    UUID=05070603-5e39-4a9d-b499-9d2efea8556b
    DEVICE=eth2
    ONBOOT=yes #示例二:为eth2增加自动获取地址的connection
    [root@xuzhichao ~]# nmcli connection add con-name eth2-auto type ethernet ifname eth2 ipv4.method auto
    Connection 'eth2-auto' (c2e3f414-da5c-4c67-90f4-cdcce74f3c18) successfully added. #自动生成的配置文件
    [root@xuzhichao ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth2-auto
    TYPE=Ethernet
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO=dhcp
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_FAILURE_FATAL=no
    IPV6_ADDR_GEN_MODE=stable-privacy
    NAME=eth2-auto
    UUID=c2e3f414-da5c-4c67-90f4-cdcce74f3c18
    DEVICE=eth2
    ONBOOT=yes [root@xuzhichao ~]# nmcli connection
    NAME UUID TYPE DEVICE
    eth1-static b0b223a0-fa90-4cdb-b762-16d88aeed548 ethernet eth1
    eth0-dhcp 3b80adc9-20cb-4da5-8ca2-3049006cdd0a ethernet eth0
    System eth2 3a73717e-65ab-93e8-b518-24f5af32dc0d ethernet eth2
    eth2-auto c2e3f414-da5c-4c67-90f4-cdcce74f3c18 ethernet --
    eth2-static fdd6eb05-7517-4e7a-8197-288fb12ccaef ethernet -- #示例三:删除connection
    [root@xuzhichao ~]# nmcli connection delete eth2-static
    Connection 'eth2-static' (fdd6eb05-7517-4e7a-8197-288fb12ccaef) successfully deleted.
  • nmcli connection up|down CON-NAME:激活up或down掉connection

    增加connection后要想让该connection生效,需要启用该connection

    #示例一:启用connection eth2-static
    [root@xuzhichao ~]# nmcli connection up eth2-static
    Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6) [root@xuzhichao ~]# nmcli connection
    NAME UUID TYPE DEVICE
    eth1-static b0b223a0-fa90-4cdb-b762-16d88aeed548 ethernet eth1
    eth0-dhcp 3b80adc9-20cb-4da5-8ca2-3049006cdd0a ethernet eth0
    eth2-static 05070603-5e39-4a9d-b499-9d2efea8556b ethernet eth2
    eth2-auto c2e3f414-da5c-4c67-90f4-cdcce74f3c18 ethernet --
    System eth2 3a73717e-65ab-93e8-b518-24f5af32dc0d ethernet -- #接口地址生效
    [root@xuzhichao ~]# ip add show eth2
    4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:2f:d0:e4 brd ff:ff:ff:ff:ff:ff
    inet 10.1.1.1/24 brd 10.1.1.255 scope global noprefixroute eth2
    valid_lft forever preferred_lft forever
    inet6 fe80::80b9:b869:e531:3141/64 scope link noprefixroute
    valid_lft forever preferred_lft forever #路由自动生成,metric为102
    [root@xuzhichao ~]# route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    0.0.0.0 192.168.20.1 0.0.0.0 UG 0 0 0 eth1
    0.0.0.0 192.168.2.1 0.0.0.0 UG 101 0 0 eth0
    0.0.0.0 10.1.1.254 0.0.0.0 UG 102 0 0 eth2 <==生成的路由
    10.1.1.0 0.0.0.0 255.255.255.0 U 102 0 0 eth2
    99.0.0.0 192.168.2.1 255.255.255.0 UG 0 0 0 eth0
    192.168.2.0 0.0.0.0 255.255.255.0 U 101 0 0 eth0
    192.168.20.0 0.0.0.0 255.255.255.0 U 100 0 0 eth1 #生成dns地址
    [root@xuzhichao ~]# cat /etc/resolv.conf
    search lan
    nameserver 192.168.2.1
    nameserver 8.8.8.8 #示例二:禁用connection eth2-static
    [root@xuzhichao ~]# nmcli connection down eth2-static
    Connection 'eth2-static' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/10) [root@xuzhichao ~]# nmcli connection
    NAME UUID TYPE DEVICE
    eth1-static b0b223a0-fa90-4cdb-b762-16d88aeed548 ethernet eth1
    eth0-dhcp 3b80adc9-20cb-4da5-8ca2-3049006cdd0a ethernet eth0
    System eth2 3a73717e-65ab-93e8-b518-24f5af32dc0d ethernet eth2
    eth2-auto c2e3f414-da5c-4c67-90f4-cdcce74f3c18 ethernet --
    eth2-static 05070603-5e39-4a9d-b499-9d2efea8556b ethernet --
  • 更改connection的配置,语法格式为:

    nmcli connection modify CON-NAME [+|-] <setting><property> <value>
    
    说明:
    CON-NAME:connection的名称;
    +:表示在connection上增加配置;
    -:表示在connection上移除配置;
    <setting><property>:修改项,例如ipv4.address;
    <value>:修改的值
    注意:当地址为自动获取时,不能手动增加ip地址

    注意:修改为connection后,配置不会立即生效,需要nmcli connection up CON-NAME才能生效。

    配置示例如下:

    [root@xuzhichao ~]# nmcli connection up eth2-static
    Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/19)
    [root@xuzhichao ~]# ip add show eth2
    4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:2f:d0:e4 brd ff:ff:ff:ff:ff:ff
    inet 10.1.1.1/24 brd 10.1.1.255 scope global noprefixroute eth2
    valid_lft forever preferred_lft forever
    inet6 fe80::80b9:b869:e531:3141/64 scope link noprefixroute
    valid_lft forever preferred_lft forever #示例一:增加eth2的ip地址
    [root@xuzhichao ~]# nmcli connection modify eth2-static +ipv4.addresses 11.1.1.1/32
    [root@xuzhichao ~]# ip add show eth2
    4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:2f:d0:e4 brd ff:ff:ff:ff:ff:ff
    inet 10.1.1.1/24 brd 10.1.1.255 scope global noprefixroute eth2
    valid_lft forever preferred_lft forever
    inet6 fe80::80b9:b869:e531:3141/64 scope link noprefixroute
    valid_lft forever preferred_lft forever
    [root@xuzhichao ~]# nmcli connection up eth2-static
    Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/20)
    [root@xuzhichao ~]# ip add show eth2
    4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:2f:d0:e4 brd ff:ff:ff:ff:ff:ff
    inet 10.1.1.1/24 brd 10.1.1.255 scope global noprefixroute eth2
    valid_lft forever preferred_lft forever
    inet 11.1.1.1/32 brd 11.1.1.1 scope global noprefixroute eth2
    valid_lft forever preferred_lft forever
    inet6 fe80::80b9:b869:e531:3141/64 scope link noprefixroute
    valid_lft forever preferred_lft forever #示例二:移除eth2的ip地址
    [root@xuzhichao ~]# nmcli connection modify eth2-static -ipv4.addresses 11.1.1.1/32
    [root@xuzhichao ~]# nmcli connection up eth2-static
    Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/21)
    [root@xuzhichao ~]# ip add show eth2
    4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:2f:d0:e4 brd ff:ff:ff:ff:ff:ff
    inet 10.1.1.1/24 brd 10.1.1.255 scope global noprefixroute eth2
    valid_lft forever preferred_lft forever
    inet6 fe80::80b9:b869:e531:3141/64 scope link noprefixroute
    valid_lft forever preferred_lft forever #重设eth2的ip地址
    [root@xuzhichao ~]# nmcli connection modify eth2-static ipv4.addresses 11.1.1.1/32
    [root@xuzhichao ~]# nmcli connection up eth2-static
    Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/22)
    [root@xuzhichao ~]# ip add show eth2
    4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:2f:d0:e4 brd ff:ff:ff:ff:ff:ff
    inet 11.1.1.1/32 brd 11.1.1.1 scope global noprefixroute eth2
    valid_lft forever preferred_lft forever
    inet6 fe80::80b9:b869:e531:3141/64 scope link tentative noprefixroute
    valid_lft forever preferred_lft forever
  • nmcli管理网卡配置文件

    可以直接修改网卡的配置文件然后让nmcli进行识别管理,使用如下方式:

    nmcli connection reload

    nmlci connection load FILENAME1 FILENAME2

    #复制网卡文件
    [root@xuzhichao network-scripts]# cp ifcfg-eth2-static ifcfg-eth2-static2 #修改文件中个的NAME为CON-NAME,删除UUID
    [root@xuzhichao network-scripts]# vim ifcfg-eth2-static2
    TYPE=Ethernet
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO=none
    IPADDR=12.1.1.1
    PREFIX=32
    DNS1=8.8.8.8
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_FAILURE_FATAL=no
    IPV6_ADDR_GEN_MODE=stable-privacy
    NAME=eth2-static2 <==修改此项,此项即为CON-NAME
    DEVICE=eth2
    ONBOOT=yes #重新加载网卡文件
    [root@xuzhichao network-scripts]# nmcli connection reload
    [root@xuzhichao network-scripts]# nmcli connection
    NAME UUID TYPE DEVICE
    eth0-dhcp 3b80adc9-20cb-4da5-8ca2-3049006cdd0a ethernet eth0
    eth1-static b0b223a0-fa90-4cdb-b762-16d88aeed548 ethernet eth1
    eth2-static 05070603-5e39-4a9d-b499-9d2efea8556b ethernet eth2
    eth2-auto c2e3f414-da5c-4c67-90f4-cdcce74f3c18 ethernet --
    eth2-static2 14c65799-d2c3-8fbd-0ce9-496ce1d276e5 ethernet -- #启用网卡文件
    [root@xuzhichao network-scripts]# nmcli connection up eth2-static2
    Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/23)

1.8 多网卡绑定:bonding

bonding是将多块网卡绑定为同一个ip对外提供服务,实现网卡的高可用和负载均衡。

通过bonding可以创建一个虚拟网卡master对外提供服务,然后将多个物理网卡以slave角色绑定到bonding接口上,这些接口将共用MAC地址,这样流量将以master虚拟网卡为导向分配给各个slave物理网卡,从而提高主机的网络吞吐量和高可用性。

1.8.1 bonding工作模式

bonding共有7种工作模式。

  • mode 0 (balance-rr):

    轮询模式,每个slave网卡按顺序依次接收和发送数据包,第一个数据包由一个接口发送,另一个数据包则由另外一个接口发送,下面依次进行循环,可以提供负载和高可用能力,发出数据包的MAC为Bond0的MAC;

    需要对端交换机上配置链路聚合,强制或lacp方式都可以,若交换机未配置链路聚合则会发生交换机上MAC动荡的情况;

  • mode 1 (active-backup):

    主备模式,只有一个slave网卡被激活,进行收发包,只有当这个slave网卡down时其他slave网卡才会被激活进行收发包,仅提供备份功能;

    此模式下交换机无需配置链路聚合,同一时间只有一个网卡工作;

  • mode 2 (balance-xor):

    hash策略,根据源MAC和目的MAC进行hash,相同的hash值分配给一个固定的slave端口,因此同一个发送者和接受者的数据总是由同一个slave发送,此算法在只有一个客户端访问服务器或者服务器和客户端不在同一子网的情况下,负载不会均衡。适合源地址和目的地址是同一网段的情况使用。

    此模式需要对端交换机链路聚合功能的支持。

  • mode 3 (broadcast):

    广播策略,将数据包发送给所有的slave接口,提供备份能力。

    此模式需要对端交换机链路聚合功能的支持。

  • mode 4 (802.3ad):

    链路聚合模式,多个slave接口创建一个链路聚合组,共享相同的速度,需要所有的slave接口保持同一速率。

    此模式需要交换机上使用LACP协议进行对接。

  • mode 5 (balance-tlb):

    在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址,流入数据由当前slave承担。该模式不能用于虚拟交换机模式。

    此模式不需要交换机的额外支持。

  • mode 6 (balance-alb):

    外出流量与balance-tlb模式相同,接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。提供负载和备份能力,该模式不能用于虚拟交换机模式。

    此模式不需要交换机的额外支持。

1.8.2 bonding配置

bonding有两种配置方法,在centos6和centos7上可以使用配置文件的方式进行配置,在centos7上可以使用nmcli命令进行配置。

1.8.2.1 使用bonding配置文件方式配置

把eth2和eth3绑定到bonding接口,配置步骤:

  • 创建bond0:
  1. 创建master,增加bonding配置文件/etc/sysconfig/network-scripts/ifcfg-bond0。

    root@xuzhichao ~]# cd /etc/sysconfig/network-scripts/
    [root@xuzhichao network-scripts]# vim ifcfg-bond0
    DEVICE=bond0 <==配置bond0的设备名,需要和文件名中的设备名保持一致
    BOOTROTO=none
    ONBOOT=yes
    IPADDR=192.168.20.40
    PREFIX=24
    TYPE=Bond
    BONDING_MASTER=yes
    BONDING_OPTS="miimon=100 mode=1" <==配置bond的选项,miimon用于链路监测,表示每100ms监测一下链路状态,一条线路不通就转入另一条线路;mode用于配置bonding的工作模式。
  2. 配置slave网卡的配置文件

    [root@xuzhichao network-scripts]# cat ifcfg-eth2
    TYPE=Ethernet
    BOOTPROTO=none
    DEVICE=eth2
    ONBOOT=yes
    SLAVE=yes <==指定自身为slave角色
    MASTER=bond0 <==指定要加入的bond接口 [root@xuzhichao network-scripts]# cat ifcfg-eth3
    TYPE=Ethernet
    BOOTPROTO=none
    DEVICE=eth3
    ONBOOT=yes
    SLAVE=yes
    MASTER=bond0
  3. 重启网络服务

    [root@xuzhichao network-scripts]# service network restart

    如果没有加载bond驱动,使用如下方式加载:

    #加载bond驱动
    [root@xuzhichao network-scripts]# modprobe bonding #查看bond驱动
    [root@xuzhichao network-scripts]# lsmod | grep bonding
    bonding 152979 0
  4. 查看bond信息

    #查看bond0信息
    [root@xuzhichao network-scripts]# cat /proc/net/bonding/bond0
    Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
    Bonding Mode: fault-tolerance (active-backup)
    Primary Slave: None
    Currently Active Slave: eth2
    MII Status: up
    MII Polling Interval (ms): 100
    Up Delay (ms): 0
    Down Delay (ms): 0 Slave Interface: eth2
    MII Status: up
    Speed: 1000 Mbps
    Duplex: full
    Link Failure Count: 0
    Permanent HW addr: 00:0c:29:2f:d0:e4
    Slave queue ID: 0 Slave Interface: eth3
    MII Status: up
    Speed: 1000 Mbps
    Duplex: full
    Link Failure Count: 0
    Permanent HW addr: 00:0c:29:2f:d0:ee
    Slave queue ID: 0 #查看bond0模式:
    [root@xuzhichao network-scripts]# cat /sys/class/net/bond0/bonding/mode
    active-backup 1 #注意:bond0和两个网卡的mac地址相同
    [root@xuzhichao network-scripts]# ip add
    4: eth2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
    link/ether 00:0c:29:2f:d0:e4 brd ff:ff:ff:ff:ff:ff
    5: eth3: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
    link/ether 00:0c:29:2f:d0:e4 brd ff:ff:ff:ff:ff:ff
    7: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:0c:29:2f:d0:e4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.20.40/24 brd 192.168.20.255 scope global noprefixroute bond0
    valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe2f:d0e4/64 scope link
    valid_lft forever preferred_lft forever
  • 卸载bond0:

    #禁用bond0
    [root@xuzhichao network-scripts]# ifconfig bond0 down #卸载bond模块
    [root@xuzhichao network-scripts]# modprobe -r bonding #删除bond网卡配置文件
    [root@xuzhichao network-scripts]# rm /etc/sysconfig/network-scripts/ifcfg-eth{2,3}
    [root@xuzhichao network-scripts]# rm /etc/sysconfig/network-scripts/ifcfg-bond0
1.8.2.2 使用nmcli方式配置
  • 创建bond0:

    1. 创建bond0master角色

      [root@xuzhichao network-scripts]# nmcli connection add type bond con-name bond0 ifname bond0 mode balance-rr ipv4.method auto
      Connection 'bond0' (eb50c025-bbba-4888-b5e4-ae173a397bd0) successfully added.
    2. 添加slave端口到bond0上

      [root@xuzhichao network-scripts]# nmcli connection add type bond-slave ifname eth2 master bond0
      Connection 'bond-slave-eth2' (c1ade84b-8d37-4054-9690-75bbddadce2b) successfully added.
      [root@xuzhichao network-scripts]# nmcli connection add type bond-slave ifname eth3 master bond0
      Connection 'bond-slave-eth3' (38b63309-2048-47b2-bd68-fa7db38d37a2) successfully added. #查看connection
      [root@xuzhichao network-scripts]# nmcli connection
      NAME UUID TYPE DEVICE
      eth0-dhcp 3b80adc9-20cb-4da5-8ca2-3049006cdd0a ethernet eth0
      Bond bond0 ad33d8b0-1f7b-cab9-9447-ba07f855b143 bond bond0
      eth1-static b0b223a0-fa90-4cdb-b762-16d88aeed548 ethernet eth1
      System eth2 3a73717e-65ab-93e8-b518-24f5af32dc0d ethernet eth2
      System eth3 c5ca8081-6db2-4602-4b46-d771f4330a6d ethernet eth3
      bond0 eb50c025-bbba-4888-b5e4-ae173a397bd0 bond --
      bond-slave-eth2 c1ade84b-8d37-4054-9690-75bbddadce2b ethernet --
      bond-slave-eth3 38b63309-2048-47b2-bd68-fa7db38d37a2 ethernet --
    3. 启动bond0,先启动slave,在启动master

      [root@xuzhichao network-scripts]# nmcli connection up bond-slave-eth2
      Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/34)
      [root@xuzhichao network-scripts]# nmcli connection up bond-slave-eth3
      Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/35)
      [root@xuzhichao network-scripts]# nmcli connection up bond0
      Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/36)
    4. 查看bond0状态

      [root@xuzhichao network-scripts]# cat /proc/net/bonding/bond0
      Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: load balancing (round-robin) <==模式为rr模式
      MII Status: up
      MII Polling Interval (ms): 100
      Up Delay (ms): 0
      Down Delay (ms): 0 Slave Interface: eth2
      MII Status: up
      Speed: 1000 Mbps
      Duplex: full
      Link Failure Count: 0
      Permanent HW addr: 00:0c:29:2f:d0:e4
      Slave queue ID: 0 Slave Interface: eth3
      MII Status: up
      Speed: 1000 Mbps
      Duplex: full
      Link Failure Count: 0
      Permanent HW addr: 00:0c:29:2f:d0:ee
      Slave queue ID: 0 [root@xuzhichao network-scripts]# ip add
      4: eth2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
      link/ether 00:0c:29:2f:d0:e4 brd ff:ff:ff:ff:ff:ff
      5: eth3: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
      link/ether 00:0c:29:2f:d0:e4 brd ff:ff:ff:ff:ff:ff
      8: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
      link/ether 00:0c:29:2f:d0:e4 brd ff:ff:ff:ff:ff:ff
      inet 192.168.20.31/24 brd 192.168.20.255 scope global noprefixroute dynamic bond0
      valid_lft 1429sec preferred_lft 1429sec
      inet6 fe80::f124:636:a27:e2c/64 scope link noprefixroute
      valid_lft forever preferred_lft forever
  • 删除bond0:

    #禁用bond0
    [root@xuzhichao network-scripts]# ifconfig bond0 down #卸载bond模块
    [root@xuzhichao network-scripts]# modprobe -r bonding #删除配置文件
    [root@xuzhichao network-scripts]# nmcli connection delete bond-slave-eth2
    Connection 'bond-slave-eth2' (c1ade84b-8d37-4054-9690-75bbddadce2b) successfully deleted.
    [root@xuzhichao network-scripts]# nmcli connection delete bond-slave-eth3
    Connection 'bond-slave-eth3' (38b63309-2048-47b2-bd68-fa7db38d37a2) successfully deleted.
    [root@xuzhichao network-scripts]# nmcli connection delete bond0
    Connection 'bond0' (eb50c025-bbba-4888-b5e4-ae173a397bd0) successfully deleted.
    Connection 'bond0' (bf4e83d2-6262-48c9-b6be-9ac6b43e4aee) successfully deleted.

1.9 网络状态监控

1.9.1 netstat命令详解

netstat命令用于查看TCP和UDP以及套接字的连接状态信息。

netstat的常用选项如下:

选项 说明
-t 显示tcp连接情况
-u 显示udp连接情况
-w 显示套接字状态
-a 显示所有所有连接状态
-l 显示处于监听的状态的连接
-n 以数字形式显示ip和端口号
-p 显示使用该连接的相关进程及PID
-e 扩展格式
-i 显示网络接口的统计信息
-a 显示所有网络接口的统计信息,包括down的接口
-r 显示路由信息

netstat命令的使用示例如下:

#示例一:查看tcp的所有连接信息
[root@xuzhichao network-scripts]# netstat -tan
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 52 192.168.20.17:22 192.168.20.1:56401 ESTABLISHED
tcp6 0 0 ::1:25 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN #示例二:显示udp的所有连接信息
[root@xuzhichao network-scripts]# netstat -uan
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 127.0.0.1:323 0.0.0.0:*
udp 0 0 0.0.0.0:68 0.0.0.0:*
udp6 0 0 ::1:323 :::* #示例三:显示tcp的监听状态的信息
[root@xuzhichao network-scripts]# netstat -tnl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp6 0 0 ::1:25 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN #示例四:显示udp的监听状态的信息
[root@xuzhichao network-scripts]# netstat -unl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 127.0.0.1:323 0.0.0.0:*
udp 0 0 0.0.0.0:68 0.0.0.0:*
udp6 0 0 ::1:323 :::* #示例五:显示tcp的监听状态的信息即对应的进程
[root@xuzhichao network-scripts]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1326/master
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1154/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1326/master
tcp6 0 0 :::22 :::* LISTEN 1154/sshd #示例六:显示所有的网路连接
[root@xuzhichao network-scripts]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 52 192.168.20.17:22 192.168.20.1:56401 ESTABLISHED
tcp6 0 0 ::1:25 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
udp 0 0 127.0.0.1:323 0.0.0.0:*
udp 0 0 0.0.0.0:68 0.0.0.0:*
udp6 0 0 ::1:323 :::*
raw6 0 0 :::58 :::* 7
raw6 0 0 :::58 :::* 7
raw6 0 0 :::58 :::* 7
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 21745 public/pickup
unix 2 [ ACC ] STREAM LISTENING 21749 public/cleanup
unix 2 [ ACC ] STREAM LISTENING 21752 public/qmgr
..... #示例七:显示tcp和udp的所有连接信息
[root@xuzhichao network-scripts]# netstat -tuan
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 52 192.168.20.17:22 192.168.20.1:56401 ESTABLISHED
tcp6 0 0 ::1:25 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
udp 0 0 127.0.0.1:323 0.0.0.0:*
udp 0 0 0.0.0.0:68 0.0.0.0:*
udp6 0 0 ::1:323 :::* #示例八:显示接口的统计信息
[root@xuzhichao network-scripts]# netstat -i
Kernel Interface table
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 7514 0 0 0 340 0 0 0 BMRU
eth1 1500 11108 0 0 0 6163 0 0 0 BMRU
eth2 1500 1991 0 0 0 232 0 0 0 BMRU
lo 65536 75 0 0 0 75 0 0 0 LRU #示例九:显示路由信息
[root@xuzhichao network-scripts]# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.1.1.254 0.0.0.0 UG 0 0 0 eth2
0.0.0.0 192.168.2.1 0.0.0.0 UG 0 0 0 eth0
10.1.1.254 0.0.0.0 255.255.255.255 UH 0 0 0 eth2
11.1.1.1 0.0.0.0 255.255.255.255 UH 0 0 0 eth2
99.0.0.0 192.168.2.1 255.255.255.0 UG 0 0 0 eth0
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.20.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

1.9.2 ss命令详解

ss命令和netstat命令的功能类似,ss是一个较新的命令,其性能优于netstat,功能也比netstat强大。

ss命令的语法格式为:

ss [ OPTIONS ] [ FILTER ]

ss命令的常用选项如下:

选项 说明
-t 显示tcp连接情况
-u 显示udp连接情况
-w 显示套接字状态
-a 显示所有所有连接状态
-l 显示处于监听的状态的连接
-n 以数字形式显示ip和端口号
-p 显示使用该连接的相关进程及PID
-e 扩展格式
-m 显示内存使用情况
-o 计时器信息

FILTER为过滤器,让ss显示特性状态的连接情况,格式如下:

 [ state STATE-FILTER ] [ EXPRESSION ]

其中STATE-FILTER多用于TCP。tcp的常见状态为{established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|closed|close-wait|last-ack|listen|closing}

EXPRESSION表达式:

dport =:表示目标端口或协议名称,例如dport = :ssh;

sport =:表示源端口或协议名称;

ss命令的使用示例如下:

#示例一:查看tcp中listen状态的连接及对应的进程
[root@xuzhichao ~]# ss -tnlp
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 100 127.0.0.1:25 *:* users:(("master",pid=1326,fd=13))
LISTEN 0 128 *:22 *:* users:(("sshd",pid=1154,fd=3))
LISTEN 0 100 [::1]:25 [::]:* users:(("master",pid=1326,fd=14))
LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=1154,fd=4)) #示例二:查看tcp中listen状态的连接
[root@xuzhichao ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 [::1]:25 [::]:*
LISTEN 0 128 [::]:22 [::]:* #示例三:查看tcp所有的连接状态
[root@xuzhichao ~]# ss -tan
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:22 *:*
ESTAB 0 0 192.168.20.17:22 192.168.20.1:56401
ESTAB 0 52 192.168.20.17:22 192.168.20.1:53185
LISTEN 0 100 [::1]:25 [::]:*
LISTEN 0 128 [::]:22 [::]:* #示例四:查看udp的所有连接状态
[root@xuzhichao ~]# ss -uan
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 127.0.0.1:323 *:*
UNCONN 0 0 *:68 *:*
UNCONN 0 0 [::1]:323 [::]:* #示例五:查看所有建立成功的ssh连接,注意等号和括号两边的空格
[root@xuzhichao ~]# ss -o state established '( dport = :ssh or sport = :ssh )'
Netid Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp 0 0 192.168.20.17:ssh 192.168.20.1:56401 timer:(keepalive,55min,0)
tcp 0 52 192.168.20.17:ssh 192.168.20.1:53185 timer:(on,244ms,0) #示例六:查看所有建立的http连接
[root@xuzhichao ~]# ss -o state established '( dport = :http or sport = :http )' #示例七:显示当前socket的统计信息
[root@xuzhichao ~]# ss -s
Total: 575 (kernel 1020)
TCP: 6 (estab 2, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0
Transport Total IP IPv6
* 1020 - -
RAW 3 0 3
UDP 3 2 1
TCP 6 4 2
INET 12 6 6
FRAG 0 0 0 #示例八:显示本地打开的所有端口即对应的进程
[root@xuzhichao ~]# ss -lp

1.10 常用网络测试工具

1.10.1 ping命令

ping命令通过发送ICMP报文探测网络的连通性,常见选项如下:

选项 说明
-c # 指定发包的个数
-I IFCFG 指定发包的出接口
-i 指定两个包之间发包的间隔
-w # 指定ping的超时时长,即ping命令运行的总时间,单位秒
-W # 指定等待对方响应的超时时长,单位秒
-s # 指定发送报文的大小,默认为64字节,单位字节

ping命令的使用示例如下:

#示例一:ping1000字节的包
[root@xuzhichao ~]# ping 192.168.2.1 -s 1000
PING 192.168.2.1 (192.168.2.1) 1000(1028) bytes of data.
1008 bytes from 192.168.2.1: icmp_seq=2 ttl=64 time=6.91 ms
1008 bytes from 192.168.2.1: icmp_seq=3 ttl=64 time=19.7 ms
^C
--- 192.168.2.1 ping statistics ---
3 packets transmitted, 2 received, 33% packet loss, time 2011ms
rtt min/avg/max/mdev = 6.915/13.324/19.734/6.410 ms #只ping1个包,默认会一直ping
[root@xuzhichao ~]# ping 192.168.2.1 -c 1
PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data.
64 bytes from 192.168.2.1: icmp_seq=1 ttl=64 time=3.24 ms --- 192.168.2.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 3.247/3.247/3.247/0.000 ms #示例三:ping域名
[root@xuzhichao ~]# ping www.baidu,com

1.10.2 traceroute命令

traceroute命令也用于探测网络,并显示出中间的每一条路径,通过修改数据包的TTL值实现,TTL值从1开始依次增加。

traceroute命令的常用选项如下:

选项 说明
-I 使用icmp包进行探测
-T 使用tcp包进行探测
-U 使用UDP包进行探测
-n 以ip地址显示而非主机名,加快traceroute的速度,默认显示域名
-i 指定发包的出接口
-s ip 指定发包的源地址
-p port 指定udp发包的端口

traceroute命令的使用示例:

#示例一:跟踪达到www.baidu.com的路径
[root@xuzhichao ~]# traceroute -n www.baidu.com
traceroute to www.baidu.com (110.242.68.4), 30 hops max, 60 byte packets
1 192.168.2.1 56.442 ms 56.351 ms 56.270 ms
2 100.64.0.1 56.196 ms 56.121 ms 56.180 ms
3 115.60.218.101 57.872 ms 57.828 ms 57.725 ms
4 * * *
...... #示例二:指定源接口进行探测路径
[root@xuzhichao ~]# traceroute -n 1.1.1.1 -s 192.168.2.123
traceroute to 1.1.1.1 (1.1.1.1), 30 hops max, 60 byte packets
1 192.168.2.1 5.046 ms 7.865 ms 7.818 ms
......

1.10.3 tracepath命令

tracepath命令和traceroute命令的作用相似,跟踪网路中的路径,并给出在路径中的每一跳。

tracepath命令的常用选项如下:

选项 说明
-n 以ip地址显示而非主机名,加快tracepath的速度,默认显示域名
-b 同时显示ip地址和域名
-l 指定包的大小
p 指定目标地址的UDP端口号

tracepath命令的使用示例如下:

[root@xuzhichao ~]# tracepath -n 1.1.1.1
1?: [LOCALHOST] pmtu 1500
1: 192.168.2.1 7.468ms
1: 192.168.2.1 8.437ms
2: 192.168.2.1 3.777ms pmtu 1480
2: 100.64.0.1 5.299ms
3: 115.60.218.101 15.290ms
4: 61.168.37.77 7.053ms
...... [root@xuzhichao ~]# tracepath -n 1.1.1.1 -b
1?: [LOCALHOST] pmtu 1500
1: 192.168.2.1 (phicomm.me) 5.204ms
1: 192.168.2.1 (phicomm.me) 7.817ms
2: 192.168.2.1 (phicomm.me) 7.141ms pmtu 1480
2: 100.64.0.1 (100.64.0.1) 10.965ms
3: 115.60.218.101 (hn.kd.ny.adsl) 6.009ms
......

1.11 tcpdump抓包工具详解

tcpdump命令可以对网络上的数据包进行截获抓取,对数据包进行分析,故障排查常用工具。

使用前需要安装数据包

[root@xuzhichao ~]# yum install tcpdump

语法格式为:

tcpdump [OPTIONS] [EXPRESSION]

若不给选项,则抓取的是第一个非lo接口的数据包。

1.11.1 tcpdump的选项说明

tcpdump的选项如下:

选项 说明
-c # 指定抓取的数据包的数量,抓取结束后直接退出
-e 在每列的显示数据链路层的头部信息,如MAC地址等
-i IFCFG 指定抓包的网卡接口
-n 不把主机的网络地址转化成主机名
-nn 不把协议或端口号转化成协议名称
-P in|out 指定抓包的方向,in为接收的包,out为发出的包
-r 从指定的文件中读取数据包信息
-tttt 显示时间戳,格式为YYYY-MM-DD hour:min:s.现在距离午夜的秒数
-ttt 显示当前行和前一行的时间差,单位为微秒
-X 输出包的头部信息
-XX 输出包的头部信息,更加详细
-v 显示详细的数据包内容
-vv 比-v显示更详细
-vvv 比vv显示更详细
-w FILE 把抓取的数据包写入指定的文件中

1.11.2 tcpdump表达式说明

表达式用于筛选出输出哪些类型的数据包。

表达式由一个或多个“单元”组成,有三种类型的单元:proto,dir,type。每个单元包括一个值的类型和对用的值。

  • proto:指定数据包的协议类型

    常用的协议类型有tcp/udp/ip/icmp/arp等,未给定协议,会显示所有的协议。

  • dir:指定的源还是目的

    源为src,目的为dst,可以组合使用,同时匹配源和目的使用src and dst;匹配源或目的使用src or dst,不指定为源和目的都匹配。

  • type:指定ID值的类型

    常用的type为host/net/port/portrange

    例如host 1.1.1.1;net 10.0.0.0/24;port 21;portrange 100-200

一个表示式的完整格式为 proto dir type ID

例如“tcp src port 21” ;“udp port 63”;“ip dst net 11.1.1.0/24”

1.11.3 tcpdump使用示例

tcpdump常用使用示例如下:

#示例一:抓取eth1口的所有报文
[root@xuzhichao ~]# tcpdump -i eth1
11:41:25.365209 IP xuzhichao.ssh > 192.168.20.1.53654: Flags [P.], seq 20472:20636, ack 1, win 251, length 164
11:41:25.365292 IP xuzhichao.ssh > 192.168.20.1.53654: Flags [P.], seq 20636:20800, ack 1, win 251, length 164
...... #示例二:只抓取eth1口的icmp包,以ip形式显示
[root@xuzhichao ~]# tcpdump -i eth1 -nn icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes
11:47:05.291181 IP 192.168.20.1 > 192.168.20.17: ICMP echo request, id 1, seq 1, length 40
11:47:05.291288 IP 192.168.20.17 > 192.168.20.1: ICMP echo reply, id 1, seq 1, length 40 #示例三:抓取源ip是192.168.20.1的数据包
[root@xuzhichao ~]# tcpdump src host 192.168.20.1 #示例四:抓取源或目的ip是192.168.20.1的数据包
[root@xuzhichao ~]# tcpdump host 192.168.20.1 #示例五:抓取eth1口上tcp80端口的相关协议数据包
[root@xuzhichao ~]# tcpdump -i eth1 tcp port 80 #示例六:抓取eth1口上主机192,168.20.1和tcp端口22相关的数据包
[root@xuzhichao ~]# tcpdump -i eth1 host 192.168.20.1 and tcp port 22 #示例七:抓取eth1口上主机192.168.20.1的所有数据包,除了tcp端口80和22的数据包
[root@xuzhichao ~]# tcpdump -i eth1 host 192.168.20.1 and tcp port not 22 and not 80 #示例八:抓取eth1口上主机192.168.20.1上目的端口为tcp80和22的数据包
[root@xuzhichao ~]# tcpdump -i eth1 host 192.168.20.1 and dst tcp port 22 or 80 #示例九:抓取来自192,168.20.1的ping包
[root@xuzhichao ~]# tcpdump icmp and src host 192.168.20.1 #示例十:抓取数据包时显示详细信息
[root@xuzhichao ~]# tcpdump -i eth1 -nn -XX -vvv icmp
tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes
11:59:17.719123 IP (tos 0x0, ttl 128, id 39256, offset 0, flags [none], proto ICMP (1), length 60)
192.168.20.1 > 192.168.20.17: ICMP echo request, id 1, seq 3, length 40
0x0000: 000c 292f d0da 0050 56c0 0001 0800 4500 ..)/...PV.....E.
0x0010: 003c 9958 0000 8001 f805 c0a8 1401 c0a8 .<.X............
0x0020: 1411 0800 4d58 0001 0003 6162 6364 6566 ....MX....abcdef
0x0030: 6768 696a 6b6c 6d6e 6f70 7172 7374 7576 ghijklmnopqrstuv
0x0040: 7761 6263 6465 6667 6869 wabcdefghi
11:59:17.719196 IP (tos 0x0, ttl 64, id 62569, offset 0, flags [none], proto ICMP (1), length 60)
192.168.20.17 > 192.168.20.1: ICMP echo reply, id 1, seq 3, length 40
0x0000: 0050 56c0 0001 000c 292f d0da 0800 4500 .PV.....)/....E.
0x0010: 003c f469 0000 4001 dcf4 c0a8 1411 c0a8 .<.i..@.........
0x0020: 1401 0000 5558 0001 0003 6162 6364 6566 ....UX....abcdef
0x0030: 6768 696a 6b6c 6d6e 6f70 7172 7374 7576 ghijklmnopqrstuv
0x0040: 7761 6263 6465 6667 6869 wabcdefghi
^C
2 packets captured
2 packets received by filter
0 packets dropped by kernel [root@xuzhichao ~]# tcpdump -i eth1 -nn -vvv icmp
tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes
11:59:37.043046 IP (tos 0x0, ttl 128, id 39295, offset 0, flags [none], proto ICMP (1), length 60)
192.168.20.1 > 192.168.20.17: ICMP echo request, id 1, seq 4, length 40
11:59:37.043084 IP (tos 0x0, ttl 64, id 7449, offset 0, flags [none], proto ICMP (1), length 60)
192.168.20.17 > 192.168.20.1: ICMP echo reply, id 1, seq 4, length 40
11:59:38.052999 IP (tos 0x0, ttl 128, id 39297, offset 0, flags [none], proto ICMP (1), length 60)
192.168.20.1 > 192.168.20.17: ICMP echo request, id 1, seq 5, length 40
11:59:38.053061 IP (tos 0x0, ttl 64, id 7468, offset 0, flags [none], proto ICMP (1), length 60)
192.168.20.17 > 192.168.20.1: ICMP echo reply, id 1, seq 5, length 40 #示例十一:抓取数据包时显示mac地址信息
[root@xuzhichao ~]# tcpdump -c 2 -i eth1 -nn -e icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes
12:01:05.633392 00:50:56:c0:00:01 > 00:0c:29:2f:d0:da, ethertype IPv4 (0x0800), length 74: 192.168.20.1 > 192.168.20.17: ICMP echo request, id 1, seq 6, length 40
12:01:05.633441 00:0c:29:2f:d0:da > 00:50:56:c0:00:01, ethertype IPv4 (0x0800), length 74: 192.168.20.17 > 192.168.20.1: ICMP echo reply, id 1, seq 6, length 40

1.12 wget命令详解

wget是一个强大的命令行的下载工具,具有如下特点:

  1. 支持断点下传功能;
  2. 同时支持FTP和HTTP下载方式;
  3. 支持代理服务器;
  4. 程序小,完全免费;

wget命令的常用选项如下:

选项 说明
-b 后台下载
-i FILE 从FILE中获取URL信息
-O FILE 下载文件保存为别的文件名
-t 指定尝试下载的次数
-N 只下载比本地新的文件
-c 断点续传
--http-user=USER 设置网页上的用户
--http-passwd=PASS 设置网页上的密码
-r 下载整个网站、目录(小心使用)
-A 可以接受的文件类型
-R 拒绝接受的文件类型

wget的使用示例如下:

#示例一:使用wget下载单个文件
[root@xuzhichao ~]# wget http://cn.wordpress.org/wordpress-3.1-zh_CN.zip #示例二:下载文件并重命名
[root@xuzhichao ~]# wget -0 wordpress.zip http://cn.wordpress.org/wordpress-3.1-zh_CN.zip #示例三:下载一个网址内容,除了图片
[root@xuzhichao ~]#wget -–reject=gif url #示例四:下载一个网站的所有PDF文件
[root@xuzhichao ~]#wget -r -A .pdf url

2021-06-07 15:05:21 星期一

linux网络管理及常用网络工具详解的更多相关文章

  1. 【转】Linux 网络工具详解之 ip tuntap 和 tunctl 创建 tap/tun 设备

    原文:https://www.cnblogs.com/bakari/p/10449664.html -------------------------------------------------- ...

  2. Linux 网络工具详解之 ip tuntap 和 tunctl 创建 tap/tun 设备

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 在前面一篇文章 ...

  3. Linux - 常用网络命令详解netstat,scp

    ifconfig 查看生效的ip信息. [root@local ~]# ifconfig eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICA ...

  4. Linux运维常用的命令详解

    1. 查看系统内核版本 [root@funsion geekxa]# cat /etc/issue CentOS release 6.5 (Final) Kernel \r on an \m 显示了系 ...

  5. Iperf3网络性能测试工具详解教程

    Iperf3网络性能测试工具详解教程 小M 2020年4月17日 运维 本文下载链接 [学习笔记]Iperf3网络性能测试工具.pdf 网络性能评估主要是监测网络带宽的使用率,将网络带宽利用最大化是保 ...

  6. 【山外笔记-工具框架】iperf3网络性能测试工具详解教程

    [山外笔记-工具框架]iperf3网络性能测试工具详解教程   本文下载链接 [学习笔记]iperf3网络性能测试工具.pdf 网络性能评估主要是监测网络带宽的使用率,将网络带宽利用最大化是保证网络性 ...

  7. linux网络配置详解

    一:相关网络配置的文件 1.网卡名配置相关文件 网卡名命名规则文件: /etc/udev/rules.d/70-persistent-net.rules # PCI device 0x8086:0x1 ...

  8. Linux网络配置文件详解

    --Linux网络配置文件详解----------------------2013/10/03 目前在企业级服务器的Linux系统中,RHEL占有绝对的优势,不管是曾经在互联网公司还是在目前测试Vir ...

  9. Linux常用网络工具:路由扫描之mtr

    除了上一篇<Linux常用网络工具:路由扫描之traceroute>介绍的traceroute之外,一般Linux还内置了另一个常用的路由扫描工具mtr. mtr在某些方面比tracero ...

  10. Linux常用网络工具:路由扫描之traceroute

    之前两篇<Linux常用网络工具:fping主机扫描>和<Linux常用网络工具:hping高级主机扫描>都是关于主机扫描的,本篇介绍Linux下常用的路由扫描工具tracer ...

随机推荐

  1. 鸿蒙HarmonyOS实战-ArkUI组件(List)

    一.List 1.概述 列表是一种非常有用且功能强大的容器,它常用于呈现同类型或多类型数据集合,例如图片.文本.音乐.通讯录.购物清单等.列表对于显示大量内容而不耗费过多空间和内存是非常有帮助的,因为 ...

  2. Unity 2022.3.20f1新功能,异步实例化预制体Object.InstantiateAsync

    今天查看Unity 2022.3.20f1更新日志,发现新增了个异步实例化的功能,这个功能解决了Unity历史上实例化预制体卡顿的痛点,简直不要太爽. 具体的API文档请点击跳转. 做了个简单的实例化 ...

  3. 前端问题整理 Vite+Vue3+Ts 创建项目及配置 持续更新

    前端问题整理 持续更新 目录 前端问题整理 持续更新 前端 Vue 篇 @项目配置 1.node 版本过高问题 安装nvm 管理node版本 2.镜像证书无效问题 3.npm 版本问题 4.npm i ...

  4. 4 HTML表格标签

    4 表格标签 表格标签也是一种复合标签.由:table,tr,td,th,thead,tbody组合,由行和列组合成,行和列交叉的地方就是单元格.在HTML中使用table来定义表格.网页的表格和办公 ...

  5. C++ 数学函数、头文件及布尔类型详解

    C++ 数学 C++ 有许多函数可以让您在数字上执行数学任务. 最大值和最小值 max(x, y) 函数可用于找到 x 和 y 的最大值: 示例 cout << max(5, 10); 而 ...

  6. HarmonyOS账号服务,畅行鸿蒙生态所有应用与服务

    账号对于用户来说并不陌生,在购买新设备或者使用新应用的时候,用户常常会被引导注册或者登录账号,账号就是用户在这些设备或应用内的通行证.根据华为上半年的一项统计,整体上中国网民人均下载App量在68个, ...

  7. C++调用Python-6:调用Python类

    # mytest.py class Test: def hello(self): print("this is test class hello function no params ret ...

  8. openGauss数据库的安装与使用

    VMware+CentOS7.6+OpenGauss2.0.1 极简版安装 环境准备 Arch:x86-64 OS:Win11 VMware:16.1.2 安装 CentOS 7.6 CentOS 镜 ...

  9. Graph Embedding-DeepWalk

    一言以蔽之,DeepWalk是在graph上,通过随机游走来产生一段定长的结点序列,并将其通过word2vec的方式获得各个结点的embedding的算法. DeepWalk一共涉及以下几个内容: 随 ...

  10. 论文记载: Deep Reinforcement Learning for Traffic LightControl in Vehicular Networks

    强化学习论文记载 论文名: Deep Reinforcement Learning for Traffic LightControl in Vehicular Networks ( 车辆网络交通信号灯 ...