User Tools

Site Tools


es:doc:howto:dhcp.dnsmasq

Dnsmasq

Dnsmasq es un promotor de DNS y servidor DHCP ligero y fácil de configurar. Está diseñado para proporcionar DNS y opcionalmente DHCP a una pequeña red. Puede servir los nombres de máquinas locales que no están en el DNS global. El servidor DHCP integrado con el servidor DNS permite que máquinas con direcciones asignadas por DHCP aparezcan en el DNS configuradas en cada host o en un archivo central de configuración. Dnsmasq soporta concesiones DHCP estáticas y dinámicas y BOOTP para el arranque de máquinas sin disco.

Está instalado y preconfigurado en OpenWrt. Ver → /etc/config/dhcp.

Configuración

La onfiguración es hecha con la ayuda del archivo de configuración uci: /etc/config/dhcp pero puede usarlo juntamente con el archivo /etc/dnsmasq.conf.

Dependiendo de la configuración del archivo uci puede usar adicionalmente los archivos /etc/ethers y /etc/hosts.

/etc/config/dhcp

/etc/config/dhcp es un archivo de configuración UCI y está documentado exhaustivamente en uci. ¡Casi todos los ajustes pueden ser configurados con él!

/etc/dnsmasq.conf

Además puede usar /etc/dnsmasq.conf, ver arriba.

Ejemplo: Por defecto dnsmasq viene configurado para poner sus hostsen el dominio .lan. Esto es especificado en el archivo de configuración así:

# allow /etc/hosts and dhcp lookups via *.lan
local=/lan/
domain=lan

Puede cambiarse esto hacia donde quiera que su dominio casero vaya a estar. También si desea que sus hosts sean accesibles por su domino casero sin tener que especificar el dominio en su archivo

/etc/hosts

añada la directiva expand-hosts a su archivo /etc/dnsmasq.conf.

Como ejemplo, sin expand-hosts usted sólo puede alcanzar router, ubuntu-desktop y ubuntu-laptop. Con expand-hosts activo usted puede alcanzar router, router.lan, ubuntu-desktop, ubuntu-desktop.lan, etc. Probablemente esto coincide con lo que usted está buscando de todos modos.

Sin este ajuste usted tendría que añadir entradas .lan a su /etc/hosts.

/etc/ethers

En /etc/ethers las concesiones estáticas pueden ser asignadas. Ver → static.leases.

/etc/hosts

En /etc/hosts las entradas DNS son configuradas. dnsmasq usará estas entradas para responder a las peticiones De su red.

Formato:

[IP_address] host_name host_name_short ...

Ejemplo:

192.168.1.1 router OpenWrt localhost
192.168.1.2 debian-server
192.168.1.3 ubuntu-laptop

Puertos DNS y DHCP

DNS necesita los puertos TCP y UDP 53 abiertos en el firewall. DHCP necesita los puertos UDP 67 y 68 abiertos para su zona to/from en el firewall. Ver http://wiki.openwrt.org/doc/recipes/guest-wlan y http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html (viz “–dhcp-alternate-port”) para más información.

Examples

Añadir un DNS secundario

¿Qué debe hacer si usted ya tiene un servidor DNS (servidor DNS secundario) pero quiere que su router (servidor DNS primario) resuelva algunas de las peticiones DNS? Simplemente haga lo siguiente:

rm /etc/resolv.conf

Esto borrará el enlace simbólico resolv.conf. Después debemos añadir la dirección ip del servidor DNS secundario al archivo /etc/resolv.conf

echo "nameserver 192.168.1.2">/etc/resolv.conf

Cambiar 192.168.1.2 por la ip de su servidor DNS después reiniciar o reiniciar el servicio dnsmasq.

reboot

o

killall dnsmasq
/etc/init.d/dnsmasq start

Después usted necesita preparar su servidor DNS secundario para que resuelva peticiones DNS de Internet: ssh en su router y:

cat /tmp/resolv.conf.auto

esto mostrará algo como esto:

nameserver 212.68.193.110
nameserver 212.68.193.196

Copie la información y añádala al archivo /etc/resolv.conf de su servidor DNS secundario: en su servidor DNS secundario haga:

rm /etc/resolv.conf
echo "nameserver 212.68.193.110">>/etc/resolv.conf
echo "nameserver 212.68.193.196">>/etc/resolv.conf

Cambie 212.68.193.110 y 212.68.193.196 por la direcciones IP que ha obtenido con el comando cat /tmp/resolv.conf.auto.

