首页 > 代码库 > 网络管理和网络配置(net-tools家族(ifcfg家族)、iproute家族、nm家族)

网络管理和网络配置(net-tools家族(ifcfg家族)、iproute家族、nm家族)

下面写的是Centos网络管理和网络配置

我们为网卡设置网络属性有两种方式,手动配置和自动配置。自动配置,就是从主机所在网路中的DHCP服务器获取,其至少有一台DHCP服务器。手动配置有两种方式,分别是使用命令和修改配置文件,使用命令有三大家族的命令,即net-tools家族(ifcfg家族)、iproute家族、nm家族。同时,还介绍了相关的配置文件和网络接口命名规则。


一、net-tools家族

 1、ifconfig命令

ifconfig命令具有三个主要功能,分别是查看网络接口状态、配置网络属性、管理接口状态。


查看:

ifconfig [interface] 命令中,如果没有指定接口状态,显示的就是【激活状态】接口的网络信息;如果指定了操作接口,不管接口是否是激活状态,都显示指定接口的网络配置信息。

ifconfig -a:显示所有端口网络连接,无论是否激活。


配置管理:

ifconfig INTERFACE ADDRESS 用于配置指定端口的指定参数

  例如:ifconfig INTERFACE IP[/PREFIX_LEN] [up/down]

        ifconfig INTERFACE IP netmask SUBNET_MASK [up/down]

        ifconfig eth1 172.16.1.1

        ifconfig eth1 172.16.1.1/24

        ifconfig eth1 172.16.1.1/24 up

        ifconfig eth1 172.16.1.1 netmask 255.255.255.0 up

        ifconfig eth1 up/down


 2、route命令

route查看和管理路由信息,其中,路由表中的路由条目有三种类型,分别是主机路由、网络路由、默认路由。主机路由的目的地址是单个IP地址;网络路由有子网路由、主网路由、超网路由三种;默认路由,目的地址是0.0.0.0/0的IP地址,可以到达任意地址。


查看:

route -n:以数字化来显示主机名、IP地址和端口。


配置:

route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If] 添加

route del [-net|-host] target [netmask Nm] [gw Gw] [[dev] If] 删除

  添加默认网关:route add default gw 192.168.0.1 或 route add default gw 192.168.0.2 dev eth2

  删除默认网关:route del default 或 route del default gw 192.168.0.2

  添加静态路由:route add -net 10.0.0.0/8 gw 192.168.0.2 dev eth2

  删除静态路由:route del -net 10.0.0.0/8 或 route del -net 10.0.0.0/8 gw 192.168.0.2


 3、netstat命令

netstat查看网络连接、路由信息、接口统计信息等。

netstat的常用选项如下:

  -t:只查看与TCP协议有关的网络连接

  -u:只查看与UDP协议有关的网络连接

  -U:只显示与udplite协议有关的网络连接

  -w:显示与络套接字有关的网络连接

  -l:显示处于监听状态的网络连接

  -a:显示所有状态的所有连接,不管激活与否

  -n:数字化显示,数字显示主机名、端口号、用户ID等信息

  -e:以扩展格式显示输出网络连接

  -p:显示与该网络连接有关的应用程序与进程ID

常用的选项组合:-tan, -uan, -tnl, -unl, -tnlp, -unlp, -tunlp

  -r:显示路由表信息 常用复合选项有:-rn、-rne

  -i/-I:显示接口统计信息,存在复合选项

  -s:详细显示协议信息,分条显示,存在复合选项

  


二、iproute家族

 1、ip命令

