關於網絡接口命名
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 查看源碼