Direcciones MAC en placas base de doble NIC

9

Aquí hay un problema extraño.

Tenemos varios dispositivos con placas base de doble NIC. Algunos son Realtek NIC, que apestan. Algunos son Intel e1000, que no lo hacen.

Acabo de notar en 2 máquinas, una es una NIC de Intel, una es una Realtek, que cuando pongo la dirección MAC de una máquina en el dhcpd.confarchivo de nuestro servidor DHCP para que PXE arranque la máquina en un entorno de reconstrucción, Inicialmente todo está bien.

El servidor obtiene una asignación de DHCP y PXE se inicia en el entorno predeterminado de Ubuntu.

En una o dos máquinas, llega hasta la configuración de red DHCP de Ubuntu y falla. Si levanto un shell de busybox (en tty2la máquina de instalación) y ejecuto ip link, puedo ver que el indicador UP está configurado en la otra NIC.

Aquí hay algunas cosas.

  host xeon16-ghz240-gb48-node1 {
        hardware ethernet BC:AE:C5:07:1F:18;
        filename "pxelinux.0";
        next-server 192.168.123.80;
  }

Eso es lo que hay dhcpd.conf

Así es como se ve el enlace ip en la máquina del mal. salida de enlace ip

Solo una NIC está realmente conectada (deliberadamente).

Como puede ver, la NIC que está en la configuración de dhcpd, no está marcada como ARRIBA, y el enlace que está ARRIBA, no es el que está en DHCP.

Hasta ahora he visto esto en dos marcas de configuración de doble NIC.

¿Alguien sabe 1) qué lo está causando, y b) ¿Qué podemos hacer al respecto?

Tom O'Connor
fuente
1. Diferente orden de inicialización de dispositivos PCI. Por lo tanto, el BIOS usa el MAC ": 18" y el sistema operativo usa primero el MAC ": 19". 2. No idea =]
Chris S
Agregaré esto como un comentario en lugar de una respuesta porque es bastante débil, pero puedo decir que alguien antes de mí encontró exactamente el mismo problema y lo resolvió agregando MAC y MAC + 1 al dhcpd.confarchivo al configurar un Kickstart.
Kyle Smith
¿Cómo se ve la preselección? Específicamente, se netcfg/choose_interfaceestablece?
Shane Madden
./master/master_preseed.cfg:d-i netcfg/choose_interface select auto
Tom O'Connor
@KyleSmith Sí ... aunque es un poco estocástico.
Tom O'Connor

Respuestas:

8

Siempre hay más de una forma de hacer algo :)

Solución 1

Placas base con una de cada?

Lista negra, sea cual sea el módulo ( ethtool -i eth0) que admita la tarjeta Realtek.

Ubuntu admite module_name.blacklist=yes ponerlo en la lista negra durante el arranque y debería poder cambiar las opciones de modprobe en el entorno preestablecido para que no se pruebe más tarde.


Solución 2

Permítanme reformular el problema:

Tenemos placas base con dos NIC y queremos que funcionen de manera consistente sin importar qué interfaz esté conectada. No siempre podemos determinar qué interfaz (desde el punto de vista del sistema operativo) se conectará.

Establecer la vinculación! Utilice una configuración activa-pasiva ( mode=active-backup miimon=100) con ambas interfaces como esclavos. De esta manera, siempre funcionará sin importar qué interfaz esté conectada.


Solución 3

¿Las placas base son lo suficientemente consistentes como para que las NIC siempre aparezcan en la misma ID de PCI? Use las reglas de udev para asignar siempre la tarjeta en una dirección PCI particular a eth0 y la tarjeta en la otra dirección a eth1.

Tenga en cuenta que puede tener dos reglas de udev diferentes que asignan un dispositivo a eth0; esto le permite manejar el caso Realtek y e1000 al mismo tiempo.

MikeyB
fuente
Ambos son Realtek lamentablemente ... Voy a conseguir algunos e1000 para reemplazarlos, luego probablemente los matará en la biografía.
Tom O'Connor
1
Ooohhhh, mal entendido. Pensé que tenías placas base con 1 x e1000 y 1 x Realtek.
MikeyB
Buenas respuestas ... No estoy completamente seguro de qué es compatible, ya que este problema tiende a presentarse entre el cargador PXE y el DHCP del instalador de Debian. Personalmente, creo que la mejor opción será deshabilitar todas las NIC Intel decentes excepto una
Tom O'Connor,
Terminamos configurando la vinculación y solucionando el problema poniendo ambas direcciones en DHCP.
Tom O'Connor
5

Puede intentar agregar la opción PXELINUX IPAPPEND 2 a su archivo pxelinux.cfg para indicar a los scripts de inicio que usen la interfaz que hizo el arranque PXE:

/var/lib/tftpboot/pxelinux.cfg/default

LABEL linux
   KERNEL /ubuntu/casper/vmlinuz 
   APPEND initrd=/ubuntu/casper/initrd.gz root=/dev/nfs boot=casper netboot=nfs nfsroot=192.168.1.1:/var/lib/tftpboot/ubuntu --
   IPAPPEND 2

ver: http://www.syslinux.org/wiki/index.php/SYSLINUX#IPAPPEND_flag_val_.5BPXELINUX_only.5D

panticz.de
fuente