ip命令能进行网络参数的设置,设备的相关设定、额外IP设定、路由设定。格式为:ip [ OPTIONS ] OBJECT { COMMAND | help } ; 其中OBJECT有四类:link、addr、route、netns。

 (1)、ip link COMMAND 

  设定与设备(device)有关的相关设定,包括MTU以及该网络设备的MAC等等。ip link COMMAND 中COMMAND有5类,分别是add、delete、set、show/list、help。

  ip link {show | list}  单纯的查阅该设备相关的信息,列表显示所有接口。

    例如:ip link show eth0

  ip link set 修改网络设备的配置参数。

    ip link set [dev] IFACE_NAME { up | down }:激活或禁用网络接口;

      例如:ip link set eth0 up 启动eth0

            ip link set eth0 down 关闭eth0

    ip link set [dev] IFACE_NAME [ arp { on | off } ]:是否允许此网络接口使用ARP协议;

    ip link set [dev] IFACE_NAME name IFACE_NEW_NAME:更改网络接口名称,需要将设备先down掉;设备启动时,所以不能这样做设定。

      例如:ip link set eth0 name myeth

            ip link set eth0 address aa:aa:aa:aa:aa:aa 修改MAC地址

    ip link set [dev] IFACE_NAME [ mtu MTU ]:修改网络接口的MTU数值;

      例如:ip link set eth0 mtu 1000 更改 MTU为1000 bytes,单位就是 bytes

    ip link set [dev] IFACE_NAME [ netns PID ]

 (2)、ip addr COMMAND

  查看和设置逻辑网络地址,属于第三层。

    ip addr add IFADDR dev IFACE_NAME:为指定的网络接口添加IP地址;

      例如:ip addr add 192.168.50.50/24 broadcast + /

    ip addr del IFADDR dev IFACE_NAME:将IP地址从指定的网络接口上删除;

      例如:ip addr del 192.168.50.50/24 dev eth0

    ip addr flush dev IFACE_NAME:将指定接口上配置的所有IP地址全部清除;

    ip addr { show | list } [dev IFACE_NAME]:显示网络接口上配置的IP地址;

      例如: ip addr show eth0

  为网络接口增加【多个IP地址】,并能够使用ifconfig查看,设置卷标实现;

    ip addr add IFADDR dev IFACE_NAME label IFACE_NAME_LABEL

    ifconfig IFACE_NAME_LABEL IFADDR

    IFACE_NAME_LABEL : IFACE_NAME:#

 (3)、ip route COMMAND

  ip route查看和设置路由表信息,功能几乎与rout命令一样,但是,它还可以进行额外的参数设置,例如设置MTU。

    ip route { add | del } TARGET/PREFIX via NEXT_HOP [dev IFACE_NAME]

      例如: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 route del 192.168.10.0/24

            ip route del 192.168.5.0/24

    ip route list/show

      例如:ip route show

 (4)、ip netns COMMAND 设置内核中的网络名称空间

    ip netns list:列表显示所有的自定义的名称空间;

    ip netns add NS_NAME:创建名称空间;

    ip netns exec NS_NAME cmd:在指定的名称空间中使用命令;

    ip netns delete NS_NAME:删除指定的名称空间;

 2、ss命令

ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。

ss格式为:ss [options] [ FILTER ]

 (1)、[options]

  ss常用选项有:

    -t:与TCP协议相关的连接状态;

    -u:与UDP协议相关的连接;

    -w:与裸套接字相关的连接;

    -l:显示处于监听状态的连接;

    -a:显示所有的状态的套接字连接;

    -n:以数字化显示结果;

    -p:显示相关的应用程序及PID;

    -e:显示详细的扩展信息;

    -m:显示内存使用量;

    -o:计时器信息;

  常用的选项组合为:-tan, -uan, -tnl, -unl, -tulp, -unlp。

 (2)、[ FILTER ]

  FILTER为:[ state TCP-STATE ] [ EXPRESSION ],其中TCP-STATETCP,表示协议有限状态机中的所有的可用状态;EXPRESSION,表示为dport= :port 或 sport= :port,例如:‘( dport = :22 or sport = :22 )‘ ,注意EXPRESSION用单引号引出来。



三、nm家族

 1、nmcli命令

nmcli是网络管理命令行工具,可以使用nmcli配置网络、实现网络组、设置主机名

