Revisamos de forma cada uno de los artículos de nuestro espacio con la meta de enseñarte siempre la información con la mayor veracidad y actual.
Solución:
Puede ejecutar dos instancias de dnsmasq
, cada uno con una interfaz diferente en la que escucha. Puedes usar el --interface=X
y --bind-interfaces
opciones para eso. De forma predeterminada, también vincula el dispositivo de bucle invertido lo
y fallará si dos procesos intentan enlazarlo. Utilizar --except-interface=lo
para evitar eso
dnsmasq --interface=eth0 --except-interface=lo --bind-interfaces --dhcp-range=192.168.0.2,192.168.0.10,12h
dnsmasq --interface=eth1 --except-interface=lo --bind-interfaces --dhcp-range=10.0.0.2,10.0.0.10,12h
Asegúrese de que su archivo de configuración esté vacío cuando pruebe esto, ya que siempre anula la línea de comando. También puedes usar --conf-file=/dev/null
.
Como mencioné en el comentario, no estoy muy seguro de cómo esto ayuda a su situación, pero podría ayudar a cualquier otra persona que intente obtener dos rangos de direcciones diferentes en dos interfaces diferentes.
Agregar la interfaz al comienzo de cada parámetro funciona bien para mí. Ejemplo (en dnsmasq.conf):
dhcp-host=eth0,00:22:43:4b:18:43,192.168.0.7
dhcp-host=eth1,00:22:43:4b:18:43,192.168.1.7
Estoy usando la versión:
$ dnsmasq --version
Version de Dnsmasq 2.68 Copyright (c) 2000-2013 Simon Kelley
Si bien la respuesta de @kichik bien puede funcionar, una forma más elegante de lograr lo mismo podría ser usar el localise-queries
directiva y una única dnsmasq
instancia del servidor.
Asumiré que ya configuró sus rangos de DHCP para las diferentes interfaces y ha vinculado dnsmasq
a aquellos.
Agregue el (parcialmente documentado) localise-queries
opción a su dnsmasq.conf
expediente.
# /etc/dnsmasq.conf
localise-queries
Luego, asegúrese de que uno de los archivos que dnsmasq
lecturas para sus anfitriones (como /etc/hosts
) contiene entradas con las direcciones IP para ambas redes, así:
# /etc/hosts
127.0.0.1 dev-vm
192.168.1.1 dev-vm
10.0.0.1 dev-vm
Una alternativa al cambio de /etc/hosts
archivo es especificar las direcciones en su dnsmasq.conf
archivo en su lugar:
# /etc/dnsmasq.conf
localise-queries
host-record=dev-vm,127.0.0.1
host-record=dev-vm,192.168.1.1
host-record=dev-vm,10.0.0.1
Como resultado, en ambos casos, dnsmasq
solo servirá la IP que coincida con la IP y la máscara de red de la interfaz para las consultas recibidas en esa interfaz en particular.
De acuerdo con la página del manual, esto hace lo siguiente:
-y, –localizar-consultas
Devuelve respuestas a consultas de DNS desde /etc/hosts que dependen de la interfaz a través de la cual se recibió la consulta. Si un nombre en /etc/hosts tiene más de una dirección asociada y al menos una de esas direcciones está en la misma subred que la interfaz a la que se envió la consulta, devuelva solo las direcciones en esa subred . Esto permite que un servidor tenga varias direcciones en /etc/hosts correspondientes a cada una de sus interfaces, y los hosts obtendrán la dirección correcta según la red a la que estén conectados. Actualmente, esta función está limitada a IPv4.