The Case of the Mysterious Missing MAC Address

Coriander is dead. Turmeric is alive. What does this mean? All the content on sftp.knarrnia.com went away except for the PDFs and various other ebook formats which I was smart enough to grab off the RAID before it entirely keeled over. The uptime for coriander was ultimately 20 minutes tops before it keeled over. Not bad for a computer I built in 2003 and then rebuilt when Drexel had the Heat Wave of Death which caused me to request an extension on the finals. The box was two RAIDed 80GB IDE drives, running OpenSuSE I had installed as a desktop and later simply retired to serving up content to my Nook and XBOX.

Turmeric, however, is a first gen nVidia motherboard. And if this is people’s experience with nVidia, I am entirely, absolutely done with them as a motherboard maker. My network is pretty standard for home use. I have an honest to god Cisco router, a Cisco WAP, a comcast bullshit cable modem which is probably going to have a terrible accident so I can get one that works, and all the devices meander through those. The XBOX is UPnP permissions, nothing else does. Turmeric/Coriander had a MAC address reservation so they would come up, get the right IP, and then the cisco firewalls would pass traffic to them as needed. It worked swimmingly well until Turmeric refused to get the IP I had reserved for it. It would always get a different IP than reserved, but it would get the IP consistently. I racked my brain on this problem for a few hours and finally broke out ettercap to see WTF it was doing.

Turns out the first gen nVidia motherboards do something really stupid with DHCP. Actually lets rewind for a minute – they generally do really stupid stuff. This motherboard has hardware RAID also, but it only works for the SATA drives. IDE? Shit out of luck. To further add insult to injury, the bootp stuff for jumpstarting a box? Doesn’t work. Never figured that one out. Finally there’s only two default devices you get set in the BIOS. For the moment it’s CDROM and then the first drive in the RAID, but to actually do the install I had to change CDROM to USB after burning out an image to it. What the heck guys?

Now, I’ll save you the boring TCP spec – When the nVidia board comes up it actually sends a DHCP packet on its own which is nice. The problem here is the HLEN of the packet is… 0. Yup. Someone didn’t know what to put in the field, so they send 0. This causes the router (thank god) to respond to FF:FF:FF:FF:FF:FF, which while it’s not correct, works because it’s a broadcast packet. The adaptor (seems) to configure itself, then Linux does something goofy where it sees the adapter is configured, so it sends out a release/renew, which the router, apparently knowing the MAC address but having an entry for a bogus MAC, sends out a different IP (next in pool) for the correct MAC address.

The BIOS, of course, doesn’t have a way to disable this “convenience feature” and to add insult to injury, dmesg doesn’t work in Linux because the BIOS is doing something funky by itself. For right now I’m just ignoring it. But seriously nVidia, fix your shit.

Advertisements