1. 程式人生 > >Linux學習之路-Centos7-nmcli命令及網橋【21】---20180127

Linux學習之路-Centos7-nmcli命令及網橋【21】---20180127

nmcli 網橋 測試網絡工具 網絡客戶端工具


一、nmcli命令


1、地址配置工具:nmcli

  • nmcli [ OPTIONS ] OBJECT { COMMAND | help }

    device - show and manage network interfaces

    nmcli device help

    connection - start, stop, and manage network connections

    nmcli connection help

  • 修改IP地址等屬性:

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

    setting.property:

    ipv4.addresses ipv4.gateway

    ipv4.dns1 ipv4.method manual | auto

  • 修改配置文件執行生效:systemctl restart network

    nmcli con reload


  • nmcli命令生效: nmcli con down eth0 ;nmcli con up eth0


2、使用nmcli配置網絡

  • NeworkManager是管理和監控網絡設置的守護進程

  • 設備即網絡接口,連接是對網絡接口的配置。一個網絡接口可有多個連接配置,但同時只有一個連接配置生效

  • 顯示所有包括不活動連接

    nmcli con show

  • 顯示所有活動連接

    nmcli con show --active

  • 顯示網絡連接配置

    nmcli con show "System eth0“

  • 顯示設備狀態

    nmcli dev status

  • 顯示網絡接口屬性

    nmcli dev show eth0

  • 創建新連接default,IP自動通過dhcp獲取

    nmcli con add con-name default type Ethernet ifname eth0

  • 刪除連接

    nmcli con del default

  • 創建新連接static ,指定靜態IP,不自動連接

    nmcti con add con-name static ifname eth0 autoconnect no type Ethernet ipv4.addresses 172.25.X.10/24 ipv4.gateway 172.25.X.254

  • 啟用static連接配置

    nmcli con up static

  • 啟用default連接配置

    nmcli con up default

  • 查看幫助

    nmcli con add help

  • 修改連接設置

    nmcli con mod“static” connection.autoconnect no

    nmcli con mod “static” ipv4.dns 172.25.X.254

    nmcli con mod “static” +ipv4.dns 8.8.8.8

    nmcli con mod “static” -ipv4.dns 8.8.8.8

    nmcli con mod “static” ipv4.addresses “172.25.X.10/24 172.25.X.254”

    nmcli con mod “static” +ipv4.addresses 10.10.10.10/16

  • DNS設置,存放在/etc/resolv.conf文件中PEERDNS=no 表示當IP通過dhcp自動獲取時,dns仍是手動設置,不自動獲取。等價於下面命令:

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

技術分享圖片

nmcli con modifcfg-* 文件
ipv4.method manualBOOTPROTO=none
ipv4.method autoBOOTPROTO=dhcp
ipv4.addresses “192.0.2.1/24 192.0.2.254”

IPADDR0=192.0.2.1

PREFIX0=24

GATEWAY0=192.0.2.25

ipv4.dns 8.8.8.8DNS0=8.8.8.8
ipv4.dns-search example.comDOMAIN=example.com
ipv4.ignore-auto-dns truePEERDNS=no
connection.autoconnect yesONBOOT=yes
connection.id eth0NAME=eth0
connection.interface-name eth0DEVICE=eth0
802-3-ethernet.mac-address . . .HWADDR= . . .


3、網絡配置文件及其他設置

  • 設備配置被保存在文本文件中

    /etc/sysconfig/network-scripts/ifcfg-<name>

    幫助文檔列出完整選項列表:/usr/share/doc/initcripts-*/sysconfig.txt

動態配置靜態配置

DEVICE=ethX

HWADDR=0:02:8A:A6:30:45

BOOTPROTO=dhcp

ONBOOT=yes

Type=Ethernet

DEVICE=ethX

HWADDR=0:02:8A:A6:30:45

IPADDR=192.168.0.123

NETMASK=255.255.255.0

GATEWAY=192.168.0.254

ONBOOT=yes

Type=Ethernet

  • 修改連接配置後,需要重新加載配置

    nmcli con reload

    nmcli con down “system eth0” 可被自動激活

    nmcli con up “system eth0”

    nmcli dev dis eth0 禁用網卡,訪止被自動激活

  • 圖形工具

    nm-connection-editor

  • 字符工具

    nmtui

    nmtui-connect

    nmtui-edit

    nmtui-hostname


配置不同的網卡配置文件環境

#查看由幾個網卡
[root@Router~]#nmcli device 
DEVICE  TYPE      STATE   CONNECTION 
ens32   ethernet  connected  ens33      
ens33   ethernet  connected  ens34      
lo     loopback  unmanaged  -- 