nmcli格式为:nmcli  [ OPTIONS ] OBJECT { COMMAND | help } 

 (1)、OBJECT主要包括两类,分别是connection和device 

  device:显示和配置网络接口信息

      device后的COMMAND有7类:status、show、connect、disconnect、delete、wifi、wimax

  connection:开始、停止、管理网络连接 

      connection后的COMMAND有9类:show、up、down、add、edit、modify、delete、reload、load

 (2)、COMMAND

  COMMAND的多类命令show、up、down、add、edit、modify、delete、reload、load解释如下:                

    show:显示网络连接的所有属性信息;

    up|down:启用或禁用指定的网络连接;

    add:用来添加新的网络连接。其后加以下4类:autoconnect yes|no:是否自动启动此连接,需在配置文件中添加ONBOOT=yes|no;ifname IF_NAME:指定要创建连接的目标网络接口设备名称;所有 con-name CON_NAME:为指定的网络接口设备创建一个连接名称; type TYPE:指定网络设备的接口类型。

      例如:# nmcli connection add autoconnect yes ifname eno67109432 con-name eno666 type ethernet

    delete:删除指定的网络连接

      例如:# nmcli connection delete CON_NAME

            # nmcli connection delete eno666

    reload:不重启网络接口,但重新加载其配置文件中的配置信息;

    modify:修改网络接口信息,格式为:modify [ id | uuid | path ] <ID> [+|-]<setting>.<property> <value> ,其中,<setting>为以下5种:802-3-ethernet.mtu ;connection.autoconnect ;ipv4.addresses ;ipv4.dns ;ipv4.gateway ;ipv4.method。

      例如:# nmcli connection modify "系统\ eno50332208" ipv4.addresses 1.2.3.4/8 ipv4.dns 202.202.222.222 ipv4.gateway 1.1.1.1 

 (3)、创建网络组

  网络组,就是将多个【网络接口设备聚合】在一起的方法,其目的是实现冗余容错以及提高可用性和吞吐量;网络组与以往的Bonding技术相比,具有更好的性能以及更好的扩展性;在CentOS7中,网络组是由内核中的一个内核驱动和一个名为teamd的守护进程来实现的。网络组主要可以实现以下5种工作模式,工作模式也被称为“运行器(runner)”:broadcast、roundrobin、activebackup、loadbalance、lacp(链路聚合控制协议)。

  网络组接口具有以下4个特点:1)、启动网络组接口并不会自动启动网络组中的其他port接口;2)、启动网络组终端port接口,也不会自动启动网络组接口;3)、禁用网络组接口,则会立即禁用网络组中的port接口;4)、对于没有port接口的网络组接口而言,只能配置静态IP地址,不能设置从DHCP获取;如果设置了,网络组接口就会一直等待port接口的加入。

  

  创建网络组有两种方法,一种是通过nmcli命令来创建,另一种是修改对应连接的配置文件来创建。

  方法一:通过nmcli命令来创建

  nmcli创建网络组接口:nmcli connection add type team con-name TEAM_CON_NAME ifname IF_NAME config JSON ;JSON是用来指定runner的方式,其格式为:‘{"runner": {"name": "METHOD"}}‘,METHOD为broadcast、roundrobin、activebackup、loadbalance、lacp五种。

    例如:# nmcli connection add type team con-name class17 ifname class17 config ‘{"runner": {"name": "loadbalance"}}‘

          # nmcli connection modify class17 ipv4.addresses 172.16.203.205/16

          # nmcli connection modify class17 ipv4.method manual

  

  nmcli创建port接口:nmcli connection add type team-slave [con-name CON_NAME] ifname IF_NAME master TEAM_NAME ;其中,如果不指定con-name,则默认的con-name为team-slave-IF_NAME。

    例如:# nmcli connection add type team-slave con-name eno67109432 ifname eno67109432 master class17

          # nmcli connection up class17

          # nmcli connection up eno67109432

          # nmcli device disconnect eno67109432


  方法二:修改对应连接的配置文件来创建

    例如:创建网络组接口:

          DEVICE=class17

          TEAM_CONFIG="{\"runner\": {\"name\": \"activebackup\"}}"

          DEVICETYPE=Team

          BOOTPROTO=none

          NAME=class17

          ONBOOT=yes

          IPADDR=172.16.203.205

          PREFIX=16


          创建port接口:

          NAME=team-slave-eno33554984

          DEVICE=eno33554984

          ONBOOT=yes

          TEAM_MASTER=class17

          DEVICETYPE=TeamPort



