dnsmasq: asignación de 2 direcciones MAC a la misma dirección IP

17

¿Es posible asignar 2 direcciones MAC diferentes a la misma dirección IP?

Para mi copia de seguridad, necesito volver a conectarme desde el servidor al portátil, y me gustaría tener la misma IP tanto para la interfaz inalámbrica como para la cableada.

La interfaz web openwrt no acepta múltiples entradas dhcp con la misma dirección IP, pero ¿quizás haya una solución alternativa?

Aclaración agregada el 23 de mayo :

Debería haber dejado en claro que solo una de las interfaces de red del portátil está conectada a la red en un momento dado (por lo tanto, los conmutadores no deberían confundirse). Inicialmente tenía 2 direcciones IP distintas asignadas a las interfaces, con el mismo nombre DNS, pero esto no funcionó muy bien (se agotó el tiempo de espera cuando obtuve la IP incorrecta). Sin embargo, quiero usar el mismo nombre para ambos, ya que está codificado en mi script de copia de seguridad.

Perdón por la confusion.

somnoliento
fuente
Estoy bastante seguro de que surgirán travesuras si intentas esto.
Holocryptic
El sistema operativo en el cliente (y posiblemente en el servidor) también podría estar aquí
Norky

Respuestas:

29

(comentario aleatorio semi-obstinado: es raro ver este alto recuento de respuestas y comentarios inexactos y poco constructivos a una pregunta)

A diferencia de otros aquí, afirmo que su solicitud es realmente bastante elemental y ha sido compatible con dnsmasq desde la versión 2.46 , IIRC. Esta fue la única razón por la que cambié de dd-wrt . Después de aproximadamente un año de ejecutar OpenWRT, ahora sé que en realidad hay muchas más razones para cambiar, pero eso no viene al caso.

Estoy ejecutando Backfire 10.04-rc4 :

May 23 17:45:16 gateway dnsmasq[1925]: started, version 2.55 cachesize 150

Mi configuracion:

$ cat /etc/config/dhcp

config 'dnsmasq'
    option 'domainneeded' '1'
    option 'boguspriv' '1'
    option 'localise_queries' '1'
    option 'rebind_protection' '1'
    option 'rebind_localhost' '1'
    option 'expandhosts' '1'
    option 'authoritative' '1'
    option 'readethers' '1'
    option 'leasefile' '/tmp/dhcp.leases'
    option 'resolvfile' '/tmp/resolv.conf.auto'
    option 'enable_tftp' '1'
    option 'domain' 'domain.net'
    option 'local' '/domain.net/'

config 'dhcp' 'lan'
    option 'interface' 'lan'
    option 'start' '100'
    option 'limit' '150'
    option 'leasetime' 'infinite'

config 'dhcp' 'wan'
    option 'interface' 'wan'
    option 'ignore' '1'
    option 'dynamicdhcp' '0'

config 'dhcp'
    option 'interface' 'dmz'
    option 'start' '100'
    option 'limit' '150'
    option 'leasetime' '12h'

config 'host'
    option 'name' 'travelmate'
    option 'mac' '00:11:22:33:44:55 aa:bb:cc:dd:ee:ff'
    option 'ip' '192.168.1.111'

config 'host'
    option 'name' 'mobilitymac'
    option 'mac' '99:88:77:66:55:44 ff:ee:dd:cc:bb:aa'
    option 'ip' '192.168.1.104'

Disfrute de la transición perfecta que proporciona esta configuración, todas las sesiones existentes se mantienen activas si no se demora demasiado con el interruptor.

lkraav
fuente
44
Votaría esta respuesta, porque responde a mi pregunta de manera muy detallada, pero todavía no tengo el karma.
sleepyMonad
Y puntos de brownie adicionales, ya que luci (la interfaz web) parece ser compatible con este formato.
sleepyMonad
1
Anoche tuve una situación en la que no sabía que wlan0 todavía estaba conectado (la puesta en escena brcm80211 podría estar un poco bloqueada) al conectar eth0. dnsmasq no tuvo un problema particular con esto, solo asignó una nueva IP para eth0. Lo malo es que luego debe ingresar al enrutador, detener dnsmasq y editar / matar /tmp/dhcp.leases, reiniciar dnsmasq para que las cosas vuelvan al modo operativo deseado.
lkraav
2
Para destilar lo que creo que es la parte importante de eso, puede incluir varias direcciones MAC en una sola entrada (en este archivo o en la interfaz luci). Entonces, en lugar de hacer una línea con ab:cd:ef:01:02:03y otra con 04:05:06:07:08:09, simplemente haga una entrada con un solo espacio que separe los dos, por ejemplo ab:cd:ef:01:02:03 04:05:06:07:08:09.
teeks99
6

Investigué un poco.

Lo primero que aprendí es que es posible asignar arrendamientos DHCP en función de criterios distintos a una dirección MAC.

De las preguntas frecuentes de dhcp :

¿Qué es una identificación de cliente?

Lo que se denomina ID de cliente a los efectos del protocolo DHCP es lo que el protocolo utiliza para identificar la computadora cliente. Por defecto, las implementaciones de DHCP suelen emplear la dirección MAC del cliente para este propósito, pero el protocolo DHCP permite otras opciones. Algunas implementaciones de DHCP tienen una opción de configuración para especificar la ID de cliente que desea. Una alternativa a la dirección MAC es simplemente una cadena de caracteres de su elección. En cualquier caso, para que DHCP funcione, debe estar seguro de que ningún otro cliente está utilizando la ID de cliente que elija, y debe estar seguro de que el servidor DHCP lo aceptará.

