一、CentOS7網絡接口命名策略(systemd)
二、CentOS7的基礎網絡管理命令
2.1 NetworkManager服務
2.2 nmtui文本交互式工具
2.3 nmcli命令行接口工具
nmcli的語法說明
NetworkManager整體狀態顯示
顯示所有連接或僅活動的連接
顯示所有設備的狀態
顯示指定設備的所有連接屬性
添加動態的以太網連接(DHCP)
添加靜態的以太網連接
設置dns
設置靜態路由
清空指定連接下的靜態路由
2.5 直接編輯ifcfg-xxx文件
ip地址設置
路由設置
2.6 使用ip命令
添加IP地址
清除接口上的所有IP
添加/刪除靜態路由
三、主機名的修改
3.1 直接修改/etc/hostname
3.2 通過hostnamectl 修改
3.3 通過nmcli修改hostname
四、多網卡綁定
4.1 使用nmtui
4.2 使用nmcli
1) 創建bond0并設置ip
2) 添加從接口
五、橋接多網卡
六、VLAN接口
一、CentOS7網絡接口命名策略(systemd)
在centos7之前使用傳統接口命名(eth[0 1 2 …]),優點是簡單易記,但其缺點也很明顯,不能保證接口id與物理槽位一一對應,并且在添加、刪除、更換網卡時可能會出現接口id改變的問題,所以在centos7中使用了如下命名法則:
接口名 | 類型 | 命名格式 | 說明 |
---|---|---|---|
eno1424112 | 以太網 | eno<index> | 用于板載網卡的命名,en代表以太網,o表示onboard(板載設備),index為設備索引號 |
ens1234123 | 以太網 | ens<slot>[f<function>][d<dev_id>] | 用于PCI熱插拔槽上設備命名,s表示slot,f表示function號(多功能pci設備上都有function號),d表示設備號 |
enp2s1234123 | 以太網 | enp<bus>s<slot>[f<function>][d<dev_id>] | 用于外接PCI設備命名,p表示pci總線id,s表示slot,f表示function號(多功能pci設備上都有function號),d表示設備號 |
enp2s1234123 | 以太網 | enp<bus>s<slot>[f<function>][u<port>][..][c<config>][i<interface>] | 用于外接usb設備 |
enx78e7d1ea46da | 以太網 | enx<MAC> | 網卡mac地址命名只是一種可供用戶選擇的方式,系統默認不使用這種方式 |
eth0 | 以太網 | eth<id> | 傳統的命名方案,在其他方法均失敗后使用,需要指定net.ifnames=0 |
補充說明:
en代表以太網,
w1代表WLAN,
ww代表WWAN;
要使用上述命名方案,系統必須已安裝biosdevname包及啟動biosdevname(啟動時內核參數需要添加biosdevname=1)
要使用傳統命名法,可以通過編輯/etc/default/grub文件,GRUB_CMDLINE_LINUX的值追加上net.ifnames=0;然后使用grub2-mkconfig -o /etc/grub2.cfg重新生成grub2配置;重啟系統即可
網卡設備的重命名過程:
-
按/usr/lib/udev/rules.d/60-net.rules文件中的規則查看所有/etc/sysconfig/network-scripts/ifcfg-xxx文件,如果發現包含HWADDR的值與接口的mac地址匹配,則將該接口重命名為ifcfg-xxx文件中DEVICE指定的名稱;
-
如果上一步沒有重命名成功,但已安裝biosdevname且kernel啟動參數沒有設置為biosdevname=0;/usr/lib/udev/rules.d/71-biosdevname.rules中規則會讓biosdevname根據其命名規則重命名該網絡接口;
-
/lib/udev/rules.d/75-net-description.rules中的規則讓udev通過檢測網卡設備來填充udev屬性,如:ID_NET_NAME_ONBOARD,ID_NET_NAME_SLOT,ID_NET_NAME_PATH,ID_NET_NAME_MAC。但有些設備的屬性可能會未定義;
-
/usr/lib/udev/rules.d/80-net-name-slot.rules中將按照此屬性優先級順序:ID_NET_NAME_ONBOARD、ID_NET_NAME_SLOT、ID_NET_NAME_PATH來重命名步驟1,2中沒有被重命名且kernel啟動參數沒有設置net.ifnames=0的網卡設備;如果所有屬性都沒有設置,網卡將不被重命名。
二、CentOS7的基礎網絡管理命令
centos7使用NetworkManager守護進程來管理網絡,常用的管理命令如下:
-
nmtui 文本用戶接口
-
nmcli 命令行接口
-
control-center GNOME下的圖形接口
-
nm-connection-editor GTK+ 3圖形接口
2.1 NetworkManager服務
安裝 yum install NetworkManager 啟動服務 systemctl start NetworkManager 查看服務狀態 systemctl status NetworkManager 開機啟動 systemctl enable NetworkManager
2.2 nmtui文本交互式工具
安裝 yum install NetworkManager-tui 使用 nmtui
直接編輯指定網卡 nmtui edit eno33554960 激活(up)指定網卡 nmtui connect eno33554960
2.3 nmcli命令行接口工具
無論是通過編輯修改ifcfg配置文件或使用nmcli工具修改網絡接口屬性,都要使用如下命令通知NetworkManager才會生效
1) 通過編輯ifcfg修改:
# 重讀/etc/sysconfig/network-scripts下的所有ifcfg文件 nmcli connection reload # 重讀指定的ifcfg文件 nmcli con load /etc/sysconfig/network-scripts/ifcfg-eno16777736
2) 通過nmcli工具修改:
# 重新關聯網絡接口 nmcli dev disconnect eno16777736 ; nmcli con up eno16777736
nmcli的語法說明
命令格式: nmcli OPTIONS OBJECT { COMMAND | help }
[root@centos7-template ~]# nmcli help Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }OPTIONS 包含如下選項: -t[erse] 不輸出頭部標題信息,一般用于腳本執行 -p[retty] 更加友好的輸出 -m[ode] tabular|multiline 指定輸出的模式,包括列表輸出和多行輸出 -f[ields] <field1,field2,...>|all|common 僅輸出指定的字段內容 -e[scape] yes|no 當value中出現列分割符時轉義 -n[ocheck] don't check nmcli and NetworkManager versions -a[sk] ask for missing parameters -w[ait] <seconds> set timeout waiting for finishing operations -v[ersion] show program version -h[elp] print this help OBJECT 包含如下: g[eneral] NetworkManager的通用狀態和操作 n[etworking] 網絡控制相關 r[adio] NetworkManager管理射頻卡配置 c[onnection] NetworkManager的連接管理 d[evice] 設備管理 a[gent] NetworkManager secret agent or polkit agent
NetworkManager整體狀態顯示
[root@centos7-template ~]# nmcli gen status 狀態 CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN 連接的 全部 已啟用 已啟用 已啟用 已啟用
顯示所有連接或僅活動的連接
[root@centos7-template ~]# nmcli connection show 名稱 UUID 類型 設備 有線連接 1 8be86794-a88a-4995-983c-6a7470586748 802-3-ethernet -- eno16777736 13756690-ac77-b776-4fc1-f5535cee6f16 802-3-ethernet eno16777736 test-lab be5dda98-df56-4466-a7b1-73047f0bbb3d 802-3-ethernet eno33554960 [root@centos7-template ~]# nmcli connection show -a 名稱 UUID 類型 設備 eno16777736 13756690-ac77-b776-4fc1-f5535cee6f16 802-3-ethernet eno16777736 test-lab be5dda98-df56-4466-a7b1-73047f0bbb3d 802-3-ethernet eno33554960
顯示所有設備的狀態
[root@centos7-template ~]# nmcli dev status 設備 類型 狀態 CONNECTION eno16777736 ethernet 連接的 eno16777736 eno33554960 ethernet 連接的 test-lab eno50332216 ethernet 已斷開 -- lo loopback 未管理 --
顯示指定設備的所有連接屬性
[root@centos7-template ~]# nmcli con show test-lab connection.id: test-lab connection.uuid: be5dda98-df56-4466-a7b1-73047f0bbb3d connection.interface-name: eno33554960 connection.type: 802-3-ethernet connection.autoconnect: yes connection.autoconnect-priority: 0 connection.timestamp: 1465380794 connection.read-only: no connection.permissions: connection.zone: -- connection.master: -- connection.slave-type: -- connection.auto connect-slaves: -1 (default) connection.secondaries: connection.gateway-ping-timeout: 0 connection.metered: 未知 802-3-ethernet.port: -- 802-3-ethernet.speed: 0 802-3-ethernet.duplex: -- 802-3-ethernet.auto-negotiate: yes 802-3-ethernet.mac-address: -- 802-3-ethernet.cloned-mac-address: -- 802-3-ethernet.mac-address-blacklist: 802-3-ethernet.mtu: 自動 802-3-ethernet.s390-subchannels: 802-3-ethernet.s390-nettype: -- 802-3-ethernet.s390-options: 802-3-ethernet.wake-on-lan: 1 (default) 802-3-ethernet.wake-on-lan-password: -- ipv4.method: manual ipv4.dns: ipv4.dns-search: ipv4.addresses: 10.10.10.10/24 ipv4.gateway: 10.10.10.254 ipv4.routes: ipv4.route-metric: -1 ipv4.ignore-auto-routes: no ipv4.ignore-auto-dns: no ipv4.dhcp-client-id: -- ipv4.dhcp-send-hostname: yes ipv4.dhcp-hostname: -- ipv4.never-default: no ipv4.may-fail: yes ipv6.method: auto ipv6.dns: ipv6.dns-search: ipv6.addresses: ipv6.gateway: -- ipv6.routes: ipv6.route-metric: -1 ipv6.ignore-auto-routes: no ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.ip6-privacy: -1 (未知) ipv6.dhcp-send-hostname: yes ipv6.dhcp-hostname: -- GENERAL.名稱: test-lab GENERAL.UUID: be5dda98-df56-4466-a7b1-73047f0bbb3d GENERAL.設備: eno33554960 GENERAL.狀態: 已激活 GENERAL.默認: 否 GENERAL.DEFAULT6: 否 GENERAL.VPN: 否 GENERAL.ZONE: -- GENERAL.DBUS-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/Settings/0 GENERAL.SPEC 對象: / GENERAL.MASTER-PATH: -- IP4.地址[1]: 10.10.10.10/24 IP4.網關: 10.10.10.254 IP6.地址[1]: fe80::20c:29ff:fe6f:b254/64 IP6.網關:
添加動態的以太網連接(DHCP)
[root@centos7-template ~]# nmcli dev status 設備 類型 狀態 CONNECTION eno16777736 ethernet 連接的 eno16777736 eno33554960 ethernet 已斷開 -- eno50332216 ethernet 已斷開 -- lo loopback 未管理 -- [root@centos7-template ~]# nmcli con add type ethernet con-name test1 ifname eno33554960 成功添加的連接 'test1'(5eb90d46-4ea7-48f3-af6b-967b8156dca7)。 #激活連接 [root@centos7-template ~]# nmcli con up id test1
添加靜態的以太網連接
[root@centos7-template ~]# nmcli con add type ethernet con-name test2 ifname eno50332216 ip4 1.1.1.1/24 gw4 1.1.1.254 成功添加的連接 'test2'(5fa56342-03b5-442c-9794-af466c28bb1a)。 [root@centos7-template ~]# nmcli con up id test2 成功激活的連接(D-Bus 激活路徑:/org/freedesktop/NetworkManager/ActiveConnection/137)
設置dns
[root@centos7-template ~]# nmcli con mod test2 ipv4.dns "114.114.114.114 8.8.8.8" [root@centos7-template ~]# nmcli con mod test2 +ipv4.dns "8.8.4.4" [root@centos7-template ~]# nmcli con show test2 | grep dns ipv4.dns: 114.114.114.114,8.8.8.8,8.8.4.4 [root@centos7-template ~]# nmcli con mod test2 -ipv4.dns "8.8.4.4" [root@centos7-template ~]# nmcli con show test2 | grep 'ipv4.dns' ipv4.dns: 114.114.114.114,8.8.8.8 [root@centos7-template ~]# nmcli con up id test2 成功激活的連接(D-Bus 激活路徑:/org/freedesktop/NetworkManager/ActiveConnection/137)
設置靜態路由
[root@centos7-template network-scripts]# nmcli con mod test2 ipv4.routes '3.3.3.0/24 1.1.1.4,4.4.4.0/24 1.1.1.4' [root@centos7-template network-scripts]# nmcli con up id test2 成功激活的連接(D-Bus 激活路徑:/org/freedesktop/NetworkManager/ActiveConnection/28) [root@centos7-template network-scripts]# ip route list default via 192.168.124.2 dev eno16777736 proto static metric 100 1.1.1.4 dev eno50332216 proto kernel scope link src 1.1.1.4 metric 100 3.3.3.0/24 via 1.1.1.4 dev eno50332216 proto static metric 100 4.4.4.0/24 via 1.1.1.4 dev eno50332216 proto static metric 100 192.168.124.0/24 dev eno16777736 proto kernel scope link src 192.168.124.70 metric 100
清空指定連接下的靜態路由
#方法一:[root@centos7-template network-scripts]# nmcli con mod test2 ipv4.routes '' [root@centos7-template network-scripts]# nmcli con up id test2 成功激活的連接(D-Bus 激活路徑:/org/freedesktop/NetworkManager/ActiveConnection/33) #方法二: [root@centos7-template network-scripts]# nmcli con edit test2 nmcli> remove ipv4.routes nmcli> print ipv4.routes ipv4.routes: nmcli> save Connection 'test2' (ffcbd3c0-f384-0a48-59ec-961241cbe948) successfully updated. nmcli> activate 激活監控連接(按任意間繼續)成功激活的連接(D-Bus 激活路徑:/org/freedesktop/NetworkManager/ActiveConnection/23)
補充說明:
使用nmcli connection的所有增刪改操作都會同步到/etc/sysconfig/network-scripts/ifcfg-<ID>中
關于nmcli更多的使用例子,請參考: man nmcli-examples
2.5 直接編輯ifcfg-xxx文件
ip地址設置
[root@centos7-template network-scripts]# vim ifcfg-test2 TYPE=Ethernet BOOTPROTO=none DEFROUTE=yes NAME=test2 DEVICE=eno50332216 ONBOOT=yes IPADDR=1.1.1.3 PREFIX=32 GATEWAY=1.1.1.254 DNS1=114.114.114.114 [root@centos7-template network-scripts]# systemctl restart network
路由設置
#方法一 [root@centos7-template network-scripts]# vim /etc/sysconfig/network-scripts/route-test2 ADDRESS0=2.2.2.0 NETMASK0=255.255.255.0 GATEWAY0=1.1.1.4 [root@centos7-template network-scripts]# systemctl restart network #方法二 [root@centos7-template network-scripts]# vim route-test2 3.3.3.0/24 via 1.1.1.4 [root@centos7-template network-scripts]# systemctl restart network
2.6 使用ip命令
添加IP地址
[root@centos7-template ~]# ip addr add 1.1.1.1/24 dev eno33554960 [root@centos7-template ~]# ip addr add 2.2.2.2/24 dev eno33554960 [root@centos7-template ~]# ip addr add 3.3.3.3/24 label eno33554960:3 dev eno33554960 [root@centos7-template ~]# ip addr show
清除接口上的所有IP
[root@centos7-template ~]# ip addr flush eno33554960 [root@centos7-template ~]# ip addr show eno335549603
僅刪除接口上指定的ip,可以使用ip addr del 3.3.3.3/24 dev eno33554960
添加/刪除靜態路由
[root@centos7-template ~]# ip route add default via 1.1.1.1 dev eno33554960 [root@centos7-template ~]# ip route del default dev eno33554960 [root@centos7-template ~]# ip route add 2.2.2.0/24 via 1.1.1.1 dev eno33554960 [root@centos7-template ~]# ip route list [root@centos7-template ~]# ip route del 2.2.2.0/24 [root@centos7-template ~]# ip route list
三、主機名的修改
3.1 直接修改/etc/hostname
[root@centos7-template ~]# echo 'new-hostname' > /etc/hostname #修改后需要通知hostnamed [root@centos7-template ~]# systemctl restart systemd-hostnamed
3.2 通過hostnamectl 修改
[root@new-hostname ~]# hostnamectl set-hostname centos7-template [root@new-hostname ~]# hostnamectl status Static hostname: centos7-template Icon name: computer-vm Chassis: vm Machine ID: 6c8fe0fba4bc4ea0a1530d52d0ac9d75 Boot ID: 4a14b25f14eb4174aee7b21df771870b Virtualization: vmware Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-327.el7.x86_64 Architecture: x86-64
3.3 通過nmcli修改hostname
[root@centos7-template ~]# nmcli general hostname centos7-template [root@centos7-template ~]# nmcli general hostname new-hostname [root@centos7-template ~]# systemctl restart systemd-hostnamed [root@centos7-template ~]# hostname new-hostname
四、多網卡綁定
4.1 使用nmtui
步驟如下:
4.2 使用nmcli
1) 創建bond0并設置ip
[root@centos7-template ~]# nmcli con add type bond con-name bond0 ifname bond0 mode active-backup ip4 1.1.1.1/24 成功添加的連接 'bond0'(9812336b-1c48-4b13-a172-b5f996f797c8)。
2) 添加從接口
[root@centos7-template ~]# nmcli con add type bond-slave con-name test1 ifname eno33554960 master bond0 成功添加的連接 'test1'(6a4f670a-1c77-408a-9808-c8ca8c45f5bb)。 [root@centos7-template ~]# nmcli con add type bond-slave con-name test2 ifname eno50332216 master bond0 成功添加的連接 'test2'(0003b65b-7a1a-497a-9531-d4afc684a025)。
備注:
需要確保bonding模塊已被kernel加載??梢允褂胠smod | grep bonding檢查,modprobe –first-time bonding載入
五、橋接多網卡
[root@centos7-template ~]# nmcli con add type bridge con-name br0 ifname br0 ip4 1.1.1.1/24 成功添加的連接 'br0'(2ea2906e-cb99-4fad-8ed6-4d1c038ad0b2)。 [root@centos7-template ~]# nmcli con add type bridge-slave con-name test1 ifname eno33554960 master br0 成功添加的連接 'test1'(0f4e9540-eda8-4259-a135-dd0fb6a7c06b)。 [root@centos7-template ~]# nmcli con add type bridge-slave con-name test2 ifname eno50332216 master br0 成功添加的連接 'test2'(385d73b4-5378-4b75-aa80-3b1c8f5c8adc)。 [root@centos7-template ~]# yum install bridge-utils [root@centos7-template ~]# brctl show bridge name bridge id STP enabled interfaces br0 8000.000c296fb254 yes eno33554960 eno50332216
備注:
需要確保bridge模塊已被kernel加載??梢允褂胠smod | grep bridge檢查,modprobe –first-time bridge載入
六、VLAN接口
[root@centos7-template ~]# nmcli con add type vlan con-name vlan20 ifname vlan20 dev br0 id 20 ip4 2.2.2.2/24 成功添加的連接 'vlan20'(e40abce1-5be5-4bda-b766-c6eb01d1198d)。
備注:
需要確保8021q模塊已被kernel加載??梢允褂胠smod | grep 8021q檢查,modprobe –first-time 8021q載入
其中id 20為vlan tagid
原創文章,作者:gateray,如若轉載,請注明出處:http://www.www58058.com/18021