Centos7 NAT網路連線方式以及NetworkManger進行網路連線管理
自結:NetworkManager管理指定配置檔案配置的網路介面,根據介面配置定義網路環境。/etc/sysconfig/network-scripts/ifcfg-ens88 中定義nm_controlled=yes那麼此配置檔案就被networkmanager管理了。
問題產生背景
除錯虛擬機器的網路問題(CentOS 7系統),習慣性直接改/etc/sysconfig/network-scripts/ifcfg-xxx配置檔案,但是不知道為什麼重啟network後靜態ip沒有生效。然後百度了一下,CentOS 7使用NetworkManager來管理網路配置,就順便接觸了下網路管理命令列工具NetworkManager command line tool,也叫nmcli。
NAT模式
1、同樣,先設定虛擬機器的網路介面卡為NAT模式
2、修改VMware的“虛擬網路編輯器”:點編輯 --> 虛擬網路編輯器:開啟之後首先點選NAT模式,然後去掉下面DHCP的勾,然後點選NAT設定:
NAT預設設定了110網段,這個可以修改,修改的話要統一修改不要落下。沒有特殊需求就不要修改了。開啟NAT設定面板之後,記住下面紅框中這個IP:
3、設定完成後,啟動虛擬機器,修改第一個配置檔案,這次要按照NAT設定中的IP進行配置:
[
[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 按如下改動: DEVICE=eth0 BOOTPROTO=static HWADDR=00:0C:29:17:01:FC ONBOOT=yes TYPE=Ethernet NM_CONTROLLED=no 表示該介面將通過該配置檔案進行設定,而不是通過網路管理器NerworkManager進行管理。 IPADDR=192.168.110.128 #網段限制在110所以IP地址變了 NETMASK=255.255.255.0 GATEWAY=192.168.110.2 #按照NAT設定中的閘道器地址設定 BROADCAST=192.168.110.255 DNS1=192.168.110.2 DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no
引數詳解:
1. 配置引數說明
注:這些引數值不區分大小寫,不區分單引號和雙引號,甚至可以不用引號。
TYPE:配置檔案介面型別。在/etc/sysconfig/network-scripts/目錄有多種網路配置檔案,有
Ethernet、IPsec等型別,網路介面型別為Ethernet。
DEVICE:網路介面名稱
BOOTPROTO:網絡卡獲取ip地址方式:none dhcp static,dhcp表示動態分配ip;none或者static則為靜態固定ip
ONBOOT:系統啟動時是否啟用
yes:系統啟動時啟用該網路介面
no:系統啟動時不啟用該網路介面
UUID含義是通用唯一識別碼 (Universally Unique Identifier),在此可以忽略
IPADDR:IP地址
NETMASK:子網掩碼
GATEWAY:閘道器地址
BROADCAST:廣播地址
HWADDR/MACADDR:MAC地址。只需設定其中一個,同時設定時不能相互衝突。
PEERDNS:是否指定DNS。如果使用DHCP協議,預設為yes。
yes:如果DNS設定,修改/etc/resolv.conf中的DNS
no:不修改/etc/resolv.conf中的DNS
DNS{1, 2}:DNS地址。當PEERDNS為yes時會被寫入/etc/resolv.conf中。DNS可以設定多個,在DNS後面加數字依次排序,
NM_CONTROLLED:是否由Network Manager控制該網路介面。修改儲存後立即生效,無需重啟。被其坑過幾次,建議一般設為no。
yes:由Network Manager控制
no:不由Network Manager控制
USERCTL:使用者許可權控制
yes:非root使用者允許控制該網路介面
no:非root使用者不執行控制該網路介面
IPV6INIT:是否執行IPv6
yes:支援IPv6
no:不支援IPv6
IPV6ADDR:IPv6地址/字首長度
4、修改第二個配置檔案:
[[email protected] ~]# vim /etc/sysconfig/network
按如下改動:
NETWORKING=yes 配置網絡卡是否啟動
NETWORKING_IPV6=no
HOSTNAME=localhost.localdomain
GATEWAY=192.168.110.2 這個配置成虛擬機器的閘道器
5、修改完畢之後重啟網路服務:
[[email protected] ~]# service network restart
Centos 7 網路配置檔案
一. /etc/sysconfig/network
全域性設定,預設裡面啥也沒有,可以配置主機名、全域性預設閘道器以及網絡卡是否啟動。如果連線配置檔案ifcfg-xxx也配置了閘道器,會覆蓋全域性預設閘道器。如果沒有配置,那麼使用全域性預設閘道器
修改主機名:
vi /etc/sysconfig/network 修改HOSTNAME(永久改)
hostname 主機名 命令修改(臨時改)
二. resolv.conf 檔案說明
- resolv.conf是resolver類庫使用的配置檔案,每當一個程式需要通過域名來訪問internet上面的其它主機時,需要利用該類庫將域名轉換成對應的IP,然後才可進行訪問
- 修改vi /etc/resolv.conf 是臨時更改DNS,網路重啟後就被清空了或者覆蓋。會根據配置檔案中配置的DNS1和閘道器後自動修改這個檔案。
- 此檔案可用來設定 DNS 使用者端要求名稱解析時,所定義的各項內容。我們分別來看一個完整的resolv.conf的檔案:
- 修改DNS。就是編輯 etc/resolv檔案或者網絡卡配置檔案,前者是臨時更改,後者是永久更改,永久更改後需要重啟網絡卡生效,臨時更改不用。
domain twnic.com.tw
nameserver 192.168.10.1
nameserver 192.168.2.5
search twnic.com.tw twnic.net.tw
- “domain”指定本地的網域名稱,如果查詢時的名稱沒有包含小數點,則會自動補上此處的網域名稱做為域名的結尾,再送給DNS伺服器。
- “nameserver”指定使用者端要求進行名稱解析的 nameserver IP位址,在此可指定多部DNS伺服器,則使用者端將會依序提出查詢要求。
- “search”這個選項為非必要選項,而功能在於若使用者指定主機名稱查詢時,所需要搜尋的網域名稱。例如,當我們設 “search twnic.com.tw”時,當DNS伺服器在做名稱解析過程中,無法對輸入的名稱,例如pc1,找出相對應的IP時,則DNS會利用search的設定值加上需查詢的名稱,即pc1.twnic.com.tw來進行解析,解析失敗時則會嘗試pc1.twnic.net.tw。
- 需要注意的是當我們想嘗試多種在沒有包含小數點,於字尾補上所需要搜尋的網域名稱時,我們會在"search"中指定幾種組合給DNS伺服器,而不能在"domain"中指定。因為“domain”是指定本地的網域名稱,而搜尋時也以“domain”為優先嚐試,如果失敗之後才會嘗試"search"中的組合。
三、其他配置檔案
/etc/sysconfig/network-scripts/ 連線配置資訊 ifcfg 檔案,配置ip地址、閘道器、DNS
/etc/NetworkManager/system-connections/ VPN、移動寬頻、PPPoE連線
NetworkManager解釋
一、NetworkManager啟用及其作用
啟用NetworkManager管理指定網路介面,只需要在配置檔案 /etc/sysconfig/network-scripts/ifcfg-ethX中加入如下配
NM_CONTROLLED=yes
NetworkManager服務管理網路方便在哪?
很重要的一點是:一個裝置可以對應多個配置檔案,但是同一時間只能有一個配置檔案生效,這對於頻率切換網路環境是非常方便的,不用再跑那個目錄下去改配置 檔案。比如:原先網絡卡接的是10.1.0.0/24網路,有時候為了測試,臨時改到192.168.1.0/24網路去,測試完後又改回來 10.1.0.0/24,在NetworkManager的管理裡面,只要把這兩個網路環境下的配置寫好,以後就只要一條命令就可以完成切換了!這就是 NetworkManager帶來的便捷之處!
二、nmcli和其他網路設定
在CentOS7中預設使用NetworkManager守護程序來監控和管理網路設定。nmcli是NetworkManager的命令列工具,會自動把nmcli所做的配置寫到/etc/sysconfig/network-scripts/目錄下面。
常用命令
檢視網路介面資訊
# 簡單資訊
nmcli device status
# 詳細的介面資訊
nmcli device show
# 介面的詳細資訊
nmcli device show interface-name
檢視連線(connection)的資訊
# 簡單資訊
nmcli connection show
# 詳細的連線資訊
nmcli connection show
# 某個連線的詳細資訊
nmcli connection show connection-name
啟動和停止介面
nmcli connection down connection-name
nmcli connection up connection-name
nmcli device disconnect interface-name
nmcli device connect interface-name
建議使用 nmcli dev disconnect interface-name 命令,而不是 nmcli con down connection-name 命令,因為連線斷開可將該介面放到“手動”模式,這樣做使用者讓 NetworkManager 啟動某個連線前,或發生外部事件(比如載波變化、休眠或睡眠)前,不會啟動任何自動連線。
建立連線
nmcli connection add type ethernet con-name connection-name ifname interface-name
nmcli connection add type ethernet con-name connection-name ifname interface-name ip4 address gw4 address
## e.g. 建立一個基於eth1介面的連線
# 建立動態連線,即BOOTPROTO預設為DHCP
[[email protected] ~]# nmcli c add type eth con-name dynamic-eth1 ifname eth1
Connection 'dynamic-eth1' (9c0ad8a9-21f6-40b5-9313-e5c7e4b356f1) successfully added.
# 建立靜態連線
[[email protected] ~]# nmcli connection add type eth con-name static-eth1 ifname eth1 ip4 172.16.60.10/24
# nmcli connection add type eth con-name static-eth1 ifname eth1 ip4 172.16.60.10/24 gw4 192.168.60.1
Connection 'static-eth1' (0640bf7f-9490-44a8-be96-2e710fb650e6) successfully added.
建立連線後,NetworkManager 自動將 connection.autoconnect 設定為 yes。還會將設定儲存到 /etc/sysconfig/network-scripts/ connection-name 檔案中,且自動將 ONBOOT 引數設定為 yes。
啟用連線
nmcli connection up connection-name
## e.g. 啟用eth1介面的static-eth1連線
[[email protected] ~]# nmcli c up static-eth1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
nmcli命令修改所對應的檔案條目
nmcli con mod ifcfg-* 檔案
ipv4.method manual BOOTPROTO=none
ipv4.method auto BOOTPROTO=dhcp
connection.id eth0 NAME=eth0
(ipv4.addresses IPADDR0=192.0.2.1
“192.0.2.1/24 PREFIX0=24
192.0.2.254”) GATEWAY0=192.0.2.254
ipv4.dns 8.8.8.8 DNS0=8.8.8.8
pv4.dns-search example.com DOMAIN=example.com
pv4.ignore-auto-dns true PEERDNS=no
connection.autoconnect yes ONBOOT=yes
connection.interface-name eth0 DEVICE=eth0
802-3-ethernet.mac-address... HWADDR=...
[[email protected] ~]# nmcli help
Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }
OPTIONS
-t[erse] terse output
-p[retty] pretty output
-m[ode] tabular|multiline output mode
-f[ields] <field1,field2,...>|all|common specify fields to output
-e[scape] yes|no escape columns separators in values
-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's general status and operations
n[etworking] overall networking control
r[adio] NetworkManager radio switches
c[onnection] NetworkManager's connections
d[evice] devices managed by NetworkManager
OBJECT和COMMAND可以用全稱也可以用簡稱,最少可以只用一個字母,建議用頭三個字母。OBJECT裡面我們平時用的最多的就是connection和device,這裡需要簡單區分一下connection和device。
- device叫網路介面,是物理裝置
- connection是連線,偏重於邏輯設定
- 多個connection可以應用到同一個device,但同一時間只能啟用其中一個connection。
- 這樣的好處是針對一個網路介面,我們可以設定多個網路連線,比如靜態IP和動態IP,再根據需要up相應的connection。
新新增的網絡卡NetworkManager自動識別。比如新新增網絡卡enp0s8
[[email protected] ~]# nmcli con show
NAME UUID TYPE DEVICE
Wired connection 1 0c451785-b098-4c5c-994d-9107171b439d 802-3-ethernet enp0s8
enp0s3 295e1841-0ff3-4db9-8800-4e25fc2944da 802-3-ethernet enp0s3
“Wired connection 1”是新增的網路連線,對應的網路介面叫enp0s8;
“enp0s3”是最初的網路連線,預設與網路介面同名。
看看裝置:
[[email protected] ~]# nmcli dev show enp0s3
GENERAL.DEVICE: enp0s3
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 08:00:27:15:35:D2
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: eth0
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/4
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: ip = 192.168.150.110/24, gw = 192.168.150.254
IP4.DNS[1]: 192.168.150.254
IP6.ADDRESS[1]: ip = fe80::a00:27ff:fe15:35d2/64, gw = ::
[[email protected] ~]#
[[email protected] ~]# nmcli dev show enp0s8
GENERAL.DEVICE: enp0s8
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 08:00:27:98:D1:B7
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: eth1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/3
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: ip = 10.0.3.15/24, gw = 10.0.3.2
IP4.DNS[1]: 10.0.3.2
IP6.ADDRESS[1]: ip = fe80::a00:27ff:fe98:d1b7/64, gw = ::
[[email protected] ~]#
需要注意的是,enp0s3裝置對應的連線名改為eth0,但對應的ifcfg檔案並沒有改名,我們改改試試,改之前先備份原配置檔案到其他目錄(注意,不能備份到network-scripts目錄!)。
[[email protected] network-scripts]# cat ifcfg-enp0s3
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eth0
UUID=295e1841-0ff3-4db9-8800-4e25fc2944da
ONBOOT=yes
IPADDR0=192.168.150.110
PREFIX0=24
GATEWAY0=192.168.150.254
DNS1=192.168.150.254
HWADDR=08:00:27:15:35:D2
[[email protected] network-scripts]#
[[email protected] network-scripts]# cp ifcfg-enp0s3 /root/
[[email protected] network-scripts]# mv ifcfg-enp0s3 ifcfg-eth0
[[email protected] network-scripts]#
[[email protected] network-scripts]# systemctl restart network
[[email protected] network-scripts]#
沒有問題,配置檔案改名成功,強迫症又一次勝利了,耶!
我們還可以看到,ifcfg-eth0裡面沒有引數指明裝置enp0s3,唯一與裝置enp0s3相對應的是MAC地址(HWADDR 08:00:27:15:35:D2)。
現在試試增加一個針對新網路介面enp0s8的連線,現有連線是 eth1:
[[email protected] network-scripts]# cat ifcfg-eth1
HWADDR=08:00:27:98:D1:B7
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eth1
UUID=0c451785-b098-4c5c-994d-9107171b439d
ONBOOT=yes
嗯,是自動獲得IP的。
我們新建一個連線eth1-1,分配固定IP。
[[email protected] ~]# nmcli con show
NAME UUID TYPE DEVICE
eth1-1 ef5c3fbc-f07a-4d6e-9f4d-83f239ffc2e9 802-3-ethernet --
eth1 0c451785-b098-4c5c-994d-9107171b439d 802-3-ethernet enp0s8
eth0 295e1841-0ff3-4db9-8800-4e25fc2944da 802-3-ethernet enp0s3
只是增加了一個連線,其他的沒有變化。
我們啟動新連線 eth1-1
[[email protected] ~]# nmcli con up eth1-1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
[[email protected] ~]#
[[email protected] ~]# nmcli con show
NAME UUID TYPE DEVICE
eth1-1 ef5c3fbc-f07a-4d6e-9f4d-83f239ffc2e9 802-3-ethernet enp0s8
eth1 0c451785-b098-4c5c-994d-9107171b439d 802-3-ethernet --
eth0 295e1841-0ff3-4db9-8800-4e25fc2944da 802-3-ethernet enp0s3
[[email protected] ~]#
[[email protected] ~]# nmcli -t -f IP4.ADDRESS dev show enp0s8
IP4.ADDRESS[1]:ip = 10.0.3.110/24, gw = 10.0.3.2
“nmcli -t -f IP4.ADDRESS dev show enp0s8” 是以指令碼友好的方式顯示網路介面資訊。
現在可以很明顯的看到,將連線eth1-1 up了之後,eth1-1佔據了原來由eth1佔據的DEVICE enp0s8,並且IP地址已經是指定的10.0.3.110/24 了。
[[email protected] network-scripts]# cat ifcfg-eth1-1
TYPE=Ethernet
BOOTPROTO=none
IPADDR0=10.0.3.110
PREFIX0=24
GATEWAY0=10.0.3.2
DNS1=10.0.3.2
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME=eth1-1
UUID=ef5c3fbc-f07a-4d6e-9f4d-83f239ffc2e9
DEVICE=enp0s8
ONBOOT=yes
ifcfg-eth1-1 檔案裡沒有HWADDR引數,但是多了一個DEVICE引數,等於enp0s8,你可以對比一下 ifcfg-eth1 看看區別在哪。
連線的配置檔案 ifcfg-*,可以用 DEVICE 指定裝置名,也可以用HWADDR指定裝置的MAC地址,最終結果都一樣的指向某個裝置(網路介面)。我們再試試用nmcli增加連線:
[[email protected] ~]# nmcli con add con-name eth1-2 ifname enp0s8 type ethernet ip4 10.0.3.120/24 gw4 10.0.3.2
Connection 'eth1-2' (468815f5-ce97-43bd-904a-3078e2e59fec) successfully added.
[[email protected] ~]#
[[email protected] ~]# nmcli con show
NAME UUID TYPE DEVICE
eth1-1 ef5c3fbc-f07a-4d6e-9f4d-83f239ffc2e9 802-3-ethernet enp0s8
eth1 0c451785-b098-4c5c-994d-9107171b439d 802-3-ethernet --
eth0 295e1841-0ff3-4db9-8800-4e25fc2944da 802-3-ethernet enp0s3
eth1-2 468815f5-ce97-43bd-904a-3078e2e59fec 802-3-ethernet --
[[email protected] ~]#
[[email protected] ~]# nmcli con up eth1-2
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
[[email protected] ~]#
[[email protected] ~]# nmcli con show
NAME UUID TYPE DEVICE
eth1-1 ef5c3fbc-f07a-4d6e-9f4d-83f239ffc2e9 802-3-ethernet --
eth1 0c451785-b098-4c5c-994d-9107171b439d 802-3-ethernet --
eth0 295e1841-0ff3-4db9-8800-4e25fc2944da 802-3-ethernet enp0s3
eth1-2 468815f5-ce97-43bd-904a-3078e2e59fec 802-3-ethernet enp0s8
[[email protected] ~]#
[[email protected] ~]# nmcli -t -f IP4.ADDRESS dev show enp0s8
IP4.ADDRESS[1]:ip = 10.0.3.120/24, gw = 10.0.3.2
[[email protected] ~]#
再看看新的ifcfg檔案:
[[email protected] network-scripts]# cat ifcfg-eth1-2
TYPE=Ethernet
BOOTPROTO=none
IPADDR0=10.0.3.120
PREFIX0=24
GATEWAY0=10.0.3.2
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eth1-2
UUID=468815f5-ce97-43bd-904a-3078e2e59fec
DEVICE=enp0s8
ONBOOT=yes
[[email protected] network-scripts]#
現在up的連線是eth1-2,網路介面enp0s8的IP是10.0.3.120
如果重新up連線eth1-1,nmcli con up eth1-1,網路介面enp0s8的IP變成了10.0.3.110
如果重新up連線eth1, nmcli con up eth1, 網路介面enp0s8的IP就回到原來自動獲得的值10.0.3.15
所以,對一個網路介面設定不同的連線,可以快速的切換不同的網路配置,這個真的滿厲害的。如果希望系統重啟後僅up某個特定連線,那麼可以把其他連線配置檔案的ONBOOT=no,ONBOOT=no的連線也可以隨時up。
常見錯誤
- unkonw the name or the server這種提示的話一般都是DNS配置的有問題。
- destination not unreachable,這種錯誤的話一般都是你的ifcfg-eth0裡面的GATEWAY或者IPDDR配置的不對。
- 虛擬機器ip衝突。因為Vamware NAT方式主機網絡卡採用的Vmware network adapter net8,所以這個net8的ip也要和你虛擬機器的IPADDR、GATWAY都不一樣,也是在192.168.137.1~192.168.137.255中間取值。此時如果衝突,可以檢視宿主機vmnet8IP地址是否和虛擬機器相同
- 在開啟網路時,有錯誤提示:Restarting network (via systemctl): Job for network.service failed. See 'systemctl status network.service' and 'journalctl -xn' for details.
1.根據提示執行: systemctl status network.service
提示錯誤日誌:15:30:10 localhost.localdomain systemd[1]: Failed to start LSB: Bring up/down networking.
2.用 ip addr 命令檢視MAC地址( 此行 link/ether 00:5c:33:2e:dd:10) 與檔案 /etc/sysconfig/network-scripts/ifcfg-* 中顯示的(此行 HWADDR=00:e3:21:3d:5d:ee) 時行對比時發現不一致。
3.註釋掉 /etc/sysconfig/netwrok-scripts/ifcfg-* 中 HWADDR= * :*:*:*:*:* 此行
4. 在下面更改為 HWADDR=00:5C:33:2E:DD:10 (也就是用IP ADDR 命令所查到的MAC)
ip addr(圖中標記的就是ip地址)命令輸出中沒有inet選項
(1) 如果上邊一欄中沒有inet,那麼輸入:systemctl status NetworkManager.service(驗證網路管理服務狀態)
(2)檢查受網路管理器管理的網路介面:(輸入:nmcli dev status)(如果某個介面的nmcli的輸出結果是“已斷開”,說明該介面不受網路管理器管理,網路也是沒有生效的,反之,則生效了)
(3)解決步驟:
service NetworkManager stop
service Network restart
service NetworkManager start
解釋:關閉NetworkManager(service NetworkManagerstop),重啟network(service network restart),再啟動NetworkManager
NetworkManager(service NetworkManager start)因為NetworkManager會對network重啟造成影響,所以先關閉它,最後這服務不啟動也有影響,所以最後在啟動它
(4)虛擬機器網路啟用後,輸入:nmcli dev status,顯示:(說明已經連線)
知識補充:
Linux 裝置分為三類:字元裝置(如鍵盤、滑鼠等)、塊裝置(如硬碟、光碟機、軟碟機等)和網路裝置,如乙太網卡。為了遮蔽網路環境中物理網路裝置的多樣性,LINUX對所有的物理裝置進行抽象並定義了一個統一的概念,稱之為介面(Interface),介面實際是運行於Linux核心一種裝置服務程式,所有的硬體廠商按照同一規格編寫,從而提供了一個對所有型別的硬體一致化的操作集合來處理基本資料的傳送和接收。一個網路介面可以被看作是一個傳送和接收資料包(packets)的實體。核心在啟動時,通過網路驅動程式,檢索系統的韌體資訊,將網路裝置在Linux系統的中登記。這樣網路裝置在做資料包傳送和接收時,可以通過介面實現linux 利用網路裝置於外界的互動。介面可以在核心初始化時進行,也可以通過insmod命令來載入。
根據標準,每一個具體的網路介面都應該有一個名字,以在系統中能唯一標識一個網路介面。常見的網路介面名如下:
Linux 存在很多的網路管理命令,通常我們使用的是network 服務, NetworkManager 服務, ipconfig命令, ip 命令 和 netstat 命令,ss命令等。