centOS7网络配置(nmcli,bonding,网络组)

Posted Linuxbugs(卡西莫多伯伯)

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了centOS7网络配置(nmcli,bonding,网络组)相关的知识,希望对你有一定的参考价值。

关于网络接口命名

CentOS 6之前,网络接口使用连续号码命名: eth0、 eth1等,当增加或删除网卡时,名称可能会发生变化。CentOS 7使用基于硬件,设备拓扑和设置类型命名。

网卡命名机制

systemd对网络设备的命名方式

  (a) 如果Firmware或Bios为主板上集成的设备提供的索引信息可用,且可预测则根据此索引进行命名,例如eno1

  (b) 如果Firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,例如ens1

  (c) 如果硬件接口的物理位置信息可用,则根据此信息进行命名,例如enp2s0

  (d) 如果用户显式启动,也可根据MAC地址进行命名,enx2387a1dc56

  (e) 上述均不可用时,则使用传统命名机制

网卡名称

(1)基于BIOS支持启用biosdevname软件

  内置网卡: em1,em2

  pci卡: pYpX Y: slot ,X:port

(2) 名称组成格式

  en: Ethernet 有线局域网

  wl: wlan 无线局域网

  ww: wwan无线广域网

    名称类型:

  o<index>: 集成设备的设备索引号

  s<slot>: 扩展槽的索引号

  x<MAC>: 基于MAC地址的命名

  p<bus>s<slot>: enp2s1

网卡设备的命名过程

第一步:

  udev, 辅助工具程序/lib/udev/rename_device

  /usr/lib/udev/rules.d/60-net.rules

第二步:

  biosdevname 会根据/usr/lib/udev/rules.d/71-biosdevname.rules

第三步:

  通过检测网络接口设备,根据

  /usr/lib/udev/rules.d/75-net-description

  ID_NET_NAME_ONBOARD

  ID_NET_NAME_SLOT

  ID_NET_NAME_PATH

采用传统命名方式

(1) 编辑/etc/default/grub配置文件

  GRUB_CMDLINE_LINUX="rhgb quiet net.ifnames=0"

  或:修改/boot/grub2/grub.cfg(不建议)

(2) 为grub2生成其配置文件

  grub2-mkconfig -o /etc/grub2.cfg

(3) 重启系统

CentOS 7网络配置工具

centOS7主机名

配置文件:/etc/hostname ,默认没有此文件, 通过DNS反向解析获取主机名, 主机名默认为: localhost.localdomain

显示主机名信息

  hostname

  hostnamectl status(显示更全的信息)

[root@CT731 ~]#hostnamectl status 
   Static hostname: CT731
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 618d3baeb5754f7092242f811c7aa740
           Boot ID: 3e2702fde99242248e0f20c0b7c5c19c
    Virtualization: vmware
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-514.el7.x86_64
      Architecture: x86-64

设置主机名

  hostnamectl set-hostname centos7(即时生效,直接写入配置文件)

  删除文件/etc/hostname, 恢复主机名localhost.localdomain

CentOS 7网络配置工具nmcli

由于这个工具是centOS7上面的新工具,不仅大而且选项很多,但是工具很强大,我们就学习它的一部分功能。

地址配置工具: nmcli

nmcli [ OPTIONS ] OBJECT { COMMAND | help }

device - show and manage network interfaces

connection - start, stop, and manage network connections

nmcli connection/device help 查看帮助

修改IP地址等属性

nmcli connection modify IFACE [+|-]setting.property value

setting.property:

  ipv4.addresses

ipv4.gateway

  ipv4.dns1

  ipv4.method manual/auto

[root@CT731 ~]#nmcli connection modify eth2 autoconnect no
[root@CT731 ~]#nmcli connection modify eth2 ipv4.method auto
[root@CT731 ~]#nmcli connection modify eth2 +ipv4.addresses 192.168.111.122/24
[root@CT731 ~]#nmcli connection modify eth2 +ipv4.dns 8.8.8.8

DNS设置,存放在/etc/resolv.conf文件中

PEERDNS=no 表示当IP通过dhcp自动获取时, dns仍是手动设置,不自动获取。等价于下面命令:

nmcli con mod "system eth0" ipv4.ignore-auto-dns yes

修改配置文件执行生效

  systemctl restart network

  nmcli connection reload

[root@CT731 ~]#nmcli connection reload 

 

网络接口的启用与停用:

  nmcli connection down eth0

  nmcli connection up eth0