#配置一個網卡環境
[root@Router~]#nmcli connection add con-name ens32-sc type ethernet ifname ens32 ipv4.method manual ipv4.addresses 172.18.68.200/16 ipv4.gateway 172.18.0.1 ipv4.dns 114.114.114.114
Connection 'ens32-sc' (e5740d61-6f39-4af1-81f2-b062cddbf202) successfully added.
[root@Router~]#nmcli connection show 
NAME      UUID                         TYPE       DEVICE 
ens33     c96bc909-188e-ec64-3a96-6a90982b08ad  802-3-ethernet  ens32  
ens34     94aea789-efb3-ef4c-81b0-e8b18ecc9797  802-3-ethernet  ens33  
ens32-sc   e5740d61-6f39-4af1-81f2-b062cddbf202  802-3-ethernet  --  

#切換網卡配置
[root@Router~]#nmcli connection up ens32-sc
Connection successfully activated (D-Bus active path:/org/freedesktop/NetworkManager/ActiveConnection/5)

#如果手動增加的配置文件,需要手動加載下配置文件
[root@Router~]#nmcli connection reload 

#邏輯上斷開或連接網卡
[root@Router~]#nmcli device disconnect ens33
Device 'ens33' successfully disconnected

[root@Router~]#nmcli device connect ens33
Device 'ens33' successfully activated with 'a62b80b1-2533-4e38-84c4-bd690837adcc'




二、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

[root@Router~]#nmcli connection add type bond con-name bond0 ifname bond0 mode active-backup ipv4.method manual ipv4.addresses 172.18.0.200/16 ipv4.gateway 172.18.0.1 ipv4.dns 114.114.114.114

[root@Router~]#nmcli connection add con-name bond0-slave0 type bond-slave ifname ens33 master bond0
[root@Router~]#nmcli connection add con-name bond0-slave1 type bond-slave ifname ens33 master bond0
[root@Router~]#nmcli connection up bond0-slave0
[root@Router~]#nmcli connection up bond0-slave1

[root@Router~]#cat /proc/net/bonding/bond0


#Centos6實現網卡別名

#實現在一塊網卡上有兩個ip地址,一個動態獲取、一個靜態地址,服務器重啟地址不丟失

[root@VSservernetwork-scripts]#cp ifcfg-eth1{,:1}
[root@VSservernetwork-scripts]#cp ifcfg-eth1{,:2}
[root@VSservernetwork-scripts]#vim ifcfg-eth1:1
DEVICE=eth1:1
IPADDR=172.18.0.6
PREFIX=16
GATEWAY=172.18.0.1
DNS1=114.114.114.114
DOMAIN=magedu.com
[root@VSservernetwork-scripts]#vim ifcfg-eth1:2
DEVICE=eth1:2
IPADDR=172.18.0.7
PREFIX=16
GATEWAY=172.18.0.1
DNS1=114.114.114.114
DOMAIN=magedu.com
[root@VSservernetwork-scripts]#vim ifcfg-eth1
DEVICE=eth1
BOOTPROTO=dhcp
GATEWAY=172.18.0.1
DNS1=114.114.114.114
DOMAIN=magedu.com
[root@VSservernetwork-scripts]#service network restart

#註意:別名不能自動獲取ip地址,必須是靜態地址




三、網絡組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接口的加入


1、創建網絡組接口

  • 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


2、創建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接口


3、網絡組示例

  • nmcli con add type team con-name team0 ifname team0 config ‘{"runner": {"name": "loadbalance"}}'

  • nmcli con mod team0 ipv4.addresses 192.168.1.100/24

  • nmcli con mod team0 ipv4.method manual

  • nmcli con add con-name team0-eth1 type team-slave ifname eth1 master team0

  • nmcli con add con-name team0-eth2 type team-slave ifname eth2 master team0

  • nmcli con up team0

  • nmcli con up team0-eth1

  • nmcli con up team0-eth2

  • teamdctl team0 state; nmcli dev dis eth1


實驗:創建網絡組

[root@Router~]#ip link
[root@Router~]#nmcli con add type team con-name team0 ifname team0 config '{"runner": {"name": "activebackup"}}'
[root@Router~]#nmcli con mod team0 ipv4.addresses '172.18.0.123/16'
[root@Router~]#nmcli con mod team0 ipv4.method manual
[root@Router~]#nmcli con add con-name team0-port1 type team-slave ifname eth1 master team0
[root@Router~]#nmcli con add con-name team0-port2 type team-slave ifname eth2 master team0
[root@Router~]#nmcli con up team0-port1
[root@Router~]#nmcli con up team0-port2
[root@Router~]#ping -I team0 172.18.68.100            #-I 是指定從哪個網卡往出ping
[root@Router~]#teamdctl team0 state
setup:
    runner: activebackup
