Linux Identifying ~ Which NIC Is Which – Which NIC is eth0?

last updated in Categories Ask nixCraft, Hardware, Howto, Linux, Networking

From my mailbag the other day I received an interesting question about network interface:


I’ve 4 network card installed in my server and I need to find out which NIC is which? How do I tell which physical card is eth0 and which one is eth1 and so on using command line options? If my server is 5000 miles away, how do I tell which NIC is eth0 w/o interrupting network traffic?

I’ve got some thoughts on this myself such as:
[a] use ping command – Easy to use

[b] udev persistent-net rules – See /etc/udev/rules.d/*persistent-net.rules

[c] ethtool -p eth0 5 – It will initiates adapter-specific action intended to enable an operator to easily identify the adapter by sight. Typically this involves blinking one or more LEDs on the specific ethernet port. But, it will not work with all drivers

Anyway, I thought that it would be interesting to throw this to you the reader to comment on.


Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin, DevOps engineer, and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin, Linux/Unix and open source topics via RSS/XML feed or weekly email newsletter.

11 comment

  1. The only way that I’ve found is using ifup and ifdown and just unplugging the cables to see which one works/fails under the right circumstances.

    If you know the MAC addresses, you can simply do it with ifconfig. Unfortunately, I’ve never thought far enough ahead to annotate the MACs when I’m building the server.

  2. Well off the top head, if you have physical access and can afford to have it offline for a few moments, you could use ifconfig and list all of the interfaces, take them all down, and one by one turn them on and ping and see which card’s transfer light flashes. Crude, I know.

  3. @Reo, we need to find out w/o interrupting network traffic

    @tomdeb, good suggestion

    Appreciate all of your posts.

  4. masterboy,

    Don’t think that always works. I’ve noticed eth assignments will change with different kernel builds. For example, my recent upgrade from Slackware 10.2 to Slackware 12 resulted in my eth numbers being re-assigned, I had to change my iptables configurations to get everything working again.

    I’ve never understood why this is, if anyone has an explaination I would be interested to hear it.

  5. Well, this is pretty obvious. If you have network connectivity to a machine 5000 miles away, you have network access. Just assign addresses to you your interfaces, if you haven’t done so already and then from eth0 ping your home server with ten packets. Next, ping your home server from eth1 on the remote machine twenty times. From eth2, thirty times. etc.

    It would solve the question, right?

  6. `ethtool -p ethx` just blink the data led, which is not easy to identify (yellow led, also blink in normal time), so turn off all leds or blink the link led(the green one) is a better way.
    here is a simple script
    t=ethx; ethtool -i $t; while true; do ifconfig $t down; sleep 4; ifconfig $t up; done

    Have a question? Post it on our forum!