Configurando dnsmasq para redirigir peticiones dns hacia servidores DNS públicos

Si usted quiere usar servidores DNS públicos 1) para resolver peticiones dns públicas puede configurar dnsmasq para ello. Usted puede incluso especificar más de tres servidores de nombres 2).

Para usar Google Public DNS simplemente añada las siguientes líneas a /etc/dnsmasq.conf.

server=8.8.8.8
server=8.8.4.4

En caso de que prefiera usar OpenWrt UCI puede ejecutar estos comandos.

uci add_list dhcp.@dnsmasq[-1].server=8.8.8.8
uci add_list dhcp.@dnsmasq[-1].server=8.8.4.4
uci commit dhcp

También puede editar directamente /etc/config/dhcp.

config dnsmasq
        option domainneeded '1'
        option boguspriv '1'
        option localise_queries '1'
        option local '/lan/'
        option domain 'lan'
        option expandhosts '1'
        option authoritative '1'
        option readethers '1'
        option leasefile '/tmp/dhcp.leases'
        option resolvfile '/tmp/resolv.conf.auto'
        option rebind_protection '0'
        option server '8.8.8.8'
        option server '8.8.4.4'

En caso de que quiera usar OpenDNS (hay 4 servidores DNS públicos)

uci add_list dhcp.@dnsmasq[-1].server=202.67.222.222
uci add_list dhcp.@dnsmasq[-1].server=202.67.220.220
uci add_list dhcp.@dnsmasq[-1].server=202.67.222.220
uci add_list dhcp.@dnsmasq[-1].server=202.67.220.222
uci commit dhcp

Obviamente puede usar otros servidores DNS. Tan sólo envíe un SIGHUP al proceso dnsmasq o reinicie el servicio dnsmasq para aplicar los nuevos servidores DNS de reenvío.

Configurando dnsmasq para usar diferentes rangos IP para cable e inhalámbrico

Suponga que tiene lo siguiente:

vlan0     Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX
          inet addr:192.168.1.1    Bcast:192.168.1.255    Mask:255.255.255.0
eth1      Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX
          inet addr:10.75.9.1      Bcast:10.75.9.255      Mask:255.255.255.0

Simplemente ponga 2 opciones “dhcp-range” en su archivo

/etc/dnsmasq.conf

:

# dhcp-range=[network-id,],[[,],][,]
dhcp-range=lan,192.168.1.101,192.168.1.104,255.255.255.0,24h
dhcp-range=wlan,10.75.9.111,10.75.9.119,255.255.255.0,2h

Puede usar diferentes valores “network-id” con “dhcp-option” para personalizar las opciones con las que su servidor DHCP abastecerá a sus clientes DHCP cableados e inhalámbricos.

por ejemplo

#set the default route for dhcp clients on the wlan side to 10.10.6.33
dhcp-option=wlan,3,10.10.6.33
#set the dns server for the dhcp clients on the wlan side to 10.10.6.33
dhcp-option=wlan,6,10.10.6.33
#set the default route for dhcp clients on the lan side to 10.10.6.1
dhcp-option=lan,3,10.10.6.1
#set the dns server for the dhcp clients on the lan side to 10.10.6.1
dhcp-option=lan,6,10.10.6.1

Configurando dnsmasq para generar respuestas DHCP sólo a clientes conocidos

Hay situaciones en que puede desear que dnsmasq genere direcciones DHCP para clientes conocidos (como los definidos en

/etc/ethers

). Primero declare

lan_dhcp_num=0

para indicar que no se deben generar direcciones. Después modifique el archivo

/etc/init.d/S60dnsmasq

para incluir las líneas

        if [ "${num:-150}" = "0" ]; then
                END=static
        fi

después de las llamadas a

ipcalc.sh

. Reinicie el servicio o reinicie.

Configurando dnsmasq para asociar nombres de máquina a direcciones DHCP

Necesitará las siguientes líneas en su archivo

/etc/dnsmasq.conf

: (Ajuste la dirección IP de su router si no es 192.168.1.1)

dhcp-option=3,192.168.1.1
dhcp-option=6,192.168.1.1

Esto es para dnsmasq en el router. El truco es que el cliente DHCP debe enviar su nombre de máquina durante la negociación DHCP. El archivo

dhclient.conf

puede estar en

/etc/

(debian) o

/etc/dhcp3/

(kubuntu) necesita tener una única línea descomentada y editada:

