通過 ip link add 可以創建多種類型的虛擬網路設備,在 man ip link 中可以得知有以下類型的device:
Virtual Ethernet Port Aggregator。它是HP在虛擬化支持領域對抗Cisco的VN-Tag的技術。
解決了虛擬機之間網路通信的問題,特別是位於同一個宿主機內的虛擬機之間的網路通信問題。
VN-Tag在標準的協議頭中增加了一個全新的欄位,VEPA則是通過修改網卡驅動和交換機,通過發夾彎技術回注報文。
TUN是Linux系統里的虛擬網路設備,它的原理和使用在 Kernel Doc 和 Wiki 做了比較清楚的說明。
TUN設備模擬網路層設備(network layer),處理三層報文,IP報文等,用於將報文注入到網路協議棧。
應用程序(app)可以從物理網卡上讀寫報文,經過處理後通過TUN回送,或者從TUN讀取報文處理後經物理網卡送出。
創建:
創建之後,使用 ip addr 就會看見一個名為」tun-default」的虛擬網卡
可以對tun-default設置IP:
使用open/write等文件操作函數從fd中進行讀取操作,就是在收取報文,向fd中寫入數據,就是在發送報文。
TAP是Linux系統里的虛擬網路設備,它的原理和使用在 Kernel Doc 和 Wiki 做了比較清楚的說明。
不同於TUN的是,TAP設備模擬鏈路層設備(link layer),處理二層報文,乙太網幀等。
TAP設備的創建過程和TUN類似,在ioctl設置的時候,將類型設置為IFF_TAP即可。
TAP設備與TUN設備的區別在於:
有時我們可能需要一塊物理網卡綁定多個 IP 以及多個 MAC 地址,雖然綁定多個 IP 很容易,但是這些 IP 會共享物理網卡的 MAC 地址,可能無跡蠢頌法滿足我們的設計需求,所以有了 MACVLAN 設備,其工作方式如下:
MACVLAN 會根據收到包的目的 MAC 地址判斷這個包需要交給哪個虛擬網卡。單獨使用 MACVLAN 好像毫無意義,但是配合之前介紹的 network namespace 使用,我們可以構建這樣的網路:
採摘
創建一個基於eth0的名為macv1的macvlan網卡:
macvlan支持三種模式,bridge、vepa、private,在創建的時候設置「mode XXX」:
bridge模式,macvlan網卡和物理網卡直接可以互通,類似於接入到同一個bridge。
vepa模式下,兩個macvlan網卡直接不能直接通信,必須通過外部的支持「發夾彎」交換機才能通信。
private模式下,macvlan發出的廣播包(arp等)被丟棄,即使接入了支持「發夾彎」的交換機也不能發現其它macvlan網卡,除非手動設置mac。
MACVTAP 是對 MACVLAN的改進,把 MACVLAN 與 TAP 設備的特點綜合一下,使用 MACVLAN 的方式收發數據包,但是收到的包不交給 network stack 處理,而是生成一個 /姿鄭dev/tapX 文件,交給這個文件:
由於 MACVLAN 是工作在 MAC 層的,所以 MACVTAP 也只能工檔凳作在 MAC 層,不會有 MACVTUN 這樣的設備。
ipvlan和macvlan的區別在於它在ip層進行流量分離而不是基於mac地址,同屬於一塊宿主乙太網卡的所有ipvlan虛擬網卡的mac地址都是一樣的。
[圖片上傳失敗...(image-d98b6f-1597455459947)]
veth設備是成對創建的:
創建之後,執行 ip link 就可以看到新創建的veth設備:
注意veth設備前面的ID, 58: 和 59: ,一對veth設備的ID是相差1的,並且系統內全局唯一。可以通過ID找到一個veth設備的對端。
veth設備理解
Intermediate Functional Block device,連接 ifb 中做了很詳細的介紹。
『貳』 linux中網卡文件位置
網卡,即網路介面板,又稱網路適配器或NIC (網路介面控制器),是一塊被設計用來允許計算機在計算機網路上進行通訊的計算機硬體。由於其擁有MAC地址,因此屬於OSI模型的第1層。它使得用戶可以透過電纜或無線相互連接。 每一個網卡都有一個被稱為MAC地址的獨一無二的48位串列號,它被寫在卡上的一塊ROM中。
一、環境
VirtualBox + CentOS6.5
二、問題
有時候在克隆伺服器之後配置網路時,或者在維護別人建好的伺服器時,會遇到這樣一種情況。如下圖所示:
即:在介面配置文件ifcfg-eth0中,配置的是網卡eth1的信息。
這種不一致有可能對強迫症造成一定的困擾,有時候我們更想要的是:在ifcfg-eth0文件中,配置的應該是網卡eth0的信息,而網卡eth1,則應該是在ifcfg-eth1中進行配置。
三、解決辦法
要解決上面的問題,大致有兩種方法:
1) 將介面配置文件的文件名由ifcfg-eth0修改為ifcfg-eth1;
2) 將網卡eth1的名稱修改為eth0.
方法一:
該方法實測是可行的,如下圖所示,修改完之後直接重啟網路即可。
方法二:
這種方法的直觀感覺是直接在ifcfg-eth0配置文件中將網卡名稱由eth1修改為eth0,但是這樣改的話,重啟網路會出現Device eth0 does not seem to be present即:設備 eth0 不存在的錯誤,如下圖所示,該問題的解決參考《L08-Linux解決Device eth0 does not seem to be present,delaying initialization問題》 。
所以還不能簡單粗暴的這么改,因為,正如下圖由ifconfig –a命令查詢到的,伺服器所識別的網卡依然是eth1,而不是eth0。
註:記住這里的mac地址08:00:27:74:39:02,在後面的實施步驟中可作為修改的依據,因為一台伺服器的IP可以隨意改變,但是mac地址是唯一的。
『叄』 linux的網卡配置文件
/etc/sysconfig/netowrk-scripts這個裡面用ls查看 全是網卡的配置文件
『肆』 為什麼linux下唯獨沒有網卡設備文件
你的系統是否安裝了正確的網卡驅動?是否已經啟用了網路。網卡配置文件是否正確?
如果你的系統安裝的是乙太網卡,那麼設備名稱為eth0開始,設備的配置文件保存在如下位置:
/etc/sysconfig/network-scripts/ifcfg-eth0
依此類推,第二塊網卡,第三塊網卡的設備配置文件保存在:
/etc/sysconfig/network-scripts/ifcfg-eth1
/etc/sysconfig/network-scripts/ifcfg-eth2
如果你需要一塊網卡上配置多個IP地址,那麼需要在在塊網卡上開啟虛擬網卡,即:
/etc/sysconfig/network-scripts/ifcfg-eth0:0
/etc/sysconfig/network-scripts/ifcfg-eth0:1
等等。這樣就可以配置多個IP地址了。
『伍』 Linux網卡配置文件常用配置方法
安裝完一套Linux發行版後,使用ifconfig命令會看到本機所有的網路介面,但此時往往還不能使用,還需要給這些網卡配置下才行。
比如在CentOS或者Fedora系統中,乙太網卡的配置文件一般位於
/etc/sysconfig/network-scripts目錄下,如果你有網卡eth0但是沒有ifcfg-eth0文件灶顫,那麼就新建一個ifcfg-eth0,對於eth1也是如此。有時候Linux系統的IP地址都是公司規劃好的,因此需要給網卡激辯兄配置靜態IP地址,那麼此時ifcfg-eth0配置文件的內容如下:
DEVICE=網卡名稱,比如eth0
ONBOOT=yes
BOOTPROTO=static表示配置的是靜態IP
IPADDR=配置明襲規劃好的IP地址
NETMASK=配置規劃好的網路掩碼
GATEWAY=配置規劃好的網關
HWADDR=配置此台設備的MAC地址
『陸』 linux 網卡配置
# vim /etc/sysconfig/network-scripts/ifcfg-ens34
PING外網其它主機
這個橋鍵 ping 的是位於西二旗的在敏並巧 百蔽察度, 出現 未知域名或服務!shit!
允許網卡訪問外網主機
編輯 /etc/hosts 文件
配置網卡設備文件添加DNS域名解析伺服器地址
『柒』 linux操作系統為什麼王卡等網路設備沒有映射到文件系統
Linux操作系統中,網卡等網路設備並沒有映射到文件系統中,是因為Linux的設計哲學中,一切皆文件(Everything is a file)的思想並不是絕對的,只是一種方便的抽象。在Linux中,文件是最基本的數據單元,每個文件都有自己的inode節點,用來記錄文件的元數據信息,比如許可權、所有者、大小等。但是對於設備這樣的硬體資源,它們並不是文件,沒有對應的inode節點,也無法使用文件的相關系統調用,比如read()和write()等,進行讀寫操作。
相對於將設備映射為文件,Linux採用了一種稱為設備文件(Device file)的抽象方式。設備文件是一種特殊的文件,它們被用來與硬體設備通信。在Linux中,設備文件以/dev目錄下的文件形式存在。設備文羨沒件與設備的主、次編號相對應,主編號用來指定設備的類型,而次編號則用來唯一標識設備。這樣,用戶可以通過打開設備文件來訪問硬體禪派脊設備,從而實現對設備的讀寫操作。
對於網卡等網路設備來說,賀滲它們是虛擬的設備,並不是真正的硬體設備。Linux通過網路協議棧來實現網路通信,將網路設備抽象為一個介面,通過設備驅動程序與硬體設備進行交互,將數據發送到網路中。因此,對於網路設備來說,並沒有對應的設備文件,而是通過協議棧來實現對設備的訪問。
『捌』 linux 查看當前的網路配置
linux 查看當前的網路配置
1、執行 ifconfig命令,結果如下可以查看到ip、mac地址等相關網路配置
配置說明
DEVICE=eth0網卡設備名,eth0表示第一張網卡
BOOTPROTO=none是否自動獲取IP(none、static、dhcp),當值為dhcp時,只需配置上述例子中的那幾項就可以聯網
HWADDR=00:0C:29:11:30:39MAC地址
NM_CONTROLLED=yes是否可以由Network Manager圖形管理工具託管
ONBOOT=yes是否隨網路服務啟動當前網卡生效(在CentOS 6 以上的版本中ONBOOT是默認關閉的。)
TYPE=Ethernet網路類型,這里為乙太網
UUID=5ab36190-a5df-4bf1-94d8-6c126afd05f1唯一識別碼
IPADDR=192.168.0.200IP地址
NETMASK=255.255.255.0子網掩碼
GATEWAY=192.168.0.1網關
DNS1=202.106.0.20DNS
IPV6INIT=noIPv6是否啟用,這里設置為不啟用
USERCTL=no是否允許非root用戶控制此網卡,這里為不允許
『玖』 linux網卡配置文件
配置文件位置:/etc/sysconfig/network-scripts/ifcfg-eth0
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE="Ethernet"
BOOTPROTO="none"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
IPV6_PRIVACY="no"
NAME="ens33"
UUID="1909802d-4b18-49a7-a0f5-39a1ce414c03"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.68.101"
PREFIX="24"
GATEWAY="192.168.68.254"
DNS1="8.8.8.8"
IPV4_FAILURE_FATAL="no"
DEFROUTE="yes"
PROXY_METHOD="none"
BROWSER_ONLY="no"
TYPE=Ethernet介面類型,常見的有ETHERNET(乙太網)、Bridge(橋接介面)
BOOTPROTO=dhcp激活此介面使用什麼協議來配置介面屬性:dhcp,boot,static,none
PEERDNS=yes如果BOOTPROTO的值為「dhcp」,是否允許dhcp
DNS1:第一DNS伺服器指向;若/etc/resolve的配置文件也有,則此處優先
DNS2:備用DNS伺服器指向;
IPV6_ADDR_GEN_MODE=stable-privacy
DEVICE=ens33此配置文件對應的設備名稱
ONBOOT=yes操作系統啟動時,在系統引導過程中,是否激活此介面
NETMASK:子網掩碼;CentOS 7支持使用PREFIX以長度方式指明子網掩碼;
GATEWAY:默認網關;
USERCTL:是否允許普通用戶控制此設備