?>/script>'; } ?> [SOLVED] ¿Cómo especificar servidor DNS particular para un host? (dnsmasq) Widgets Magazine

Autor Tema: [SOLVED] ¿Cómo especificar servidor DNS particular para un host? (dnsmasq)  (Leído 8217 veces)

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

Desconectado peperfus

  • ******
  • Mensajes: 251
Hola, estoy intentando configurar una opción de servidor dns para un cliente (host) particular de mi red, pero no consigo dar con el parámetro que lo haga, a través de dnsmasq. Me explico:
Tengo configurado mi servidor dhcp con el dns por defecto. Es decir: mis clientes dhcp solicitan resoluciones dns a la misma ip que el servidor dhcp.
Lo que quiero es que para uno particular (al cual asigno IP por su MAC), configurarle un dns distinto.
Tengo esto en el /etc/config/dhcp

Código: [Seleccionar]
config host
        option dns '1'
        option mac '08:00:27:82:0D:B9'
        option ip '192.168.0.148'
        option name 'VIRTUAL'
        option server '1.2.3.4'
        option server '5.6.7.8'

Según tengo entendido, las opciones "server" deberían hacerlo. Sí que me asigna esa IP concreta al cliente, pero los dns no.
He buscado por Internet, pero, o no se puede hacer (cosa que me extraña bastante), o no he visto la opción. He probado también con "nameserver" y tampoco.
(Ojo: no busco especificar una "dhcp-option 6", ya que eso asigna servidor dns, pero para todos los clientes dhcp. Yo quiero uno distinto para un cliente en particular)

¿Alguien sabe cuál es el parámetro correcto? (si es que se puede hacer?)

Gracias
« Última modificación: 15-05-2019, 10:07 (Miércoles) por peperfus »

Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 2247
Re:¿Cómo especificar servidor DNS particular para un host? (dnsmasq (dhcp))
« Respuesta #1 en: 08-05-2019, 18:12 (Miércoles) »
Por lo que he visto, parece que se puede hacer con dnsmasq. Otra cosa es que el dnsmasq de openwrt lo permita, ya que no sé si es el paquete completo.

https://www.linux.com/learn/intro-to-linux/2018/2/dns-and-dhcp-dnsmasq
https://www.linksysinfo.org/index.php?threads/assign-specific-dns-to-only-certain-clients.68865/

Por lo que he visto ahí, y en otros sitios, se pueden definir zonas para el dhcp, y a esas zonas definirles unos parámetros diferentes.
Supongo que en el fichero de configuración se podrán poner las opciones como

Código: [Seleccionar]
option dhcp-range=set:red,192.168.0.5,192.168.0.10
list dhcp-option=tag:red,6,208.122.23.22
list dhcp-option=tag:red,6,208.122.23.23
list dhcp-option=eth,3,192.168.10.0

En las dhcp-option, el 3 son las default gateway que recibirá el cliente, y la opción 6 son los servidores dns. Alguna que otra vez me han hecho falta para definir el gateway distinto al servidor de dhcp.
Pero mirando mis ficheros de configuración, estas opciones las tengo dentro de la zona marcada como
Código: [Seleccionar]
config dhcp
    option interface 'blahblahblah'
   [...]

Supongo que si te permite definir un tag con el host en concreto (o rango de hosts), y otro tag con todo lo demás, puede que te permita hacerlo funcionar como quieres, en la misma interfaz.

Edito: Creo que aquí se ve un ejemplo mejor, que puede que se pueda adaptar: https://stackoverflow.com/questions/22467430/dnsmasq-tags-and-conditional-dns-server

« Última modificación: 08-05-2019, 19:49 (Miércoles) por Tki2000 »

Desconectado peperfus

  • ******
  • Mensajes: 251
Re:¿Cómo especificar servidor DNS particular para un host? (dnsmasq (dhcp))
« Respuesta #2 en: 08-05-2019, 23:05 (Miércoles) »
Gracias, crack.

