1. 程式人生 > >centOS7網路配置(nmcli,bonding,網路組)

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(顯示更全的資訊)

[[email protected] ~]#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

[[email protected] ~]#nmcli connection modify eth2 autoconnect no
[[email protected] ~]#nmcli connection modify eth2 ipv4.method auto
[[email protected] ~]#nmcli connection modify eth2 +ipv4.addresses 192.168.111.122/24
[[email protected] ~]#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

[[email protected] ~]#nmcli connection reload 

網路介面的啟用與停用:

  nmcli connection down eth0

  nmcli connection up eth0

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

顯示網路介面

顯示所有包括不活動連線

  nmcli connection show

[[email protected] ~]#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

[[email protected] ~]#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

[[email protected] ~]#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

[[email protected] ~]#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,不自動連線

[[email protected] ~]#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.

刪除連線

[[email protected] ~]#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

[[email protected] 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

[[email protected] 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 域名就可以了。

[[email protected] 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命令是常用的分析域名查詢工具,可以用來測試域名系統工作是否正常。

[[email protected] 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命令是常用的域名查詢工具,可以用來測試域名系統工作是否正常

[[email protected] ~]#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

[[email protected] ~]#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

[[email protected]691 ~]#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 檢視原始碼