當前位置:首頁 » 幣種行情 » linux55沒有eth0

linux55沒有eth0

發布時間: 2025-01-24 15:37:09

⑴ redhat 萬兆和千兆的網卡命名問題

新弄了一批機器,為了准備切換到萬兆環境,給機器配了雙千兆和雙萬兆混合的4介面網卡,然後就出了一點問題

centos 7 引入了網路一致化命名規則,具體可以看紅帽的聯網指南

主要部分摘抄如下

------------引用專用分割線----------------------------

8.1. 命名方案層級結構

默認情況下,systemd 會使用以下策略,採用支持的命名方案為介面命名:

方案 1: 如果固件或 BIOS 信息適用且可用,則使用整合了為板載設備提供索引號的固件或 BIOS 的名稱(例如:eno1),否則請使用方案 2。

方案 2: 如果固件或 BIOS 信息適用且可用,則使用整合了為 PCI 快速熱插拔插槽提供索引號的固件或 BIOS 名稱(例如 ens1),否則請使用方案 3。

方案 3: 如果硬體連接器物理位置信息可用,則使用整合了該信息的名稱(例如:enp2s0),否則請使用方案 5。

方案 4:  默認不使用整合介面 MAC 地址的名稱(例如:enx78e7d1ea46da),但用戶可選擇使用此方案。

方案 5: 傳統的不可預測的內核命名方案,在其他方法均失敗後使用(例如: eth0)。

這個策略(如上所述)是默認策略。如果該系統已啟用  biosdevname ,則會使用該方案。註:啟用  biosdevname  需要添加 biosdevname=1 作為命令行參數(Dell 系統除外),此時只要安裝  biosdevname ,就會默認使用該方案。如果用戶已添加  udev  規則,該規則會更高內核設備名稱,則會優先使用這些規則。

設備命名過程如下:

/usr/lib/udev/rules.d/60-net.rules 文件中的規則會讓  udev  幫助工具  /lib/udev/rename_device  查看所有 /etc/sysconfig/network-scripts/ifcfg- suffix  文件。如果發現包含 HWADDR 條目的 ifcfg 文件與某個介面的 MAC 地址匹配,它會將該介面重命名為 ifcfg 文件中由 DEVICE 指令給出的名稱。

/usr/lib/udev/rules.d/71-biosdevname.rules 中的規則讓  biosdevname  根據其命名策略重命名該介面,即在上一步中沒有重命名該介面、已安裝  biosdevname 、且在 boot 命令行中將 biosdevname=0 作為內核命令給出。

/lib/udev/rules.d/75-net-description.rules 中的規則讓  udev  通過檢查網路介面設備,填寫內部  udev  設備屬性值 ID_NET_NAME_ONBOARD、ID_NET_NAME_SLOT、ID_NET_NAME_PATH。註:有些設備屬性可能處於未定義狀態。

/usr/lib/udev/rules.d/80-net-name-slot.rules 中的規則讓  udev  重命名該介面,優先順序如下:ID_NET_NAME_ONBOARD、ID_NET_NAME_SLOT、ID_NET_NAME_PATH。並提供如下信息:沒有在步驟 1 或 2 中重命名該介面,同時未給出內核參數 net.ifnames=0。如果一個參數未設定,則會按列表的順序設定下一個。如果沒有設定任何參數,則不會重命名該介面。

-----------以上是紅帽的聯網指南-------

其實簡述上面的信息就是首先看內核參數是否啟用了biosdevname=1 (默認是啟用),如果bios提供了設備的名稱就使用bios提供的名稱

如果沒有,就根據網卡配置中 device=eth,em,xyz 的名字來命名這個網卡,但是如果這樣命名的話,必須在配置里寫死網卡的mac地址

作為網卡的識別標志,對單網卡當然沒什麼問題,但是如果在集群環境里,HA,以及bonding環境里,為了快速切換網路流量,往往要屏蔽mac,

使用虛擬mac,或者多塊網卡使用一個mac地址,這個時候需要在配置文件里屏蔽mac地址,因此就需要區改udev的配置文件來解決

我所遇到的問題是,使用了biosdevname=0和 net.ifnames=0 參數後,(因為以前有大量的centos6的機器,為了移植方便,不使用一致性命名規則,網卡名依然是eth0,eth1.。。。)安裝伺服器時一切正常,但啟動系統後,發現系統將插在第一個埠的網卡認為是eth2,和預期不符,本能的認為udev可以解決問題,於是添加了udev的規則

