son servidores servidor que nombres los funcionamiento funciona funcion ejemplos direccion cumplen como dns virtual-machine dnsmasq

dns - que - servidores de nombres



dnsmasq, sirve diferentes direcciones ip basadas en la interfaz utilizada (4)

Básicamente, mi problema es que estoy ejecutando una máquina virtual para desarrollar sitios web en.

La máquina host tiene su dns que apunta a la Vm que ejecuta dnsmasq que resuelve las direcciones de varios sitios de desarrollo, es decir, test.mysite.vm, etc.

El problema es que cuando salgo de mi red de trabajo a mi red doméstica, todo se interrumpe porque cambia la IP de vm. ¿Es posible servir direcciones IP diferentes según la interfaz de la que proviene la solicitud? ¿O debería tratar de abordar esto de una manera completamente diferente?

¡Gracias por tu ayuda!

Resulta que había un enfoque mucho más fácil para esto después de todo ...

Ahora instalo 2 interfaces en la VM y no necesito usar dnsmasq.

La primera es solo una interfaz puente / compartida que le permite a la VM usar la conexión a Internet disponible para el host con un reinicio de la red cada vez que me desplazo de la oficina.

El segundo es una conexión privada a mi host de VM que tiene una dirección IP estática. Esta es la interfaz que utilizo para conectar y enlazar servicios como nginx, mysql, etc.


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 el lanzamiento:

$ dnsmasq --version Version de Dnsmasq 2.68 Copyright (c) 2000-2013 Simon Kelley


Alternativamente, también puede crear múltiples archivos de configuración en /etc/dnsmasq.d/ , uno para cada interfaz en la que desee servir dhcp.

Por ejemplo, si tiene dos interfaces inalámbricas llamadas wlan0 y wlan1 , y desea servir dhcp en ellas gracias a dnsmasq, puede crear dos archivos en /etc/dnsmasq.d/ para configurar cada interfaz:

/etc/dnsmasq.d/dnsmasq-wlan0.conf :

interface=wlan0 # Use interface wlan0 listen-address=10.0.0.1 # Explicitly specify the address to listen on bind-interfaces # Bind to the interface to make sure we aren''t sending things elsewhere server=8.8.8.8 # Forward DNS requests to Google DNS domain-needed # Don''t forward short names bogus-priv # Never forward addresses in the non-routed address spaces. dhcp-range=10.0.0.50,10.0.0.150,12h # Assign IP addresses between 10.0.0.50 and 10.0.0.150 with a 12 hour lease time

/etc/dnsmasq.d/dnsmasq-wlan1.conf :

interface=wlan1 # Use interface wlan0 listen-address=20.0.0.1 # Explicitly specify the address to listen on bind-interfaces # Bind to the interface to make sure we aren''t sending things elsewhere server=8.8.8.8 # Forward DNS requests to Google DNS domain-needed # Don''t forward short names bogus-priv # Never forward addresses in the non-routed address spaces. dhcp-range=20.0.0.50,20.0.0.150,12h # Assign IP addresses between 20.0.0.50 and 20.0.0.150 with a 12 hour lease time

Para mí, esa es una forma muy limpia de configurar su sistema y hacer que la configuración persista entre los reinicios.


Si bien la respuesta de @ kichik puede funcionar, una forma más elegante de lograr lo mismo podría ser utilizar la directiva de localise-queries y una única instancia de servidor dnsmasq .

Asumiré que ya configuró sus rangos DHCP para las diferentes interfaces y que ha enlazado dnsmasq a esos.

Agregue la opción de localise-queries (parcialmente documentada) a su archivo dnsmasq.conf .

# /etc/dnsmasq.conf localise-queries

Luego, asegúrese de que uno de los archivos que dnsmasq lee para sus hosts (como /etc/hosts ) contenga entradas con las direcciones IP para ambas redes, como esto:

# /etc/hosts 127.0.0.1 dev-vm 192.168.1.1 dev-vm 10.0.0.1 dev-vm

Una alternativa a cambiar el /etc/hosts es especificar las direcciones en su archivo dnsmasq.conf 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 servirá solo 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.

Según la página del manual , esto hace lo siguiente:

-y, --localizar-consultas

Devuelva las respuestas a las consultas de DNS de / etc / hosts que dependen de la interfaz en la que 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 instalación está limitada a IPv4.


Puede ejecutar dos instancias de dnsmasq , cada una con una interfaz diferente que escucha. Puede usar las --interface=X y --bind-interfaces para eso. Por defecto, también vincula el dispositivo de bucle invertido y fallará si dos procesos intentan vincularlo. Use --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 lo pruebe, ya que siempre anula la línea de comandos. También puedes usar --conf-file=/dev/null .

Como mencioné en el comentario, no estoy muy seguro de cómo esto ayuda en su situación, pero podría ayudar a cualquier otra persona que intente obtener dos rangos de direcciones diferentes en dos interfaces diferentes.