2、nmtui命令

nmtui是文本用户接口的网络控制连接。



四、Bonding

与网络组相似的操作时创建Bonding,也是将多块网卡,即多个网络接口设备绑定到同一IP地址,对外提供网络服务;这些网卡之间可以实现负载均衡或高可用技术;通过bonding,虚拟一个网卡对外提供服务及网络连接,所有的物理网卡都被修改为相同的MAC地址;但Bonding最好在CentOS6中实现,在CentOS7中使用nmcli创建的网络组来实现更加强大的容错。

Bonding主要有Mode 0、Mode 1和Mode 3这3种工作模式,具体解释如下:

    Mode 0 :【负载均衡】的解决方案,其负载均衡的算法为balance-rr,其中rr即轮询round robin。轮询策略,就是按【从头到尾】顺序的在每个slave接口上面发送数据包;该模式可以提供负载均衡以及容错的能力;

    Mode 1 :【主备】的解决方案,在此模式中,只有一个slave被激活,用于正常数据传输;而其他的接口都监视此接口的工作状态,当且仅当活动的slave接口失败的时候,才会从其他备份的接口中选择一个用于激活;该模式只能【实现容错】,无法进行负载均衡。

    Mode 3 :【全广播】的解决方案,在所有的slave接口上传输全部报文。


使用Bonding的配置步骤如下:

    1、创建虚拟接口;

    例如:

    可以在/etc/sysconfig/network-scripts/ifcfg-bond0文件中指定Bonding的特性:

      DEVICE=bond0

      ONBOOT=yes

      NM_CONTROLLED=no

      BOOTPROTO=none

      BONDING_OPTS="miimon=100 mode=0"

      IPADDR=172.16.100.135

      PREFIX=16    

    2、选择miimon的监测时间及Bonding的工作模式;miimon用来进行链路监测。如果miimon=100,则系统每100ms监测一次链路连接的状态;如果某个网络接口在miimon监测的结果为不连通,则进行故障倒换;

      例如:BONDING_OPTS="miimon=100 mode=0"

    3、选择用于此次Bonding的物理接口;

  修改物理网卡eth1的配置文件:/etc/sysconfig/network-scripts/ifcfg-eth1

    DEVICE=eth1

    BOOTROTO=none

    MASTER=bond0

    SLAVE=yes

    USERCTL=no


  修改物理网卡eth2的配置文件:/etc/sysconfig/network-scripts/ifcfg-eth2

    DEVICE=eth2

    BOOTROTO=none

    MASTER=bond0

    SLAVE=yes

    USERCTL=no



五、配置文件

 1、网络接口配置文件

  在CentOS6中,主要有5类配置文件,即与IP、MASK、GATEWAY、DNS Server相关的配置文件。各个网络接口配置文件的存取位置为:/etc/sysconfig/network-scripts/ifcfg-IFACE_NAME,其中的配置信息解释如下:

    DEVICE:网络接口【名称】

    TYPE:网络接口【类型】,常见的有Ethernet、Bridge、Token Ring等

    HWADDR:此设备的【物理地址】,是在以太网中的MAC地址;

    ONBOOT:在系统引导的过程中,是否【激活】此设备,yes/no;

    NETBOOT:是否可以使用此设备进行【网络引导】,yes/no;

    BOOTPROTO:接口【协议类型】;BOOTPROTO有动态配置和静态配置两类,动态配置即dhcp和bootp;静态配置即static和none。

    IPV6INIT:是否在此接口上初始化【IPV6】协议;

    USERCTL:是否【普通用户能够管理】此接口,推荐用no;

    IPADDR:指定此接口的固定【IP地址】,但,其前提是BOOTPROTO应该是static或none;

    NETMASK:设置IP地址对应的【子网掩码】;如:255.255.255.0

    PREFIX:设置IP地址的【网络前缀】的位数,和子网掩码一个意思;如:24

    GATEWAY:设置默认【网关】

    DNS1:首选【DNS】服务器的地址指向;

    DNS2:备用DNS服务器的地址指向;

    DNS3:第三DNS服务器的地址指向;

    PEERDNS:新的DNS服务器的地址是否能够指向替代的DNS服务器的地址指向,默认值为允许;

    NM_CONTROLLED:是否允许【NetworkManager】服务管理网络接口,不建议使用。

