systemd-udevd.service ignorando 60-net.rules

2

Eu tentei o máximo para que isso funcionasse sem pedir ajuda. Eu não consigo descobrir. Eu tenho uma máquina que tem 6 portas ethernet. Eu quero que eles sejam constantemente chamados de eth0 a eth5, assim como fizemos no CentOS 6.5.

No CentOS 6.5, usamos as seguintes regras do udev usando o endereço PCI para especificar exatamente quais nomes cada interface é atribuída:

    ACTION=="add", SUBSYSTEM=="net", IMPORT{program}="/lib/udev/rename_device"                                           
KERNEL=="eth?", ACTION=="add", SUBSYSTEM=="net", BUS=="pci", ID=="0000:00:19.0", NAME="eth0"                         
KERNEL=="eth?", ACTION=="add", SUBSYSTEM=="net", BUS=="pci", ID=="0000:08:00.0", NAME="eth1"                         
KERNEL=="eth?", ACTION=="add", SUBSYSTEM=="net", BUS=="pci", ID=="0000:07:00.0", NAME="eth5"                         
KERNEL=="eth?", ACTION=="add", SUBSYSTEM=="net", BUS=="pci", ID=="0000:06:00.0", NAME="eth4"                         
KERNEL=="eth?", ACTION=="add", SUBSYSTEM=="net", BUS=="pci", ID=="0000:05:00.0", NAME="eth3"                         
KERNEL=="eth?", ACTION=="add", SUBSYSTEM=="net", BUS=="pci", ID=="0000:04:00.0", NAME="eth2"                         
SUBSYSTEM=="net", RUN+="/etc/sysconfig/network-scripts/net.hotplug"

Agora estou executando o CentOS 7.1 com a versão do Kernel 3.10.0-229.20.1.el7.x86_64. O Systemd está agora em execução nesta máquina. O Systemd / udev usa um novo método de nomenclatura persistente e previsível para dispositivos ethernet.

Eu tentei todas as sugestões fornecidas neste site: link Esta é supostamente a documentação oficial para o novo esquema de nomenclatura de dispositivos systemd / udev.

Na parte inferior desta página, ele lista três maneiras de desativar o novo esquema de nomenclatura systemd / udev:

  1. You disable the assignment of fixed names, so that the unpredictable kernel names are used again. For this, simply mask udev's rule file for the default policy: ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules
  2. You create your own manual naming scheme, for example by naming your interfaces "internet0", "dmz0" or "lan0". For that create your own .link files in /etc/systemd/network/, that choose an explicit name or a better naming scheme for one, some, or all of your interfaces. See systemd.link(5) for more information.
  3. You pass the net.ifnames=0 on the kernel command line

Eu tentei todos os três métodos e ainda não consigo fazê-lo funcionar corretamente.

Quando eu tento a opção 1 eu ainda recebo os nomes da interface enp0s25 ... enp4.

Quando eu tento a opção 2, também recebo os novos nomes de interface.

A opção 3 me aproxima, mas ainda não está perto o suficiente. Quando eu tento a opção três, adicionando net.ifnames = 0 ao comando kernel na inicialização, recebo minhas interfaces eth0 a eth5. Isso é bom, mas eles são nomeados automaticamente pelo kernel e estão ignorando minhas regras do udev; O arquivo 60-net.rules ou o arquivo 70-persistent-net.rules (há informações conflitantes sobre o nome do arquivo) encontrados em /etc/udev/rules.d.

Meus arquivos 60-net.rules e meus 70-persistent-net.rules são os mesmos mostrados aqui:

-bash-4.2# cat 70-persistent-net.rules                                                                               
ACTION=="add", SUBSYSTEM=="net", IMPORT{program}="/lib/udev/rename_device"                                           
ACTION=="add", SUBSYSTEM=="net", BUS=="pci", ID=="0000:00:19.0", NAME="eth0"                                         
ACTION=="add", SUBSYSTEM=="net", BUS=="pci", ID=="0000:04:00.0", NAME="eth2"                                         
ACTION=="add", SUBSYSTEM=="net", BUS=="pci", ID=="0000:05:00.0", NAME="eth3"                                         
ACTION=="add", SUBSYSTEM=="net", BUS=="pci", ID=="0000:06:00.0", NAME="eth4"                                         
ACTION=="add", SUBSYSTEM=="net", BUS=="pci", ID=="0000:07:00.0", NAME="eth5"                                         
ACTION=="add", SUBSYSTEM=="net", BUS=="pci", ID=="0000:08:00.0", NAME="eth1" 

Aqui estão alguns resultados para mostrar como minha máquina é montada:

lspci | grep Ethernet                                                                                  
00:19.0 Ethernet controller: Intel Corporation 82567LM Gigabit Network Connection (rev 03)                           
04:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection                                     
05:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection                                     
06:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection                                     
07:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection                                     
08:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection

-bash-4.2# dmesg | grep eth                                                                                          
[    6.978275] e1000e 0000:00:19.0 eth0: (PCI Express:2.5GT/s:Width x1) 00:01:05:0f:2a:a0                            
[    6.986168] e1000e 0000:00:19.0 eth0: Intel(R) PRO/1000 Network Connection                                        
[    6.993044] e1000e 0000:00:19.0 eth0: MAC: 7, PHY: 8, PBA No: FFFFFF-0FF                                          
[    7.127337] e1000e 0000:04:00.0  ready                                                                            
[  478.016884] e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx                                
[  478.024566] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready                                               
[  660.262275] e1000e: eth0 NIC Link is Down                                                                         
[  660.419098] e1000e: eth1 NIC Link is Down                                                                         
[  666.229161] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready                                                    
[  666.404529] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready                                                    
[  668.474872] e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx                                
[  668.482553] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready                                               
[  738.547269] e1000e: eth0 NIC Link is Down                                                                         
[  738.704105] e1000e: eth1 NIC Link is Down                                                                         
[  749.018153] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready                                                    
[  749.195650] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready                                                    
[  751.264876] e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx                                
[  751.272556] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready                                               
[ 1003.295095] e1000e: eth1 NIC Link is Down                                                                         
[ 1010.842662] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready                                                    
[ 1555.995276] e1000e: eth0 NIC Link is Down                                                                         
[ 1556.153100] e1000e: eth1 NIC Link is Down                                                                         
[ 1562.076158] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready                                                    
[ 1562.267653] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready                                                    
[ 1564.817867] e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx                                
[ 1564.825549] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready                                               
[ 2349.926276] e1000e: eth0 NIC Link is Down                                                                         
[ 2350.083101] e1000e: eth1 NIC Link is Down                                                                         
[ 2356.570139] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready                                                    
[ 2356.754645] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready                                                    
[ 2358.743867] e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx                                
[ 2358.751548] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready                                               
[ 2535.460274] e1000e: eth0 NIC Link is Down                                                                         
[ 2535.617098] e1000e: eth1 NIC Link is Down                                                                         
[ 2541.570159] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready                                                    
[ 2541.756655] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready                                                    
[ 2544.019877] e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx                                
[ 2544.027562] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready   

Como exemplo, você pode ver pelas minhas regras personalizadas do udev que eu quero que o eth1 seja especificamente atribuído à interface no endereço PCI 0000: 08: 00.0. Mas aqui você pode ver que ele está sendo atribuído à interface em 0000: 04: 00.0 com esta saída:

-bash-4.2# ethtool -i eth1                                                                                           
driver: e1000e                                                                                                       
version: 3.2.4.2-NAPI                                                                                                
firmware-version: 1.6-0                                                                                              
bus-info: 0000:04:00.0                                                                                               
supports-statistics: yes                                                                                             
supports-test: yes                                                                                                   
supports-eeprom-access: yes                                                                                          
supports-register-dump: yes                                                                                          
supports-priv-flags: no