[root@CT731 ~]#nmcli connection down eth2
Connection \'eth2\' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/77)
[root@CT731 ~]#nmcli connection up eth2  
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/78)

显示网络接口

显示所有包括不活动连接

  nmcli connection show

[root@CT731 ~]#nmcli connection show 
NAME  UUID                                  TYPE            DEVICE 
eth0  c96bc909-188e-ec64-3a96-6a90982b08ad  802-3-ethernet  eth0   
eth1  94aea789-efb3-ef4c-81b0-e8b18ecc9797  802-3-ethernet  eth1   
eth2  3a73717e-65ab-93e8-b518-24f5af32dc0d  802-3-ethernet  eth2

显示所有活动连接

  nmcli connection show --active

显示网络连接配置

  nmcli connection show eth0

[root@CT731 ~]#nmcli connection show eth2
connection.id:                          eth2
connection.uuid:                        3a73717e-65ab-93e8-b518-24f5af32dc0d
connection.stable-id:                   --
connection.interface-name:              eth2
... ...
802-3-ethernet.wake-on-lan:             1 (default)
802-3-ethernet.wake-on-lan-password:    --
ipv4.method:                            auto
ipv4.dns:                               8.8.8.8
ipv4.dns-search:                        
ipv4.dns-options:                       (default)
ipv4.dns-priority:                      0
ipv4.addresses:                         192.168.111.160/24, 192.168.111.122/24
ipv4.gateway:                           --
... ...
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/5
GENERAL.SPEC-OBJECT:                    /
GENERAL.MASTER-PATH:                    --
IP4.ADDRESS[1]:                         192.168.111.122/24
IP4.ADDRESS[2]:                         192.168.111.160/24
IP4.ADDRESS[3]:                         192.168.111.143/24
IP4.GATEWAY:                            
IP4.DNS[1]:                             192.168.111.1
IP4.DNS[2]:                             8.8.8.8
IP4.DOMAIN[1]:                          localdomain
DHCP4.OPTION[1]:                        requested_domain_search = 1
DHCP4.OPTION[2]:                        requested_time_offset = 1
DHCP4.OPTION[3]:                        requested_domain_name = 1
DHCP4.OPTION[4]:                        requested_rfc3442_classless_static_routes = 1
... ...

显示设备状态

  nmcli device status

[root@CT731 ~]#nmcli device status 
DEVICE  TYPE      STATE      CONNECTION 
eth0    ethernet  connected  eth0       
eth1    ethernet  connected  eth1       
eth2    ethernet  connected  eth2       
lo      loopback  unmanaged  --   

显示网络接口属性

  nmcli device show eth0

[root@CT731 ~]#nmcli device show eth2
GENERAL.DEVICE:                         eth2
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         00:0C:29:84:00:C8
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     eth2
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/78
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         192.168.111.122/24
IP4.ADDRESS[2]:                         192.168.111.160/24
IP4.ADDRESS[3]:                         192.168.111.143/24
IP4.GATEWAY:                            
IP4.DNS[1]:                             192.168.111.1
IP4.DNS[2]:                             8.8.8.8
IP4.DOMAIN[1]:                          localdomain
IP6.ADDRESS[1]:                         fe80::bd9a:88f7:695e:fdce/64

创建新的网络接口(存在未使用的网卡)

创建新连接default, IP自动通过dhcp获取

nmcli connection add con-name eth0 type Ethernet ifname eth0

创建新连接static ,指定静态IP,不自动连接

[root@CT731 ~]#nmcli connection add con-name eth4 ifname eth4 autoconnect no type Ethernet ipv4.address 172.25.12.10/24 ipv4.gateway 172.25.12.254  
Connection \'eth4\' (403fe692-04cd-4a01-b8bb-7e2bb468daf1) successfully added.

删除连接

[root@CT731 ~]#nmcli connection delete eth4
Connection \'eth4\' (403fe692-04cd-4a01-b8bb-7e2bb468daf1) successfully deleted

nmcli命令与配置文件对应关系

nmcli实现bonding

添加bonding接口

nmcli con add type bond con-name mybond0 ifname mybond0 mode active-backup

添加从属接口

nmcli con add type bond-slave ifname ens7 master mybond0

nmcli con add type bond-slave ifname ens3 master mybond0

注:如无为从属接口提供连接名,则该名称是接口名称加类型构成

启动从属接口

nmcli con up bond-slave-eth0