```

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="24:6e:96:ac:a1:xa", ATTR{type}=="1", KERNEL=="*", NAME="eth0"

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="24:6e:96:ac:a1:xb", ATTR{type}=="1", KERNEL=="*", NAME="eth1"

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="24:6e:96:ac:a1:xc", ATTR{type}=="1", KERNEL=="*", NAME="eth2"

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="24:6e:96:ac:a1:xd", ATTR{type}=="1", KERNEL=="*", NAME="eth3"

```

發現不起作用,,難道寫錯了?換個規則,用pci設備號去綁定

SUBSYSTEM=="net", ACTION=="add", KERNEL=="eth*", SUBSYSTEM=="pci", KERNELS===="0000:01:00.0", NAME="eth0"

依然沒用

用下面的命令debug一下

udevadm test /sys/class/net/eth0

結果縮略如下

rules contain 49152 bytes tokens (4096 * 12 bytes), 13451 bytes strings

2076 strings (25677 bytes), 1399 de-plicated (12904 bytes), 678 trie nodes used

NAME 'eth2' /etc/udev/rules.d/60-net.rules:6

IMPORT builtin 'net_id' /usr/lib/udev/rules.d/75-net-description.rules:6

IMPORT builtin 'hwdb' /usr/lib/udev/rules.d/75-net-description.rules:12

IMPORT builtin 'path_id' /usr/lib/udev/rules.d/80-net-setup-link.rules:5

IMPORT builtin 'net_setup_link' /usr/lib/udev/rules.d/80-net-setup-link.rules:9

No matching link configuration found.

RUN '/usr/lib/systemd/systemd-sysctl --prefix=/net/ipv4/conf/$name --prefix=/net/ipv4/neigh/$name --prefix=/net/ipv6/conf/$name --prefix=/net/ipv6/neigh/$name' /usr/lib/udev/rules.d/99-systemd.rules:55

Error changing net interface name 'eth0' to 'eth2': File exists

could not rename interface '2' from 'eth0' to 'eth2': File exists

created db file '/run/udev/data/n2' for '/devices/pci0000:00/0000:00:1c.4/0000:06:00.0/net/eth0'

ACTION=add

DEVPATH=/devices/pci0000:00/0000:00:1c.4/0000:06:00.0/net/eth0

ID_BUS=pci

ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Gigabit 4P X540/I350 rNDC)

粗體看到原來是設備已經存在,無法重命名,於是想到的重新載入驅動

modprobe -rv igb

modprobe -rv ixgbe

然後按順序載入驅動

modprobe ixgbe

modprobe  igb

終於可以看到效果了,不過重啟就完蛋了

於是想是否可以調整驅動載入順序?

找了半天文檔,發現可以通過重新打包內核啟動文件和編譯內核兩條路實現,不過這顯然又增加了很多麻煩,總不能升級一次內核,就重新打一次包吧

看看其他方法。最好發現簡單的方法就是修改啟動內核的參數 將 biosdevname=0和net.ifnames=0 改為 biosdevname=0和net.ifnames=1 ,這樣系統啟動時,會按照上述一致性命名規則,重新命名網卡,可以預期的是,已dell板載網卡為例,網卡會依次命名為eno1,eno4,等等,然後再載入udev規則,按照udev規則,再次重新命名為我們期望的eth0,eth1,等等

當然配置文件可以用ansible搞定,我這里的模版內容就是

ifcfg-eth0.j2

------

NAME="eth0"

DEVICE="eth0"

ONBOOT=yes

HWADDR="{{ hostvars[inventory_hostname].ansible_eth1.macaddress }}"

NETBOOT=yes

IPV6INIT=no

BOOTPROTO=static

TYPE=Ethernet

----------

這樣udev 規則就生效了,其實就是啟動過程中,當上述兩個參數全為0時,網路設備只能叫ethx,先載入的驅動搶佔了eth0和eth1時,(我這里是千兆的設備驅動 igb先啟動)後起的設備想按udev規則rname時,發現eth0,和eth1 已經被占據了,因此命名失敗,所以深入理解啟動順序和動作其實還是蠻重要的

參考鏈接  https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/networking_guide/sec-understanding_the_device_renaming_procere