在CentOS6中非常不完善,关闭NetworkManager的步骤如下:(1)、# service NetworkManager stop ;(2)、# chkconfig NetworkManager off

在CentOS7中,与IP、MASK、GATEWAY、DNS Server相关的配置文件位置为:/etc/sysconfig/network-scripts/ifcfg-IFACE_NAME。与CentOS6相比,CentOS7主要多了三项,即UUID、NAME、DEFROUTE。DEFROUTE,用来设置是否允许此网络接口运行默认路由。


 2、主机名称的配置文件

  主机名称配置文件位置为:/etc/sysconfig/network。

  对于主机名配置文件,HOSTNAME,是当前Linux系统使用的主机名称,使用 # hostname 查看当前系统的FQDN ;# hostname NEW_HOSTNAME 进行注销后重新登录。

    例如:# hostnamectl set-hostname NEW_HOSTNAME 重新设置主机名


 3、本地解析配置文件

  本地解析配置文件位置为:/etc/hosts。格式为:IP地址 主机名


 4、解析器文件

  解析器文件的位置为:/etc/resolv.conf

    search DOMAIN_NAME

    nameserver DNS_SERVER_IP_ADDRESS


 5、静态路由的配置文件

  静态路由的配置文件位置为:/etc/sysconfig/network-scripts/route-IFACE_NAME。

  IFACE_NAME 两种写法如下:

   (1)、每条路由信息占用一行,格式为:TARGET via NEXT_HOP [dev IFACE_NAME]

      例如:10.0.0.0/8 via 192.168.100.254。

   (2)、每条路由信息占用多行,其格式为:

        ADDRESS#=TARGET

        NETMASK#=MASK

        GATEWAY#=NEXT_HOP

      例如:ADDRESS0=172.16.0.0

            NETMASK0=255.255.0.0

            GATEWAY0=192.168.10.254

  


六、网络接口命名

Linux的网络接口有两种命名方式,一种是传统的命名方式,其在CentOS6及之前的发行版本中使用;另一种是使用可预测的命名方式,其支持很多种命名机制,该方案从CentOS7开始使用。

 1、传统的命名方式

  以太网:【ethX】,其中X是自然数;例如:eth0、eth1

  PPP网络:【pppX】,其中X是自然数;例如:ppp0、ppp1

  环回接口:【lo】

 2、可预测的命名方案

  (1)、 根据Firmware命名

    每一台计算机的网卡在其计算机的硬件固件中都有唯一的标识符,比如:MAC地址,厂商标识,电器编号等。

      根据【集成设备】所提供的索引信息命名,例如:enoX, eno1,eno167777736,...

      根据【MAC地址】进行命名;例如:enx000c290045b3


  (2)、 根据物理拓扑结构命名

    每一台计算机的主板上都有固定数量的插槽或接口,如主板上第二个插槽连接的网卡的第一个物理接口等。

      根据【扩展插槽所提供】所提供的索引信息命名,如:ensX、ens0、ens2

      根据硬件接口的【物理拓扑】的位置信息命名,例如:enp1s0


网络管理和网络配置(net-tools家族(ifcfg家族)、iproute家族、nm家族)