nmcli con up bond-slave-eth1

启动绑定

nmcli con up mybond0

 

关闭并删除bond

nmcli con down mybond0

rm –f /etc/sysconfig/network-scripts/ifcfg-*bond*

nmcli connection reload

网络组Network Teaming

网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量

网络组不同于旧版中bonding技术,提供更好的性能和扩展性

网络组由内核驱动和teamd守护进程实现.

多种方式runner

  broadcast

  roundrobin

  activebackup

  loadbalance

  lacp (implements the 802.3ad Link Aggregation Control、Protocol)

网络组的注意事项:

  启动网络组接口不会自动启动网络组中的port接口

  启动网络组接口中的port接口总会自动启动网络组接口

  禁用网络组接口会自动禁用网络组中的port接口

  没有port接口的网络组接口可以启动静态IP连接

  启用DHCP连接时,没有port接口的网络组会等待port接口的加入

创建网络组接口

命令:

  nmcli con add type team con-name CNAME ifname INAME [config JSON]

CNAME 连接名, INAME 接口名(两个可以指定相同名字)

JSON 指定runner方式

格式: \'{"runner": {"name": "METHOD"}}\'

METHOD :

  broadcast, roundrobin,activebackup, loadbalance, lacp

我们创建的接口就是对外的连接口,是用于让服务器以外的主机进行访问的,在创建接口的同时,我们可以直接在创建的同时设置IP地址,如果我们不设置IP地址,它会采用DHCP的方式寻求DHCP服务器给分配一个IP地址

创建port接口

nmcli con add type team-slave [con-name CNAME] ifname INAME master TEAM

  CNAME 连接名

  INAME 网络接口名

  TEAM 网络组接口名

  连接名若不指定,默认为team-slave-IFACE

  nmcli dev dis INAME

  nmcli con up CNAME

  INAME 设备名 CNAME 网络组接口名或port接口

创建port其实就是将原来存在的网卡加入到网络组中,使用统一的网址进行访问,通过不同的模式使用网卡,可实现负载均衡,高可用性等。

启用网络接口

先启用port接口(逐个启用)

  nmcli connection up team-slave-eth*

再启用网络接口

  nmcli connection up con-team0

完成后就可以访问了。

查看网络组网卡状态

  teamdctl team0 state

关闭网络组

首先,我们要down掉网络组,命令:

  nmcli connection up con-team0

然后删除相关配置文件:

  rm /etc/sysconfig/network-scripts/ifcfg-*team*

最后重新加载网络

  nmcli connection reload

管理网络组配置文件

我们使用nmcli设置网络组,实际上就是直接操作的配置文件,我们可以对关于网络组的一些配置文件做一个了解。

/etc/sysconfig/network-scripts/ifcfg-con-team0

  DEVICE=team0

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

  BOOTPROTO=none

  DEFROUTE=yes

  NAME=con-team0

  ONBOOT=yes

  DEVICETYPE=Team

  IPADDR=192.168.111.100

  PREFIX=24

/etc/sysconfig/network-scripts/ifcfg-team-slave-eth1

  NAME=team-slave-eth1

  UUID=af7e25aa-6a08-4fda-a33d-3a9de62b6f66

  DEVICE=eth1

ONBOOT=yes

  TEAM_MASTER=team0

  DEVICETYPE=TeamPort

网桥的软实现

桥接:把一台机器上的若干个网络接口"连接"起来。其结果是,其中一个网口收到的报文会被复制给其他网口并发送出去。以使得网口之间的报文能够互相转发。网桥就是这样一个设备,它有若干个网口,并且这些网口是桥接起来的。与网桥相连的主机就能通过交换机的报文转发而互相通信。

主机A发送的报文被送到交换机S1的eth0口,由于eth0与eth1、 eth2桥接在一起,故而报文被复制到eth1和eth2,并且发送出去,然后被主机B和交换机S2接收到。而S2又会将报文转发给主机C、 D。

创建软件网桥

创建接口

  nmcli con add type bridge con-name br0 ifname br0

设置IP(不设置则DHCP分配)

    nmcli connection modify br0 ipv4.addresses 192.168.74.100/24 ipv4.method manuall

向往桥中添加网卡(一般添加两个以上)

  nmcli con add type bridge-slave [con-name br0-port0] ifname eth0 master br0

启动网桥

  nmcli connection up br0-port0