send host-name "hostname";

Grabe el archivo y reinicie el interfaz. Repita en todos los sistemas de los clientes.

Configurando dnsmasq para transmitir información del servidor WINS

Necesitará la siguiente línea en el archivo

/etc/dnsmasq.conf

: (Ajuste la dirección IP si su servidor WINS no es 192.168.1.2)

dhcp-option=44,192.168.1.2

A medida que sus máquinas liberen y renueven la información DHCP obendrán la dirección del servidor WINS automáticamente.

Configurando dnsmasq para transmitir información a un servidor DNS externo

El siguiente cambio en su archivo /etc/dnsmasq.conf permitirá la configuración automática de sus clientes DHCP para que usen otros servidores DNS diferentes al del router.

dhcp-option=6,ipaddress1,ipaddress2

O puede hacer lo mismo en /etc/config/dhcp:

...
config 'dhcp' 'lan'
	list 'dhcp_option' '6,ipaddress1,ipaddress2'
...

A medida que sus máquinas liberen y renueven la información DHCP obendrán las direcciones de los nuevos servidores DNS automáticamente.

Teléfonos SIP y dnsmasq

Por defecto la opción filterwin2k en dnsmasq está activada, lo que parece causar el bloqueo de las peticiones a los registros SRV.

Los registros SRV son usados por ordenadores no sólo por Windows para encontrar sus controladores de dominio y para ser usados por teléfonos SIP por ejemplo para encontrar el servidor responsable de un determinado domino.

Los registros SRV son como los generalizados registros MX.

Por lo tanto la opción filterwin2k necesita estar desconectada para permitir que los teléfonos SIP que usan dnsmasq como su servidor DNS funcionen.

Comentado en /etc/dnsmasq.conf o desactivado en el interfaz web.

O puede hacer lo mismo en /etc/config/dhcp:

config 'dnsmasq'
	option 'filterwin2k' '0'
...

Filtrado DNS

Troubleshooting

log continuamente lleno de DHCPINFORM / DHCPACK

Windows 7 y otros consultan su configuración de proxy usando DHCP. El problema es que no se detienen hasta que han recibido una respuesta. Esto provoca que el log contenga mucha información sobre estas peticiones, como se ve en este ejemplo inferior (gracias a http://wiki.excito.org por la info).

Jul 1 06:34:09 MorganB3 dnsmasq-dhcp[1638]: DHCPINFORM(br0) 10.69.10.59 00:23:14:c5:33:fc
Jul 1 06:34:09 MorganB3 dnsmasq-dhcp[1638]: DHCPACK(br0) 10.69.10.59 00:23:14:c5:33:fc MorgansVaioF12Z

Para solventar esto editar el archivo /etc/dnsmasq.conf y añadir las siguientes líneas:

# This will tell DHCP clients to not ask for proxy information
# Some clients, like Windows 7, will constantly ask if not told NO
dhcp-option=252,"\n"

y reiniciar dnsmasq con /etc/init.d/dnsmasq restart

Definiendo el Queryport de dnsmasq

El queryport no es el puerto del servidor DNS usado por los cliente DHCP sino que es el puerto saliente que dnsmasq usa para consultar a otros servidores y es parte integral del éxito de dnsmasq asignando valores DNS a los clientes DHCP. Los valores por defecto crean altos números de puerto arbitrariamente en un rangop de puertos. Asignando una opción como “ option queryport '30000' ” en /etc/config/dhcp es posible contreñir estas conexiones al puerto que usted defina. Asegúrese de que su firewall permite conexiones salientes desde el router en el queryport que usted defina.

Como medida de precaución dnsmasq se ejecuta en OpenWrt bajo el usuario “nobody” por lo que no tiene permitido crear sockets de escucha en puertos < 1024. Usando el puerto estándar DNS 53 para estas consultas fallará. El fallo podrá ser encontrado en los logs. Logread mostará un error “ignoring nameserver” como en esta línea:

Jan 01 01:01:01 MyRoutersName daemon.warn dnsmasq[3490]: ignoring nameserver 8.8.8.8 - cannot make/bind socket: Permission denied

No asigne puertos de consulta menores que 1024 to the queryport.

Notas

2)
actualmente el archivo Linux /etc/resolv.conf está limitado a tres servidores de nombres, ver la manpage resolv.conf(5)
es/doc/howto/dhcp.dnsmasq.txt · Last modified: 2018/03/03 20:34 by 116.206.138.77