网络管理和网络配置(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


     本文转自little_ding 51CTO博客,原文链接:http://blog.51cto.com/12496428/1949614,如需转载请自行联系原作者







相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
12天前
|
机器学习/深度学习 编解码 并行计算
SegNetr来啦 | 超越UNeXit/U-Net/U-Net++/SegNet,精度更高模型更小的UNet家族
SegNetr来啦 | 超越UNeXit/U-Net/U-Net++/SegNet,精度更高模型更小的UNet家族
28 0
|
5月前
|
Kubernetes 安全 数据安全/隐私保护
【K8S系列】深入解析k8s网络插件—Weave Net
【K8S系列】深入解析k8s网络插件—Weave Net
193 0
|
3月前
|
机器学习/深度学习 存储 算法
MATLAB神经网络拟合回归工具箱Neural Net Fitting的使用方法
MATLAB神经网络拟合回归工具箱Neural Net Fitting的使用方法
|
3月前
|
数据采集 消息中间件 安全
.NET使用分布式网络爬虫框架DotnetSpider快速开发爬虫功能
.NET使用分布式网络爬虫框架DotnetSpider快速开发爬虫功能
|
8月前
|
机器学习/深度学习 算法
使用BP神经网络和Elman Net预测航班价格(Matlab代码实现)
使用BP神经网络和Elman Net预测航班价格(Matlab代码实现)
|
10月前
|
Prometheus 监控 Kubernetes
《云原生网络数据面可观测性最佳实践》——三、容器网络常见观测工具及特点——2.Net Exporter技术原理
《云原生网络数据面可观测性最佳实践》——三、容器网络常见观测工具及特点——2.Net Exporter技术原理
|
10月前
|
Prometheus 监控 Kubernetes
《云原生网络数据面可观测性最佳实践》——四、ACK Net-Exporter 快速上手——1.Prometheus + Grafana配置(上)
《云原生网络数据面可观测性最佳实践》——四、ACK Net-Exporter 快速上手——1.Prometheus + Grafana配置(上)
|
10月前
|
Prometheus 运维 Kubernetes
《云原生网络数据面可观测性最佳实践》——四、ACK Net-Exporter 快速上手——1.Prometheus + Grafana配置(下)
《云原生网络数据面可观测性最佳实践》——四、ACK Net-Exporter 快速上手——1.Prometheus + Grafana配置(下)
|
10月前
|
Cloud Native Perl 容器
《云原生网络数据面可观测性最佳实践》——四、ACK Net-Exporter 快速上手——2.ACK Net-Exporter 部署(上)
《云原生网络数据面可观测性最佳实践》——四、ACK Net-Exporter 快速上手——2.ACK Net-Exporter 部署(上)