?>/script>'; } ?> Peleándome con dnsmasq Widgets Magazine

Autor Tema: Peleándome con dnsmasq  (Leído 4639 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado peperfus

  • ******
  • Mensajes: 251
Peleándome con dnsmasq
« en: 26-08-2018, 13:30 (Domingo) »
Hola, voy al grano:

varios routers en casa. Todos ellos con su nombre de host:
firewall.lan
salon.lan
oficina.lan
...

el firewall.lan hace de servidor DHCP centralizado para todo y también resuelve DNS para todos (él es quien sabe cómo se llama cada host).
Si me voy a un host, digamos salon.lan y le hago
ping oficina.lan
Me dice que no lo conoce, pero si le pregunto ping a google o a donde sea, me contesta OK.
Si le hago un nslookup, me dice que el servidor dns es él mismo (127.0.0.1)
A lo cual, no acabo de entender, por qué resuelve una dirección (google por ej.) y la otra no (oficina.lan)  ???

Aunque si desactivo dnsmasq (/etc/init.d/dnsmasq stop) y le vuelvo a preguntar por oficina, contesta OK y el nslookup ya sí me dice que el serv dns es el firewall (como pretendo que sea, para tenerlo centralizado).

He mirado en luci, en el apartado de dhcp y dns, que hay opción de redirigir (forward) dns, así como opción es especificar local domain y local server. He jugado con esas opciones y nada parece hacer que cuando le pregunto por un host de mi red (oficina.lan) le pase la pregunta al firewall.

¿Alguna idea o algo de luz de por qué pasa esto?
Si desactivo el dnsmasq, va bien, pero ¿no se puede hacer que un host sea su propio servidor dns, excepto para cualquier host desconocido, que se lo pregunte al siguiente serv dns??

EDITO:
La solución finalmente adoptada ha sido deshabilitar dnsmasq en esos nodos y editar el archivo /etc/resolv.conf para ponerle como nameserver la IP del firewall.
« Última modificación: 01-04-2019, 12:51 (Lunes) por peperfus »

Desconectado peperfus

  • ******
  • Mensajes: 251
Re:Peleándome con dnsmasq
« Respuesta #1 en: 26-08-2018, 13:40 (Domingo) »
Si modifico el archivo resolv.conf con mis nameservers favoritos, cuando activo el dnsmasq, lo modifica y se pone él mismo como nameserver (127.0.0.1), quiántome los míos. (Y no me deja cambiarlo)
Cuando desactivo el dnsmasq, me vuelve a dejar el resolv.conf de mi gusto.

Supongo que es "cabezón".

Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 2247
Re:Peleándome con dnsmasq
« Respuesta #2 en: 26-08-2018, 15:33 (Domingo) »
¿Necesitas routers en todos sitios? Es decir, ¿necesitas una wan, por ejemplo en salon.lan? ¿para qué? ¿Con un switch no te basta?
Si el router firewall.lan es el que resuelve todos los nombres, debes desactivar el servidor de dns en los demás routers. Si no quieres desactivarlo, puedes hacer que los pc o dispositivos que se conecten a los demás routers busquen el servidor de dns en firewall.lan. Para ello, en salon.lan, por ejemplo, vete a red -> interfaces -> lan -> avanzado, y en el cuadro DHCP-Options pon 6,192.168.1.1
6 es la opción de servidor dhcp alternativo y 192.168.1.1 es la dirección de tu servidor dns principal (firewall.lan). Los dispositivos que se conecten a salon.lan obtendrán la dirección de firewall.lan como servidor de dns.
Si necesitas ajustar también el default gateway de los dispositivos, lo puedes hacer con 3,192.168.1.1, en DHCP-Options. Cada dispositivo que se conecte al router debe tener de gateway el router más cercano. Yo tuve que ajustarlo para una VPN Cisco, para hacer de gateway al router Cisco a los dispositivos detrás de la VPN.
Pero te aconsejo que no pongas routers como tales para propagar la red, si no los necesitas.
Con la información que das no encuentro el por qué lo has hecho.

Desconectado peperfus

  • ******
  • Mensajes: 251
Re:Peleándome con dnsmasq
« Respuesta #3 en: 27-08-2018, 17:36 (Lunes) »
En realidad son routers tontos, dumb APs...

Las opciones de configuración del DNS y el default gateway del servidor DHCP las conocía, van genial, pero implicaría tener servidor DHCP y lo que quiero es centralizar DHCP y DNS en firewall.lan excepto lo que se suele llamar "override" de algún DNS concreto.
EJEMPLO:

firewall.lan resuelve patata.com a 1.2.3.4 (entiéndase como "general")
salon.lan no conoce patata.com, por lo que se lo pregunta a firewall.lan y devuelve 1.2.3.4 (lo que le ha dicho firewall.lan, que es el servidor DNS centralizado).
Pero.....
Yo quiero poder sobreescribir, modificar esa asociación para el servidor salon.lan:
salon.lan resuelve patata a 5.6.7.8 (entiéndase como "personalizada"). Como conoce la asociación (distinta a la de firewall.lan), devuelve dicha asociación (=5.6.7.8 ), en vez de preguntarle al servidor central firewall.lan
Los clientes dns que pregunten por patata.com a salon.lan recibirán 5.6.7.8, la asociación personalizada. Mientras que los que lo hagan a firewall.lan, recibirán la asociación general (podríamos decir la "default")
¿Se entiende mejor con el ejemplo?

En realidad esto no me hace falta para nada, ni siquiera quiero hacerlo.
Lo que quiero es saber qué es lo que pasa exactamente y por qué no funciona de esta manera, ya que es como lo veo lógico.

------------------------------

Según parece ser..... puede ser pinta de un bug de dnsmasq, según me ha comentado un amigo.
Parece ser que la forma de lograrlo sería (no lo he intentado, pero me imagino que funcionará):
Desactivar dnsmasq en salon.lan
Añadir la IP de firewall.lan al resolv.conf de salon.lan para que le pregunte las IPs de los dominios/hosts desconocidos.
Añadir las resoluciones dns personalizadas al archivo hosts de salon.lan, para que sirva las asociaciones de hosts/dominios conocidas con prioridad, antes que servir la devuelta por firewall.lan (que sólo lo haría en caso de desconocer la asociación).

« Última modificación: 27-08-2018, 18:03 (Lunes) por peperfus »

Desconectado peperfus

  • ******
  • Mensajes: 251
Re:Peleándome con dnsmasq
« Respuesta #4 en: 27-08-2018, 17:40 (Lunes) »
Esto tiene buena pinta.
Cuando lo pruebe, comento.

https://superuser.com/questions/894513/resolv-conf-keeps-getting-overwritten-when-dnsmasq-is-restarted-breaking-dnsmas

Ok, lo acabo de ver bien y probar, pero no es el caso que sucede aquí:
Se acerca, pero no es ese problema exactamente.
Esta solución previene que dnsmasq sobrescriba la lista local de servidores dns con la que recibe del servidor DHCP.
Pero el problema que pasa aquí es que sobrescribe la lista local con su propia lista local. Es de local a local, no del DHCP.
Es decir:
Me sobrescribe:
nameserver (lo que yo quiera)
con
nameserver 127.0.0.1

Supongo que toca desactivar el dnsmasq cabezón.
---------
Confirmo: desactivando dnsmasq funciona lo que quiero hacer:
Editar el archivo /etc/hosts para insertar las resoluciones dns personalizadas y las desconocidas, se las pide al servidor dns general (ya sea estático, o bien el recibido por DHCP).
« Última modificación: 27-08-2018, 18:08 (Lunes) por peperfus »

Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 2247
Re:Peleándome con dnsmasq
« Respuesta #5 en: 28-08-2018, 09:11 (Martes) »
Tener el mismo nombre pero con distintas ips según el segmento de red al que se conecte sólo te va a acarrear quebraderos de cabeza, sobre todo cuando las cachés de los equipos entren en conflicto.
Cada nombre de host sólo debería existir en un servidor centralizado, o tener la misma ip en todos los que existan, pero eso llevaría más trabajo que centralizarlo, para evitar conflictos de ip.
Puedes poner un servidor de dns auxiliar que resuelva los nombres exclusivamente para los que se conecten a él, y no al principal. Simplemente añádelo al listado de servidores dns. La lista de servidores no tiene que ser 2, pueden ser más. En el servidor salon.lan pon como lista de dns, la propia de salon.com, y la de firewall.com, en ese orden. Los equipos preguntarán primero a salon.lan, y si no lo resuelve, le preguntarán a firewall.lan. No sé cómo configuras tú los servidores dns, pero te aconsejo que para resolver los dns, los servidores los encadenes, es decir, el que tiene los servidores dns de internet sería firewall.lan, el servidor de dns salon.lan sería firewall.lan, y si tienes otro router por debajo de salon.lan, éste sería su servidor de dns. De esta forma las peticiones se propagan de uno a otro, hasta encontrar uno que lo resuelva, o se comunique que no se ha encontrado.
De esta forma también puedes restringir la resolución de nombres dependiendo del sitio de conexión. Supón que salon.lan tiene la resolución de un nombre, que no quieres poner en firewall.lan, por ejemplo htpc-privado.lan. Pon ese nombre en el listado de hosts de salon.lan, y pon como lista de servidores dns salon.lan y firewall.lan para servir a los clientes. Cuando un cliente se conecte a salon.lan, le servirá la ip de htpc-privado.lan, pero no si se conecta directamente a firewall.lan, ya que firewall.lan desconoce ese host. Sin embargo, después de resolver el nombre y obtener la ip del servidor, el pc o dispositivo la almacenará en caché, y si te conectas a firewall.lan sin limpiar la caché, seguirá sabiendo cuál es la ip, porque ya se la resolvió salon.lan en su momento.
No capto el por qué quieres poner distintas ips a los mismos nombres de hosts. Un nombre es un alias para una ip, si cambias la ip, deberías cambiar el nombre.

Desconectado peperfus

  • ******
  • Mensajes: 251
Re:Peleándome con dnsmasq
« Respuesta #6 en: 29-08-2018, 01:11 (Miércoles) »
Entiendo tu explicación, es buena idea lo de los dns en cadena (o en cascada, com el "on update cascade" de base de datos). No me ha hecho falta nunca y nunca lo había pensado, pero si tuviera que hacerlo, creo que pondría en práctica esa solución.

El motivo para sobreescribir un host con una IP distinta puede ser (uno de los motivos), jugar o prácticar hacking...
Por ejemplo, un ordenador de mi casa puede ser www.google.com si se lo indico al archivo hosts de salon.lan
Para los demás, www.google.com será el original de google, mientras que para salon.lan y sus clientes será el PC de mi casa.
Ese sería un ejemplo, un posible motivo de querer "sobreescribir" (override).... indicar una IP distinta para un nombre de host que ya existe.
« Última modificación: 29-08-2018, 09:51 (Miércoles) por peperfus »

Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 2247
Re:Peleándome con dnsmasq
« Respuesta #7 en: 29-08-2018, 02:52 (Miércoles) »
Entiendo tu explicación, es buena idea lo de los dns en cadena. No me ha hecho falta nunca y nunca lo había pensado, pero si tuviera que hacerlo, creo que pondría en práctica esa solución.

El motivo para sobreescribir un host con una IP distinta puede ser (uno de los motivos), jugar o prácticar hacking...
Por ejemplo, un ordenador de mi casa puede ser www.google.com si se lo indico al archivo hosts de salon.lan
Para los demás, www.google.com será el original de google, mientras que para salon.lan y sus clientes será el PC de mi casa.
Ese sería un ejemplo, un posible motivo de querer "sobreescribir" (override).... indicar una IP distinta para un nombre de host que ya existe.

Si se sobreescriben es porque el nivel superior de dns lo está resolviendo, y por ende se escribe. ¿Por casualidad el servidor de dns de salon.lan es firewall.lan, o algún servidor de dns de internet?

Desconectado peperfus

  • ******
  • Mensajes: 251
Re:Peleándome con dnsmasq
« Respuesta #8 en: 29-08-2018, 09:59 (Miércoles) »
Entiendo tu explicación, es buena idea lo de los dns en cadena. No me ha hecho falta nunca y nunca lo había pensado, pero si tuviera que hacerlo, creo que pondría en práctica esa solución.

El motivo para sobreescribir un host con una IP distinta puede ser (uno de los motivos), jugar o prácticar hacking...
Por ejemplo, un ordenador de mi casa puede ser www.google.com si se lo indico al archivo hosts de salon.lan
Para los demás, www.google.com será el original de google, mientras que para salon.lan y sus clientes será el PC de mi casa.
Ese sería un ejemplo, un posible motivo de querer "sobreescribir" (override).... indicar una IP distinta para un nombre de host que ya existe.

Si se sobreescriben es porque el nivel superior de dns lo está resolviendo, y por ende se escribe. ¿Por casualidad el servidor de dns de salon.lan es firewall.lan, o algún servidor de dns de internet?

Lo que se sobreescribe es el archivo resolv.conf, que si no me equivoco es en el que se le indica a linux qué servidores (y en qué orden) dns debe utilizar.
Con dnsmasq desactivado, el contenido de resolv.conf es:
Código: [Seleccionar]
# Interface lan
nameserver 192.168.0.254
search lan
Hago un ping desde salon.lan a oficina.lan y como no conoce la IP, se la pregunta a firewall.lan y funciona correctamente.

(192.168.0.254 es firewall.lan)
Pero si activo dnsmasq, lo cambia todo por:
Código: [Seleccionar]
nameserver 127.0.0.1
Y funciona la resolución de cualquier dominio, excepto los míos. Si hago ping a oficina.lan directamente me dice
Código: [Seleccionar]
ping: bad address 'oficina.lan'
Ese es el problema, que no se lo pregunta a firewall.lan y no sé cómo hacerlo.

Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 2247
Re:Peleándome con dnsmasq
« Respuesta #9 en: 29-08-2018, 15:15 (Miércoles) »
Entiendo tu explicación, es buena idea lo de los dns en cadena. No me ha hecho falta nunca y nunca lo había pensado, pero si tuviera que hacerlo, creo que pondría en práctica esa solución.

El motivo para sobreescribir un host con una IP distinta puede ser (uno de los motivos), jugar o prácticar hacking...
Por ejemplo, un ordenador de mi casa puede ser www.google.com si se lo indico al archivo hosts de salon.lan
Para los demás, www.google.com será el original de google, mientras que para salon.lan y sus clientes será el PC de mi casa.
Ese sería un ejemplo, un posible motivo de querer "sobreescribir" (override).... indicar una IP distinta para un nombre de host que ya existe.

Si se sobreescriben es porque el nivel superior de dns lo está resolviendo, y por ende se escribe. ¿Por casualidad el servidor de dns de salon.lan es firewall.lan, o algún servidor de dns de internet?

Lo que se sobreescribe es el archivo resolv.conf, que si no me equivoco es en el que se le indica a linux qué servidores (y en qué orden) dns debe utilizar.
Con dnsmasq desactivado, el contenido de resolv.conf es:
Código: [Seleccionar]
# Interface lan
nameserver 192.168.0.254
search lan
Hago un ping desde salon.lan a oficina.lan y como no conoce la IP, se la pregunta a firewall.lan y funciona correctamente.

(192.168.0.254 es firewall.lan)
Pero si activo dnsmasq, lo cambia todo por:
Código: [Seleccionar]
nameserver 127.0.0.1
Y funciona la resolución de cualquier dominio, excepto los míos. Si hago ping a oficina.lan directamente me dice
Código: [Seleccionar]
ping: bad address 'oficina.lan'
Ese es el problema, que no se lo pregunta a firewall.lan y no sé cómo hacerlo.

Ahora mismo no te sé decir si esta solución cuadra con openwrt, pero aquí hablan de ello, y cómo con DNSMASQ_EXCEPT=lo, o, IGNORE_RESOLVCONF=yes se soluciona
https://raspberrypi.stackexchange.com/questions/37439/proper-way-to-prevent-dnsmasq-from-overwriting-dns-server-list-supplied-by-dhcp

Desconectado peperfus

  • ******
  • Mensajes: 251
Re:Peleándome con dnsmasq
« Respuesta #10 en: 31-08-2018, 00:43 (Viernes) »
Nada no va.
He probado ambas opciones y lo sigue sobreescribiendo.
Creo que voy a dejarlo. No vale la pena. Igual es por la compilación de dnsmasq para open o por la versión o algo así....
Gracias de todas formas por el interés.

Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 2247
Re:Peleándome con dnsmasq
« Respuesta #11 en: 31-08-2018, 10:06 (Viernes) »
Nada no va.
He probado ambas opciones y lo sigue sobreescribiendo.
Creo que voy a dejarlo. No vale la pena. Igual es por la compilación de dnsmasq para open o por la versión o algo así....
Gracias de todas formas por el interés.

Para que funcionen todas las opciones, a lo mejor te hace falta el paquete completo dnsmasq-full

Desconectado peperfus

  • ******
  • Mensajes: 251
Re:Peleándome con dnsmasq
« Respuesta #12 en: 03-09-2018, 23:50 (Lunes) »
Código: [Seleccionar]
root@LIVEBOX:/etc# /etc/init.d/dnsmasq  stop
root@LIVEBOX:/etc# cat /etc/resolv.conf
# Interface lan
nameserver 192.168.0.254
search lan
root@LIVEBOX:/etc# cat /etc/dnsmasq.conf
DNSMASQ_EXCEPT=lo
IGNORE_RESOLVCONF=yes

# Change the following lines if you want dnsmasq to serve SRV
# records.
# You may add multiple srv-host lines.
# The fields are <name>,<target>,<port>,<priority>,<weight>

# A SRV record sending LDAP for the example.com domain to
# ldapserver.example.com port 289
#srv-host=_ldap._tcp.example.com,ldapserver.example.com,389

# Two SRV records for LDAP, each with different priorities
#srv-host=_ldap._tcp.example.com,ldapserver.example.com,389,1
#srv-host=_ldap._tcp.example.com,ldapserver.example.com,389,2

# A SRV record indicating that there is no LDAP server for the domain
# example.com
#srv-host=_ldap._tcp.example.com

# The following line shows how to make dnsmasq serve an arbitrary PTR
# record. This is useful for DNS-SD.
# The fields are <name>,<target>
#ptr-record=_http._tcp.dns-sd-services,"New Employee Page._http._tcp.dns-sd-services"

# Change the following lines to enable dnsmasq to serve TXT records.
# These are used for things like SPF and zeroconf.
# The fields are <name>,<text>,<text>...

#Example SPF.
#txt-record=example.com,"v=spf1 a -all"

#Example zeroconf
#txt-record=_http._tcp.example.com,name=value,paper=A4

# Provide an alias for a "local" DNS name. Note that this _only_ works
# for targets which are names from DHCP or /etc/hosts. Give host
# "bert" another name, bertrand
# The fields are <cname>,<target>
#cname=bertand,bert
root@LIVEBOX:/etc# /etc/init.d/dnsmasq start
root@LIVEBOX:/etc# cat /etc/resolv.conf
search lan
nameserver 127.0.0.1
root@LIVEBOX:/etc#

Nada. Lo mismo. He instalado el dnsmasq-full, añado las opciones, detengo el servicio y lo vuelvo a iniciar y lo vuelve a sobrescribir. Estaré haciendo algo mal?

Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 2247
Re:Peleándome con dnsmasq
« Respuesta #13 en: 04-09-2018, 21:39 (Martes) »
Código: [Seleccionar]
root@LIVEBOX:/etc# /etc/init.d/dnsmasq  stop
root@LIVEBOX:/etc# cat /etc/resolv.conf
# Interface lan
nameserver 192.168.0.254
search lan
root@LIVEBOX:/etc# cat /etc/dnsmasq.conf
DNSMASQ_EXCEPT=lo
IGNORE_RESOLVCONF=yes

# Change the following lines if you want dnsmasq to serve SRV
# records.
# You may add multiple srv-host lines.
# The fields are <name>,<target>,<port>,<priority>,<weight>

# A SRV record sending LDAP for the example.com domain to
# ldapserver.example.com port 289
#srv-host=_ldap._tcp.example.com,ldapserver.example.com,389

# Two SRV records for LDAP, each with different priorities
#srv-host=_ldap._tcp.example.com,ldapserver.example.com,389,1
#srv-host=_ldap._tcp.example.com,ldapserver.example.com,389,2

# A SRV record indicating that there is no LDAP server for the domain
# example.com
#srv-host=_ldap._tcp.example.com

# The following line shows how to make dnsmasq serve an arbitrary PTR
# record. This is useful for DNS-SD.
# The fields are <name>,<target>
#ptr-record=_http._tcp.dns-sd-services,"New Employee Page._http._tcp.dns-sd-services"

# Change the following lines to enable dnsmasq to serve TXT records.
# These are used for things like SPF and zeroconf.
# The fields are <name>,<text>,<text>...

#Example SPF.
#txt-record=example.com,"v=spf1 a -all"

#Example zeroconf
#txt-record=_http._tcp.example.com,name=value,paper=A4

# Provide an alias for a "local" DNS name. Note that this _only_ works
# for targets which are names from DHCP or /etc/hosts. Give host
# "bert" another name, bertrand
# The fields are <cname>,<target>
#cname=bertand,bert
root@LIVEBOX:/etc# /etc/init.d/dnsmasq start
root@LIVEBOX:/etc# cat /etc/resolv.conf
search lan
nameserver 127.0.0.1
root@LIVEBOX:/etc#

Nada. Lo mismo. He instalado el dnsmasq-full, añado las opciones, detengo el servicio y lo vuelvo a iniciar y lo vuelve a sobrescribir. Estaré haciendo algo mal?

No sé si esas opciones son las correctas, ni si hace falta dnsmasq-full. Tampoco sé si en concreto esas opciones se deben poner en ese fichero de configuración, ya que como te dije, la configuración no estaba adaptada a openwrt.
No obstante, aquí he encontrado una plantilla de lo que parece ser un fichero /etc/dnsmasq.conf
http://oss.segetech.com/intra/srv/dnsmasq.conf
Yo intentaría la opción except-interface=lo, que es lo que parece corresponder a lo que hemos estado viendo.

Desconectado peperfus

  • ******
  • Mensajes: 251
Re:Peleándome con dnsmasq
« Respuesta #14 en: 04-09-2018, 22:39 (Martes) »
Nada, lo mismo.
Déjalo, ya tienes tú más interés que yo.
Tampoco me hace falta esta opción; era más que nada curiosidad, pero ya me rindo.
Si no se puede, no se puede; por la razón que sea. No importa.