Entonces, aunque aparentemente no es compatible con la interfaz web de luci en openWRT, dnsmasq sí mismo admite client_id y múltiples direcciones MAC (con alguna advertencia).

Desde la página de manual de dnsmasq :

-G, --dhcp-host = [hwaddr] [, id: client_id | *] [, set: tag] [, ipaddr] [, hostname] [, lease_time] [, ignore] Especifique por parámetros de host para el servidor DHCP . Esto permite que a una máquina con una dirección de hardware particular se le asigne siempre el mismo nombre de host, dirección IP y tiempo de arrendamiento. Un nombre de host especificado como este anula cualquier proporcionado por el cliente DHCP en la máquina. También está permitido omitir la dirección de hardware e incluir el nombre de host, en cuyo caso la dirección IP y los tiempos de arrendamiento se aplicarán a cualquier máquina que reclame ese nombre. Por ejemplo --dhcp-host = 00: 20: e0: 3b: 13: af, wap, infinite le dice a dnsmasq que le dé a la máquina la dirección de hardware 00: 20: e0: 3b: 13: af el nombre wap, y un infinito Arrendamiento de DHCP. --dhcp-host = lap, 192.168.0.199 le dice a dnsmasq que siempre asigne a la máquina la dirección IP 192.168.0.199.

(...)

Se permite usar identificadores de cliente en lugar de direcciones de hardware para identificar hosts mediante el prefijo 'id:'. Por lo tanto: --dhcp-host = id: 01: 02: 03: 04, ..... se refiere al host con el identificador de cliente 01: 02: 03: 04. También está permitido especificar la ID del cliente como texto, de esta manera: --dhcp-host = id: clientidastext, .....

(...)

Como caso especial, es posible incluir más de una dirección de hardware. por ejemplo: --dhcp-host = 11: 22: 33: 44: 55: 66,12: 34: 56: 78: 90: 12,192.168.0.2 Esto permite que una dirección IP se asocie con múltiples direcciones de hardware, y le da permiso a dnsmasq abandonar una concesión de DHCP a una de las direcciones de hardware cuando otra solicita una concesión. Tenga en cuenta que esto es algo peligroso, solo funcionará de manera confiable si solo una de las direcciones de hardware está activa en cualquier momento y no hay forma de que dnsmasq lo haga cumplir. Por ejemplo, es útil asignar una dirección IP estable a una computadora portátil que tenga interfaces cableadas e inalámbricas.

Opté por la solución multi-mac (porque no traté de averiguar cómo podría especificar la identificación del cliente en el lado del cliente, que es algo que debe hacerse para cada cliente por separado, y la alternativa multi-mac es Una solución para todos los portátiles en la casa.)

Eludí la interfaz luci y agregué directamente a /etc/dnsmasq.conf la siguiente línea:

dhcp-hostsfile = / etc / dnsmasq-dhcphosts.conf

y /etc/dnsmasq-dhcphosts.conf contiene líneas del siguiente formato:

mac1, mac2, ip

(Mantengo esta configuración en un archivo separado para evitar que se sobrescriba en la próxima actualización).

Funciona bien.

somnoliento
fuente
1

Su objetivo: tener un nombre de host constante de la computadora portátil siempre apunte a la (dirección IP activa / interfaz de la computadora portátil). Pensé que el servicio combinado de DNS y DHCP de dnsmasq haría eso, es decir, cuando un cliente realiza un DHCPDISCOVER / DHCPREQUEST informa su nombre de host, y dnsmasq asocia el nombre de host con la dirección IP asignada. Esa ha sido mi experiencia, sin embargo, debo admitir que no he intentado conectarme con una red i / f, luego desconectarme (sin hacer un lanzamiento explícito) y volver a conectarme con otra.

Suponiendo un nombre de host de "computadora portátil", ¿qué sucede cuando consulta el dispositivo OpenWRT para "computadora portátil", después de haber cambiado de una interfaz a otra?

Norky
fuente
1

¿Por qué usar DHCP?

Puede configurar manualmente una dirección IP estática en ambas interfaces y luego usar la que prefiera (dejando la otra desconectada, por supuesto).

Massimo
fuente
Bueno, porque este es el método más fácil, la única configuración que se adapta a todas las redes a las que me conecto (o al menos eso esperaba).
sleepyMonad
0

Me sorprendería mucho si su conmutador puede soportar esto. Es posible que tenga más suerte si le da a ambas interfaces de red la misma dirección MAC.

Dicho esto, definitivamente estoy de acuerdo con Holocryptic, aquí hay dragones.

happyhairydude
fuente
gracias por sugerir usar el mismo MAC; aunque no estoy seguro de cómo hacerlo. Quizás es algo que puedo configurar desde el BIOS ...
sleepyMonad
Normalmente es más fácil configurarlo en el sistema operativo, en Windows está bajo las propiedades de la interfaz de red (configurar manualmente la dirección MAC).
happyhairydude
0

No, no es posible. Pero la mayoría de las NIC le permiten configurar administrativamente el MAC, y puede configurar ambas NIC en el mismo MAC.

En la mayoría de * nix boxen, generalmente puede hacer esto, luego configurar una interfaz LAGG de conmutación por error para ambos (con preferencia para el cableado) para permitirle conectar en caliente la conexión cableada sin desconectar las sesiones TCP.

Chris S
fuente