- Wed 19 January 2022
- Tutoriales
- LEXO
- #OpenWrt, #Dnsmasq, #Redes
¿Usas OpenWrt con/o Dnsmasq para la asignación de direcciones IP por DHCP, quieres asignar IPs fijas y algunas opciones adicionales propias del protocola DHCP como puede ser DNS de acuerdo a la dirección MAC?
Si es así, acá vamos a ver como es que podemos trabajar una solución “dinámica” usando --dhcp-hostsdir
+ --dhcp-optsdir
de una forma que nos simplifique tareas de administración (además de ahorrarnos el hecho de tener que reiniciar el servicio Dnsmasq al agregar nuevos dispositivos o al hacer cambios).
--dhcp-hostsdir=</directorio/donde/colocar/archivo/s/hosts>
opción que tiene la peculiaridad de facilitarnos la asignación IP por direcciones MAC, desde los archivo/s contenidos en el directorio, sea modificación o adición de nuevos archivos así que bien podemos tener un archivo por áreas, grupo de red, etc. y sin tener que reiniciar, solo hay que enviarle un SIGHUP (kill -HUP
La sintaxis para los archivos host es la siguiente:
dhcp-host=<dirección MAC>,<set:marcador>,<nombre del host>,<ip>,<tiempo de vida de la IP>
El <tiempo de vida de la IP>
puede ser: XXh
, XXm
, XXd
e infinite
; donde h son horas, m son minutos, d son días y hasta el infinito.
En caso de no necesitar definir un nombre al host (quedará con el definido por el usuario del host) podemos prescindir de <nombre del host>
incluso en su lugar, podríamos prescindir de la <dirección MAC>
y coincidiendo el <nombre del host>
con el dispositivo de red, asignar la IP deseada (muy buena para quienes tienen el cuidado de cambiar MAC constantemente).
--dhcp-optsdir=</directorio/donde/colocar/archivo/s/opts>
la misma función que la anterior solo que acá es para definir opciones del protocolo DHCP.
La sintaxis para los archivos opts es la siguiente:
<tag:marcador>,<option:nombre de opción>|<número de opción>,<parámetro por asignar>
IP Estática
En el archivo de configuración principal /etc/dnsmasq.conf
definimos el directorio que vamos a utilizar para --dhcp-hostsdir
dhcp-hostsdir=/directorio/donde/colocar/archivo/s/hosts
Ejemplo de un archivo host /directorio/donde/colocar/archivo/s/hosts/hacklab
que a la mac address ff:ff:ff:ff:ff:ff le define el marcador hacklab, el nombre de host rpi3 y la IP 1.2.3.4 con tiempo de vida infinito.
ff:ff:ff:ff:ff:ff,set:hacklab,rpi3,1.2.3.4,infinite
Opciones del protocolo DHCP
En /etc/dnsmasq.conf
asignamos directorio para dhcp-optsdir
dhcp-optsdir=/directorio/donde/colocar/archivo/s/opts
Ejemplo de un archivo opts /directorio/donde/colocar/archivo/s/opts/rpi3
que a la hora de requerir IP por DHCP asigna el servidor de nombres 1.2.3.1 a cualquier host con el marcador hacklab.
tag:hacklab,option:dns-server,1.2.3.1
Acá en el HackLab tenemos un servidor en la DMZ que recibe IP publica por DHCP directo del proveedor con dos interfaces de red, la WAN que va directo al router del ISP y la LAN que va a nuestro router secundario que gestiona la LAN. Total, para no mover tanto en el servidor, se opto por asignarle IP local fija (por DHCP) y no definir la ruta por defecto para que solo quede la del ISP quedando el archivo opts de la siguiente forma:
tag:sinruta,option:router
Y así solo marcamos el servidor con la etiqueta sinruta, no le asigna la ruta por defecto del router secundario y además nos ahorramos meter mano a la configuración del servidor.
Nota: Para conocer con que opciones podemos trabajar el protocolo DHCP una alternativa es ejecutar dnsmasq --help dhcp
;)