He visto que está el paquete dnsmasq-full (ahora que lo pienso, creo que ya comentamos algo de esto en otro hilo. Me hago mayor  :-[). Tal vez lo pruebe un día de estos.

Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 2247
Re:¿Cómo especificar servidor DNS particular para un host? (dnsmasq (dhcp))
« Respuesta #3 en: 09-05-2019, 13:19 (Jueves) »
Gracias, crack.

He visto que está el paquete dnsmasq-full (ahora que lo pienso, creo que ya comentamos algo de esto en otro hilo. Me hago mayor  :-[). Tal vez lo pruebe un día de estos.

¿Ah sí? Pues yo también me voy haciendo mayor, porque tampoco me acuerdo...  ;D ;D ;D

Desconectado peperfus

  • ******
  • Mensajes: 251
Joder, acabo de ver que está explicado en la documentación de la wiki de open.

https://openwrt.org/docs/guide-user/base-system/dhcp#classifying_clients_and_assigning_individual_options

Sin embargo, no llego a hacerlo funcionar. Supongo que debe de ser cuestión de sintaxis, aparte de que tampoco termino de entenderlo muy bien. Estaría genial que en la docu, el autor hubiera incluído un ejemplo (es una crítica constructiva).
Esto es lo que tengo en mi /etc/config/dhcp:



Código: [Seleccionar]

config host
        option name 'VIRTUAL'
        option mac '08:00:27:82:0d:89'
        option ip '192.168.0.20'
        option tag 't'
        option networkid 'n'
        list dhcp_option '6,8.8.8.8'


config tag 't'
        option dns-server '8.8.8.8'

config networkid 'n'
        option dns-server '8.8.4.4'

¿A alguien se le ocurre algo?
Como siempre, muchas gracias.

(postdata: estoy probando con el paquete dnsmask-full)
« Última modificación: 13-05-2019, 23:27 (Lunes) por peperfus »

Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 2247
Re:¿Cómo especificar servidor DNS particular para un host? (dnsmasq (dhcp))
« Respuesta #5 en: 14-05-2019, 08:43 (Martes) »
¡Jeje! Pues ya somos dos los que hablamos a ciegas, porque yo tampoco lo he usado ni he visto ningún ejemplo.

Por lo que veo en la documentación : you can tag hosts by the DHCP range they're in (section dhcp)", es decir, el tag va sobre un rango, y veo que tú lo estás poniendo sobre el host, y no sobre el rango de la sección dhcp.
El rango se define con la opción "option dhcp-range"

Código: [Seleccionar]
config dhcp
   option interface 'blahblahblah'
   list dhcp-range=set:lowrange,192.168.0.2,192.168.0.19
   list dhcp-range=set:thishostrange,192.168.0.20,192.168.0.20
   list dhcp-range=set:highrange,192.168.0.21,192.168.0.254
   [masblahblahblah]

config host
        option mac '08:00:27:82:0d:89'
        option ip '192.168.0.20'

config tag 'lowrange'
   option dns-server '192.168.0.1'

config tag 'thishostrange'
   option dns-server '8.8.8.8'

config tag 'highrange'
   option dns-server '192.168.0.1'


Sería bueno que el rango del host al que le quieres poner la configuración especial estuviera en uno de los extremos de direccionamiento, para no romper el rango en tres secciones, sino en dos..., y que tuviera más de una dirección, por si el rango no acepta una sola dirección IP, digamos de la dirección 250 a la 254...

A ver si entre los dos damos con el ejemplo bueno...

Se supone que aquí lo explica, pero sigo sin entenderlo: DNS and DHCP configuration examples

« Última modificación: 14-05-2019, 08:53 (Martes) por Tki2000 »

Desconectado peperfus

  • ******
  • Mensajes: 251
Re:¿Cómo especificar servidor DNS particular para un host? (dnsmasq (dhcp))
« Respuesta #6 en: 14-05-2019, 14:51 (Martes) »
Con mi inglés rudimentario, lo acabo de preguntar en el foro oficial de open. A ver si algún alma caritativa arroja la luz adecuada.

https://forum.openwrt.org/t/how-to-specify-dns-server-for-a-particular-host-dnsmasq/36953
« Última modificación: 14-05-2019, 14:52 (Martes) por peperfus »

Desconectado peperfus

  • ******
  • Mensajes: 251
Re:¿Cómo especificar servidor DNS particular para un host? (dnsmasq (dhcp))
« Respuesta #7 en: 14-05-2019, 19:53 (Martes) »
He conseguido algo.
uci show dhcp me muestra:
bla bla bla

Código: [Seleccionar]
dhcp.@host[0]=host
dhcp.@host[0].name='VIRTUAL'
dhcp.@host[0].tag='VIRTUAL'
dhcp.@host[0].networkid='VIRTUAL'
dhcp.@host[0].mac='08:00:27:82:0d:B9'
dhcp.@host[0].ip='192.168.0.120'

he hecho esto:
Citar
root@OpenWrt:~# uci set dhcp.@host[0].dhcp_option='6,1.2.3.4,5.6.7.8'
root@OpenWrt:~# uci commit
root@OpenWrt:~# service dnsmasq restart
udhcpc: started, v1.28.4
udhcpc: sending discover
udhcpc: no lease, failing

Y me ha funcionado. Es un rollo no poder hacerlo con lo de las tags, aparte que es un cacao: tags, networkid, .... hay un montón de parámetros y en mi humilde opinión, la documentación es algo pobre.

Supongo que esto habrá que ponerlo en el rc.local para que se ejecute cada vez que se encienda o se reinicie el router....
verdad??

A ver si consigo hacer que funcione desde el archivo dhcp.

Cita de: Nota al margen:
La opción dns '1' en los hosts en el archivo dhcp sirve para que dnsmasq resuelva la IP de dicho host al ser preguntado por su nombre.
« Última modificación: 14-05-2019, 21:33 (Martes) por peperfus »

Desconectado peperfus

  • ******
  • Mensajes: 251
Re:¿Cómo especificar servidor DNS particular para un host? (dnsmasq (dhcp))
« Respuesta #8 en: 15-05-2019, 10:06 (Miércoles) »
¡¡¡ Por fin !!!

/etc/config/dhcp
Código: [Seleccionar]
config dnsmasq
...
...

config dhcp 'lan'
...

config dhcp 'wan'
...


config host
        option name 'VIRTUAL'
        option mac '08:00:27:82:0d:B9'
        option ip '192.168.0.120'
        option dns '1'
        option tag 'VIRTUAL'

config tag 'VIRTUAL'
        option dhcp_option '6,11.22.33.44,55.66.77.88'


Para ver las opciones dhcp disponibles
https://www.iana.org/assignments/bootp-dhcp-parameters/bootp-dhcp-parameters.txt

Algunas bastante comunes son:
3 = router
6 = servidores dns (separados por coma)
42 = servidor ntp
150 = servidor tftp

Creo que ya se puede considerar como resuelto.  ;D
Gracias, Tki2000, por el interés y la ayuda.
« Última modificación: 20-05-2019, 20:52 (Lunes) por peperfus »

Desconectado peperfus

  • ******
  • Mensajes: 251
Re:[SOLVED] ¿Cómo especificar servidor DNS particular para un host? (dnsmasq)
« Respuesta #9 en: 14-08-2019, 01:09 (Miércoles) »
No tiene mucho que ver, pero añado aquí una nota para futura referencia.

En caso de haber puesto en DHCP and DNS unos servidores DNS específicos y al hacer nslookup nos siga resolviendo otro, asegurarse de que en cualquier interfaz que tengamos configurada como cliente DHCP (típicamente la interfaz WAN), desactivar "Use dns servers advertised by peer", en la sección Advanced Settings.

Estuve un buen rato rompiéndome la cabeza por culpa de tener esta casilla activada.