Aqui está uma lista do meu diretório /etc/udev/rules.d:

-bash-4.2# ls -l                                                                                                     
total 12                                                                                                             
-rw-r----- 1 root root 633 May 10 00:29 60-net.rules                                                                 
-rw-r--r-- 1 root root 537 Dec 21  2015 70-persistent-net.rules                                                      
lrwxrwxrwx 1 root root   9 May 10 00:44 80-net-setup-link.rules -> /dev/null                                         
-rw-r--r-- 1 root root 701 Dec 21  2015 net.rules.old

Como você pode ver, eu também tenho o link simbólico criado para / dev / null para desabilitar o esquema de nomenclatura systemd / udev. Mas isso não parece fazer nada por mim.

Eu também tentei editar o arquivo 60-net.rules encontrado em /usr/lib/udev/rules.d mas isso também não faz nada.

Em / etc / sysconfig / network-scripts eu tinha ifcfg-eth0 e ifcfg-eth1, mas eu os renomeia para ifcfg-ethx e ifcfg-ethx1 para garantir que eles não estejam atrapalhando também.

Sempre que faço uma alteração em qualquer um dos arquivos que estou enviando para aplicar as alterações:

controle udevadm --regra de regras modprobe e1000e rede systemctl stop systemctl start network

Isso não parece funcionar ou aplicar qualquer alteração que eu faça.

Eu tentei tudo o que posso e simplesmente não consigo. Estou desesperado neste momento. Qualquer sugestão seria enorme.

Veja algumas informações adicionais:

-bash-4.2# udevadm info /sys/class/net/eth1                                                                          
P: /devices/pci0000:00/0000:00:1c.3/0000:02:00.0/0000:03:01.0/0000:04:00.0/net/eth1                                  
E: DEVPATH=/devices/pci0000:00/0000:00:1c.3/0000:02:00.0/0000:03:01.0/0000:04:00.0/net/eth1                          
E: ID_BUS=pci                                                                                                        
E: ID_MODEL_FROM_DATABASE=82574L Gigabit Network Connection                                                          
E: ID_MODEL_ID=0x10d3                                                                                                
E: ID_NET_NAME_MAC=enx003059081853                                                                                   
E: ID_NET_NAME_PATH=enp4s0                                                                                           
E: ID_OUI_FROM_DATABASE=KONTRON COMPACT COMPUTERS AG                                                                 
E: ID_PCI_CLASS_FROM_DATABASE=Network controller                                                                     
E: ID_PCI_SUBCLASS_FROM_DATABASE=Ethernet controller                                                                 
E: ID_VENDOR_FROM_DATABASE=Intel Corporation                                                                         
E: ID_VENDOR_ID=0x8086                                                                                               
E: IFINDEX=5                                                                                                         
E: INTERFACE=eth1                                                                                                    
E: SUBSYSTEM=net                                                                                                     
E: SYSTEMD_ALIAS=/sys/subsystem/net/devices/eth1                                                                     
E: TAGS=:systemd:                                                                                                    
E: USEC_INITIALIZED=27130                                                                                            
E: net.ifnames=0

Você pode ver nesta saída que eth1 ainda está sendo atribuído à interface localizada no endereço PCI 0000: 04: 00.0 e os arquivos .link não estão sendo usados, pois não há nenhuma propriedade ID_NET_LINK_FILE mostrada.

Aqui está um exemplo do meu arquivo 10-eth1.link em / etc / systemd / network.

-bash-4.2# cat 10-eth1.link                                                                                          
[Match]                                                                                                              
OriginalName=enp4s0                                                                                                  
Path=pci-0000:08:00.0-*                                                                                              
Driver=e1000e                                                                                                        

[Link]                                                                                                               
Name=eth1           
    
por dutsnekcirf 21.12.2015 / 22:45

0 respostas