Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I have a ubuntu vm on ESXi 5.5 with 6 e1000 interfaces. And at creation of the vm I assign a different network to all of them and power it up.

When I login to linux I see eth0-eth5 but the order is not as I expected to to be. I expected network adapter 1 to be mapped to eth0 and net adapter 2 to eth1 and so on

Any idea why this is so and how to fix it please?

share|improve this question

2 Answers 2

Two ways I learned were:

  • You can look at the MAC address on the network settings on vmware for each NIC and do a ifconfig to check them against at the console.

  • If you have six lines disconnect 5 of them this way. First edit the profile and highlight the Network Adapter 1 thru 5. Under the settings and uncheck the "connect" button. Then:

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

    Look for carrier being in a 1 or 0 (zero) state. The one that is in the 1 state is the one your looking for. Then you can assign the VLAN or IP needed.

    Do this for each of the NICs listed eth0, eth1, eth2, etc.

Both actions allow you to see the MAC address but the second allows you to see more of the config details.

share|improve this answer

We had this problem, too. We assumed that it had to do with the virtual PCI slots the vNICs were in. Iirc, the first three vNICs were fine but with more the order of the eth's was weird.

We never really fixed this because we were able to get rid of VMs with so many vNICs soon.

I don't know Ubuntu but look if there's a file named something with "persistent" and "net" under /etc/udev/rules.d/. Get the MAC addresses from your vNICs and map them to the ethX of your choice there. You should find rules like

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

If you want the vNIC with MAC address 00:50:56:01:02:03 to be eth1, just change NAME="eth0" to NAME="eth1" and reboot.

edit:

Today, I deployed a VM with 3 SCSI controllers and 2 vNICs. For the BIOS, the first vNIC was NIC 2 and the second vNIC was NIC 1. I compared the vmx file to another one (2 vNICS but only 1 SCSI controller). The "normal" VM looked like this:

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

The "weird" VM looked like this:

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

As you can see, the additional SCSI controllers occupy the slots where the vNICs are in the other VM. So it seems it really has to do with virtual PCI slots.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.