关闭并取消网桥设置

    先down掉网桥

        nmcli connection down br0

    在删除设置

        nmcli connection delete bridge-slave-eth1

        nmcli connection delete br0

    重新加载网络

        nmcli connection reload

扩展

网络测试工具

测试网络连通性

ping

[root@CT731 network-scripts]#ping 172.17.0.1
PING 172.17.0.1 (172.17.0.1) 56(84) bytes of data.
64 bytes from 172.17.0.1: icmp_seq=1 ttl=64 time=1.27 ms
64 bytes from 172.17.0.1: icmp_seq=2 ttl=64 time=0.849 ms
64 bytes from 172.17.0.1: icmp_seq=3 ttl=64 time=0.662 ms

mtr

       My traceroute  [v0.85]
CT731 (0.0.0.0)                                                                    Thu Sep  7 21:26:59 2017
Keys:  Help   Display mode   Restart statistics   Order of fields   quit
                                                                   Packets               Pings
 Host                                                            Loss%   Snt   Last   Avg  Best  Wrst StDev
 1. 172.17.0.1                                                    0.0%    10    1.0   0.8   0.5   1.0   0.0
 2. ???

显示正确的路由表

ip route

[root@CT731 network-scripts]#ip route
default via 172.17.0.1 dev eth0  proto static  metric 100 
172.17.0.0/16 dev eth0  proto kernel  scope link  src 172.17.254.57  metric 100 
192.168.111.0/24 dev eth1  proto kernel  scope link  src 192.168.111.120  metric 100 
192.168.111.0/24 dev eth2  proto kernel  scope link  src 192.168.111.122  metric 101

确定名称服务器使用:

nslookup

nslookup命令是常用域名查询工具,就是查DNS信息用的命令。 nslookup4有两种工作模式,即“交互模式”和“非交互模式”。在“交互模式”下,用户可以向域名服务器查询各类主机、域名的信息,或者输出域名中的主机列表。而在“非交互模式”下,用户可以针对一个主机或域名仅仅获取特定的名称或所需信息。 进入交互模式,直接输入nslookup命令,不加任何参数,则直接进入交互模式,此时nslookup会连接到默认的域名服务器(即/etc/resolv.conf的第一个dns地址)。或者输入nslookup -nameserver/ip。进入非交互模式,就直接输入nslookup 域名就可以了。

[root@CT731 network-scripts]#nslookup www.sina.com
Server:         172.17.0.1
Address:        172.17.0.1#53

Non-authoritative answer:
www.sina.com    canonical name = us.sina.com.cn.
us.sina.com.cn  canonical name = wwwus.sina.com.
Name:   wwwus.sina.com
Address: 66.102.251.33

host

host命令是常用的分析域名查询工具,可以用来测试域名系统工作是否正常。

[root@CT731 network-scripts]#host www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 111.13.100.92
www.a.shifen.com has address 111.13.100.91

dig

dig命令是常用的域名查询工具,可以用来测试域名系统工作是否正常

[root@CT731 ~]#dig www.baidu.com

; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23008
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 6

跟踪路由

traceroute

[root@CT691 ~]#traceroute www.baidu.com
traceroute to www.baidu.com (14.215.177.38), 30 hops max, 60 byte packets
 1  172.17.0.1 (172.17.0.1)  2.929 ms  2.823 ms  2.779 ms
 2  * * *
 3  * * *

tracepath

[root@CT691 ~]#tracepath www.baidu.com
 1?: [LOCALHOST]     pmtu 1500
 1:  172.17.0.1 (172.17.0.1)                                0.707ms 
 1:  172.17.0.1 (172.17.0.1)                                0.648ms 
 2:  no reply

网络客户端工具

ftp

    下载命令 get,mget

    查看 ls

    帮助 help ?

    !ls 看本机的文件列表

lftp

    比ftp更好用

lftpget URL直接下载,非交互(下载ftp服务上的文件,也支持http协议)

wget [option] [url] 非交互式的下载文件

    -q:静默模式

    -c:断点续传

    -O:保存位置

    -P:指定下载到某个目录

    --limit-rate= :指定传输速率,单位K,M等。

links URL字符界面的浏览器

    --dump 显示页面文字

    --source 查看源码

 

以上是关于centOS7网络配置(nmcli,bonding,网络组)的主要内容,如果未能解决你的问题,请参考以下文章

centos7网卡bond配置

linux网络管理-bonding

centos7上实现bonding

linux如何配置bond?

centos7双网卡绑定bond0

linux下网卡bonding配置