紅帽知識庫文章引用如下

⑵ 廣電網路eth0和eth1介面區別

eth0 eth0:1 和eth0.1三者的關系對應於物理網卡、子網卡、虛擬VLAN網卡的關系:
物理網卡:物理網卡這里指的是伺服器上實際的網路介面設備,這里我伺服器上雙網卡,在系統中看到的2個物理網卡分別對應是eth0和eth1這兩個網路介面。

子網卡:子網卡在這里並不是實際上的網路介面設備,但是可以作為網路介面在系統中出現,如eth0:1、eth1:2這種網路介面。它們必須要依賴於物理網卡,雖然可以與物理網卡的網路介面同時在系統中存在並使用不同的IP地址,而且也擁有它們自己的網路介面配置文件。但是當所依賴的物理網卡不啟用時(Down狀態)這些子網卡也將一同不能工作。

虛擬VLAN網卡:這些虛擬VLAN網卡也不是實際上的網路介面設備,也可以作為網路介面在系統中出現,但是與子網卡不同的是,他們沒有自己的配置文件。他們只是通過將物理網加入不同的VLAN而生成的VLAN虛擬網卡。如果將一個物理網卡通過vconfig命令添加到多個VLAN當中去的話,就會有多個VLAN虛擬網卡出現,他們的信息以及相關的VLAN信息都是保存在/proc/net/vlan/config這個臨時文件中的,而沒有獨自的配置文件。它們的網路介面名是eth0.1、eth1.2這種名字。
注意:當需要啟用VLAN虛擬網卡工作的時候,關聯的物理網卡網路介面上必須沒有IP地址的配置信息,並且,這些主物理網卡的子網卡也必須不能被啟用和必須不能有IP地址配置信息。這個在網上看到的結論根據我的實際測試結果來看是不準確的,物理網卡本身可以綁定IP,並且給本徵vlan提供通信網關的功能,但必須是在802.1q下。

/sbin/ifconfig 查看、配置、啟用或禁用網路介面(網卡)的工具
ifconfig 是一個用來查看、配置、啟用或禁用網路介面的工具,這個工具極為常用的。比如我們可以用這個工具來配置網卡的IP地址、MAC地址、掩碼、廣播地址等。值得一說的是用ifconfig 為網卡指定IP地址,這只是用來調試網路用的,並不會更改系統關於網卡的配置文件。如果您想把網路介面的IP地址固定下來,目前有三個方法:一是通過各個發行和版本專用的工具來修改IP地址;二是直接修改網路介面的配置文件;三是修改特定的文件,加入ifconfig 指令來指定網卡的IP地址,比如在redhat或Fedora中,把ifconfig 的語名寫入/etc/rc.d/rc.local文件中;

/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0

ifconfig配置網路介面語法:
ifconfig 網路埠 IP地址 hw MAC地址 netmask 掩碼地址 broadcast 廣播地址 [up/down]

ifconfig常用用法:

ifconfig : 查看主機激活狀態的網路介面情況; 輸出結果中:lo 是表示主機的回壞地址,eth0 表示第一塊網卡, 其中 HWaddr 表示網卡的物理地址(MAC地址); inet addr 用來表示網卡的IP地址,Bcast表示廣播地址,Mask表示掩碼地址
ifconfig -a : 查看主機所有(包括沒有被激活的)網路介面的情況
ifconfig eth0 : 查看特定網路介面的狀態
ifconfig eth0 down = ifup eth0 : 如果eth0是激活的,就把它終止掉。此命令等同於 ifdown eth0;
ifconfig eth0 up = ifdown eth0 : 激活eth0 ; 此命令等同於 ifup eth0
ifconfig eth0 192.168.1.99 broadcast 192.168.1.255 netmask 255.255.255.0 : 配置 eth0的IP地址、廣播地址和網路掩碼;
ifconfig eth0 192.168.1.99 broadcast 192.168.1.255 netmask 255.255.255.0 up : 配置IP地址、網路掩碼、廣播地址的同時,激活網卡eth0
ifconfig eth1 hw ether 00:11:00:00:11:22 : 設置網卡的物理地址(MAC地址)。其中 hw 後面所接的是網路介面類型, ether表示乙太網, 同時也支持 ax25 、ARCnet、netrom等,詳情請查看 man ifconfig ;