ports:
    eth0
        link watches:
        link summary: up
        instance[link_wathc_0]
            name: ethtool
            link: up
            down count: 0
    eth1
        link watches:
        link summary: up
        instance[link_wathc_0]
            name: ethtool
            link: up
            down count: 0
runner:
    active port: eth0

[root@VSservernetwork-scripts]#nmcli connection delete team0
[root@VSservernetwork-scripts]#nmcli connection delete team0-slave0
[root@VSservernetwork-scripts]#nmcli connection delete team0-slave1



4、管理網絡組配置文件

[root@Router~]#/etc/sysconfig/network-scripts/ifcfg-team0
DEVICE=team0
DEVICETYPE=Team
TEAM_CONFIG="{\"runner\": {\"name\": \"broadcast\"}}"
BOOTPROTO=none
IPADDR0=172.25.5.100
PREFIX0=24
NAME=team0
ONBOOT=yes

[root@Router~]#/etc/sysconfig/network-scripts/ifcfg-team0-eth1
DEVICE=eth1
DEVICETYPE=TeamPort
TEAM_MASTER=team0
NAME=team0-eth1
ONBOOT=yes



5、刪除網絡組

[root@Router~]#nmcli connection down team0
[root@Router~]#teamdctl team0 state
[root@Router~]#nmcli connection show
[root@Router~]#nmcli connectioni delete team0-eth0
[root@Router~]#nmcli connectioni delete team0-eth1
[root@Router~]#nmcli connection show



6、網橋

  • 橋接:把一臺機器上的若幹個網絡接口“連接”起來。其結果是,其中一個網口收到的報文會被復制給其他網口並發送出去。以使得網口之間的報文能夠互相轉發。網橋就是這樣一個設備,它有若幹個網口,並且這些網口是橋接起來的。與網橋相連的主機就能通過交換機的報文轉發而互相通信。

  • 主機A發送的報文被送到交換機S1的eth0口,由於eth0與eth1、eth2橋接在一起,故而報文被復制到eth1和eth2,並且發送出去,然後被主機B和交換機S2接收到。而S2又會將報文轉發給主機C、D。

技術分享圖片

#創建軟件網橋
[root@Router~]#nmcli con add type bridge con-name br0 ifname br0
[root@Router~]#nmcli connection modify br0 ipv4.addresses 192.168.74.100/24 ipv4.method manuall
[root@Router~]#nmcli con add type bridge-slave con-name br0-port0 ifname eth0 master br0

#查看網橋
[root@Router~]#cat /etc/sysconfig/network-scripts/ifcfg-br0
[root@Router~]#cat /etc/sysconfig/network-scripts/ifcfg-br0-port0
[root@Router~]#brctl show

#刪除網橋 
[root@Router~]#brctl delbr br0

#刪除網橋中網卡 
[root@Router~]#brctl delif eth0

#註意:NetworkManager只支持以太網接口接口連接到網橋,不支持聚合接口



四、測試網絡工具

  • 在命令行下測試網絡的連通性

  • 顯示主機名

    hostname

  • 測試網絡連通性

    ping

    mtr(跟蹤路由器,動態跟蹤)

  • 顯示正確的路由表

    ip route

  • 確定名稱服務器使用:

    nslookup

    host

    dig

  • 跟蹤路由

    traceroute

    tracepath


五、網絡客戶端工具

  • ftp,lftp(帶顏色並且支持命令補全)

    子命令:

    get(下載指定的一個文件)

    mget(下載多個文件)

    put(是上傳)

    ls(看的是ftp服務器裏的文件)

    !ls(看的是本機的文件)

    lcd(切換目錄)

    help

    ?(是查看所能使用的命令)

  • lftp [-p port] [-u user[,password]] SERVER

[root@Router~]#yum install ftp lftp -y
[root@Router~]#ftp 172.18.0.1
ftp>pwd
257 "/"              #這個是指ftp服務器文件所在的根,不是當前系統的根
ftp>ls     
ftp>mget ubu*        #可以下載多個文件       

#實現自動上傳文件或者下載文件
[root@Router~]#ftp -n <<EOF
>open 172.18.0.1
>user ftp
>password xxx
>get a
>EOF



  • lftpget URL

  • wget [option]... [URL]...

    -q: 靜默模式

    -c: 斷點續傳

    -P:保存在指定目錄

    -O: 保存為指定的文件名

    --limit-rate=: 指定傳輸速率,單位K,M等

  • links URL

    --dump(抓網頁文字)

    --source(抓網頁源碼)


[root@Router~]#yum install elinks

#可以下載不讓轉載的文字
[root@Router~]#links 192.168.1.100 --dump > a.tx


Linux學習之路-Centos7-nmcli命令及網橋【21】---20180127