Adaptador de rede para mapeamento de número eth para vmware

3

Eu tenho um ubuntu vm no ESXi 5.5 com 6 interfaces e1000. E na criação da vm, eu atribuo uma rede diferente a todas elas e a potencializo.

Quando eu faço o login no linux eu vejo eth0-eth5, mas a ordem não é como eu esperava. Eu esperava que o adaptador de rede 1 fosse mapeado para eth0 e o adaptador de rede 2 para eth1 e assim por diante

Alguma ideia do porquê disso e como corrigi-lo, por favor?

    
por user3814941 08.07.2014 / 16:41

3 respostas

5

Duas maneiras que aprendi foram:

  • Você pode verificar o endereço MAC nas configurações de rede no vmware para cada NIC e fazer um ifconfig para verificá-las no console.

  • Se você tiver seis linhas, desconecte 5 delas dessa maneira. Primeiro edite o perfil e destaque o adaptador de rede de 1 a 5. Sob as configurações e desmarque o botão "conectar". Então:

    cd /sys/class/net
    grep "" eth0/*
    

    Procure por portadora em estado 1 ou 0 (zero). Aquele que está no estado 1 é o que você está procurando. Então você pode atribuir a VLAN ou o IP necessário.

    Faça isso para cada NIC listado como eth0, eth1, eth2 etc.

Ambas as ações permitem que você veja o endereço MAC, mas a segunda permite que você veja mais detalhes da configuração.

    
por 08.07.2014 / 18:40
4

Tivemos esse problema também. Nós assumimos que isso tinha a ver com os slots PCI virtuais em que os vNICs estavam. Iirc, os três primeiros vNICs estavam bons, mas com mais a ordem dos eth's era estranha.

Nós nunca consertamos isso porque fomos capazes de nos livrar das VMs com tantos vNICs em breve.

Eu não sei o Ubuntu, mas veja se há um arquivo chamado algo com "persistent" e "net" em /etc/udev/rules.d/. Obtenha os endereços MAC de seus vNICs e mapeie-os para a ethX de sua escolha. Você deve encontrar regras como

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:50:56:01:02:03", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

Se você quiser que o vNIC com endereço MAC 00:50:56:01:02:03 seja eth1, apenas altere NAME="eth0" para NAME="eth1" e reinicialize.

editar:

Hoje, implementei uma VM com 3 controladores SCSI e 2 vNICs. Para o BIOS, o primeiro vNIC era NIC 2 e o segundo vNIC era o NIC 1. Eu comparei o arquivo vmx com outro (2 vNICS, mas apenas 1 controlador SCSI). A VM "normal" ficou assim:

ethernet0.pciSlotNumber = "192"
ethernet1.pciSlotNumber = "224"

A VM "estranha" ficou assim:

scsi1.pciSlotNumber = "192"
scsi2.pciSlotNumber = "224"
ethernet0.pciSlotNumber = "256"
ethernet1.pciSlotNumber = "1184"

Como você pode ver, os controladores SCSI adicionais ocupam os slots onde os vNICs estão na outra VM. Então parece que realmente tem a ver com slots PCI virtuais.

    
por 08.07.2014 / 20:15
1

Isso funcionou para mim sob o vmware, onde há frequentemente esses arquivos (possivelmente você precisa dos módulos do kernel vmware):

  • / sys / bus / pci / devices / 0000: ... / label
  • / sys / barramento / pci / devices / 0000: ... / acpi_index

e este link de sinuca:

  • / sys / barramento / pci / devices / 0000: ... / firmware_node

O rótulo do arquivo contém uma linha de texto como: Ethernet0 , Ethernet1 , etc e numerados de acordo com o número original no arquivo OVF.

O arquivo acpi_index tem um número (long int provavelmente), e os números quando classificados, correspondem à ordem original das interfaces no arquivo OVF ou à ordem definida na VM.

A parte do nome do arquivo do destino do link simbólico do firmware também é agrupada na mesma ordem das interfaces no arquivo OVF original.

por exemplo, ../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:8b/device:8c

Você pode ler isso com readlink sob o shell.

O mais útil é provavelmente o arquivo label , já que seria simples extrair a parte numérica do nome e usá-lo como um nome de dispositivo.

Você pode ler o rótulo de $dev da seguinte forma:

read label < /sys/bus/pci/devices/$dev/label

e extraia o sufixo numérico da seguinte forma: ${label#Ethernet}

Como um dístico que não faz nada se não houver rótulo:

read label < /sys/bus/pci/devices/$dev/label && echo ${label#Ethernet}

Se você quiser processar todos os dispositivos para obter o pedido, poderá ler seus dispositivos de ethernet em ordem de ônibus, assim:

lspci -D -mm | sed -n -e 's/ "Ethernet controller".*//;T;p'

então você pode canalizá-lo para esse segmento para prefixar o rótulo

while read dev ; do read label < /sys/bus/pci/devices/$dev/label ; echo ${label#Ethernet} $dev ; done

Você pode classificar e remover o rótulo assim: sort | sed -e 's/.* //'

Toda a expressão para emitir todos os dispositivos Ethernet na ordem definida VMWARE é:

lspci -D -mm | sed -n -e 's/ "Ethernet controller".*//;T;p' | while read dev ; do read label < /sys/bus/pci/devices/$dev/label ; echo ${label#Ethernet} $dev ; done | sort | sed -e 's/.* //'

    
por 17.11.2017 / 09:22