虛擬IP技術在高可用領域像資料庫SQLSERVER、web伺服器等場景下使用很多,很疑惑它是怎麼實現的,偶然,發現了一種方式可以實現虛擬ip。它的原理在於同一個物理網卡,是可以擁有多個ip地址的,至於虛擬網卡,也可用通過該方式擁有多個ip。 即對外提供資料庫伺服器的主機除了有一個真實IP外還有一個虛IP,使用這兩個IP中的 任意一個都可以連接到這台主機,所有項目中資料庫鏈接一項配置的都是這個虛IP,當伺服器發生故障無法對外提供服務時,動態將這個虛IP切換到備用主機。

其實現原理主要是靠TCP/IP的ARP協議。因為ip地址只是一個邏輯地址,在乙太網中MAC地址才是真正用來進行數據傳輸的物理地址,每台主機中都有一個ARP高速緩存,存儲同一個網路內的IP地址與MAC地址的對應關系,乙太網中的主機發送數據時會先從這個緩存中查詢目標IP對應的MAC地址,會向這個MAC地址發送數據。操作系統會自動維護這個緩存。這就是整個實現 的關鍵。

在eth0處引用別名,設置完子網掩碼即可
ifconfig eth0:0 166.111.69.100 netmask 255.255.255.0 up

此時查看網卡信息

eth0 Link encap:Ethernet HWaddr 08:00:27:64:59:11
inet addr:166.111.69.17 Bcast:166.111.69.255 Mask:255.255.255.0
inet6 addr: 2402:f000:1:4412:a00:27ff:fe64:5911/64 Scope:Global
inet6 addr: fe80::a00:27ff:fe64:5911/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:597673 errors:0 dropped:0 overruns:0 frame:0
TX packets:215472 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:67285933 (67.2 MB) TX bytes:22782158 (22.7 MB)
eth0:0 Link encap:Ethernet HWaddr 08:00:27:64:59:11
inet addr:166.111.69.100 Bcast:166.111.69.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:843 errors:0 dropped:0 overruns:0 frame:0
TX packets:843 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:67174 (67.1 KB) TX bytes:67174 (67.1 KB)

然後找另一台機器ping這個vip(eth0:0)就可以看到顯示結果了。
寫在/etc/rc.local里也可以,寫在這里就不怕斷電後機器無法正常使用了。

更詳細參考:Linux-配置虛擬IP實例

用ifconfig 來配置虛擬網路介面:
有時我們為了滿足不同的需要還需要配置虛擬網路介面,比如我們用不同的IP地址來架運行多個HTTPD伺服器,就要用到虛擬地址;這樣就省卻了同一個IP地址,如果開設兩個的HTTPD伺服器時,要指定埠號。

虛擬網路介面指的是為一個網路介面指定多個IP地址,虛擬介面是這樣的 eth0:0 、 eth0:1、eth0:2 ... .. eth1N。當然您為eth1 指定多個IP地址,也就是 eth1:0、eth1:1、eth1:2 ... ...以此類推;
ifconfig eth1:0 192.168.1.250 hw ether 00:11:00:00:11:44 netmask 255.255.255.0 broadcast 192.168.1.255 up
ifconfig eth1:1 192.168.1.249 hw ether 00:11:00:00:11:55 netmask 255.255.255.0 broadcast 192.168.1.255 up
注意:指定時,要為每個虛擬網卡指定不同的物理地址;

熱點內容
linux55沒有eth0 發布:2025-01-24 15:37:09 瀏覽:840
以太坊系統架構圖 發布:2025-01-24 15:36:02 瀏覽:847
數字貨幣綜合指數是 發布:2025-01-24 15:17:43 瀏覽:217
騰訊電腦管家破獲挖礦木馬 發布:2025-01-24 15:12:04 瀏覽:571
比特幣平台講解 發布:2025-01-24 14:58:21 瀏覽:59
比特幣連漲紀錄 發布:2025-01-24 14:52:18 瀏覽:787
eth挖礦全過程 發布:2025-01-24 14:50:37 瀏覽:739
60個比特幣是多少錢 發布:2025-01-24 14:46:54 瀏覽:492
2018以太坊30 發布:2025-01-24 14:43:20 瀏覽:177
ATC幣與比特幣的區別 發布:2025-01-24 14:28:40 瀏覽:631