Blog

dnsmasq DHCP-options

Jeg bryder mig ikke selv om at bruge DHCP-tags i mine dnsmasq-configs, så her er alle de options Dnsmasq selv kender:

~ $ dnsmasq --help dhcp
Known DHCP options:
  1 netmask
  2 time-offset
  3 router
  6 dns-server
  7 log-server
  9 lpr-server
 13 boot-file-size
 15 domain-name
 16 swap-server
 17 root-path
 18 extension-path
 19 ip-forward-enable
 20 non-local-source-routing
 21 policy-filter
 22 max-datagram-reassembly
 23 default-ttl
 26 mtu
 27 all-subnets-local
 31 router-discovery
 32 router-solicitation
 33 static-route
 34 trailer-encapsulation
 35 arp-timeout
 36 ethernet-encap
 37 tcp-ttl
 38 tcp-keepalive
 40 nis-domain
 41 nis-server
 42 ntp-server
 44 netbios-ns
 45 netbios-dd
 46 netbios-nodetype
 47 netbios-scope
 48 x-windows-fs
 49 x-windows-dm
 58 T1
 59 T2
 60 vendor-class
 64 nis+-domain
 65 nis+-server
 66 tftp-server
 67 bootfile-name
 68 mobile-ip-home
 69 smtp-server
 70 pop3-server
 71 nntp-server
 74 irc-server
 77 user-class
 80 rapid-commit
 93 client-arch
 94 client-interface-id
 97 client-machine-id
119 domain-search
120 sip-server
121 classless-static-route
125 vendor-id-encap
255 server-ip-address

Se dem alle på https://www.iana.org/assignments/bootp-dhcp-parameters/bootp-dhcp-parameters.xhtml og https://tools.ietf.org/html/rfc2132.

Jeg er for nylig stødt på jpillora's webproc, som er et lille 'nifty' web-interface som du kan binde et program til. webproc stiller så et web-interface til rådighed, hvor du kan editere i et sæt angivne filer. Det er ikke et synderligt kompliceret web-interface, men derimod finder jeg det befriende simpelt og lige-til  hvad angår både udseende og funktionalitet.


webproc

Eksempel med dnsmasq:

webproc -c /etc/dnsmasq.conf -- dnsmasq --no-daemon


Personligt bruger jeg det i en docker-container, hvor jeg har mountet /opt/dnsmasq til min docker-host:

Dockerfile
FROM ubuntu:latest

LABEL maintainer="aaaa@juu.com"

RUN apt-get update && apt-get upgrade -y

WORKDIR /root/

#Install dnsmasq, curl and webproc
RUN apt-get install dnsmasq curl -y && curl https://i.jpillora.com/webproc | bash

#Initialise configuration files
RUN echo "conf-dir=/root/,*.conf"       >       /etc/dnsmasq.conf

#Fill main.conf with warning if it has not been overwritten at container run
RUN echo "WARNING, empty dns config - create host configuration and rerun container with -v <host path>:/root/conf/dns.conf" > /root/dns.conf
RUN echo "WARNING, empty dhcp config - create host configuration and rerun container with -v <host path>:/root/conf/dhcp.conf" > /root/dhcp.conf

#Start
CMD ./webproc $(for f in *.conf;do echo "-c $f";done) -- dnsmasq --no-daemon -h -R --dhcp-broadcast

Bemærk at "conf-dir=/root/,*.conf" tilføjes til /etc/dnsmasq.conf og at der loopes henover "*.conf"-filerne  i containerens /root-dir i webproc-kommandoen. Da mit /opt/dnsmasq-dir så er mounted til /root vil alle "'.conf" filer automatiske indlæses af hhv. webproc og dnsmasq. Dette er der reelt ingen grund til andet end at jeg bare godt kan lide at have separate config-filer til hhv. DNS-server, DHCP-server og diverse domæner. Det er måske lidt overkill med webinterface til dnsmasq (plus container), men jeg foretrækker at have et web-interface til DNS, da jeg forholdvist ofte editere i mine lokale records. Container-delen er udelukkende spas (smile)