3.0 KiB
ipadm
Kleines Go-CLI-Tool zur Verwaltung statischer Hosts (DHCP-Reservierung +
DNS-Eintrag) für den dnsmasq-Router auf narcissus. Ersetzt/lehnt sich an das
Original-Tool ipadm (dhcp/bind management, mwx'2021) an, arbeitet aber
gegen unseren dnsmasq-Stack statt isc-dhcp-server/bind9 (siehe
../../README.md).
Installiert auf dem Server unter /usr/local/bin/ipadm.
Funktionsweise
- Pflegt eine flache Textdatei
/etc/ipadm/hosts(eine Zeile pro Host:name<TAB>ip<TAB>mac<TAB>comment,macist-wenn nicht gesetzt) als Datenbank für statische Hosts. ipadm -ugeneriert daraus/etc/dnsmasq.d/hosts.conf(pro Host einhost-record=für DNS, plusdhcp-host=für Hosts mit MAC-Adresse für die DHCP-Reservierung), validiert die komplette dnsmasq-Konfiguration (dnsmasq --test) und lädt dnsmasq bei Erfolg neu (systemctl reload dnsmasq). Schlägt die Validierung fehl, wird die vorherigehosts.confautomatisch wiederhergestellt und dnsmasq nicht neu geladen.- IP-Adressen werden bei
-a/-i/im interaktiven Modus geprüft: müssen in10.0.0.0/24liegen und außerhalb des dynamischen DHCP-Pools10.0.0.100–10.0.0.200(verhindert Kollisionen mit dynamisch vergebenen Adressen).
Usage
ipadm <hostname> add/edit host (interaktiv)
ipadm -l list hosts
ipadm -a [-f] <hostname> <ip address> [mac address] add host
ipadm -c <hostname> <comment> set comment
ipadm -i <hostname> <ip address> change ip address
ipadm -m <hostname> <mac address> change mac address
ipadm -r <old hostname> <new hostname> rename host
ipadm -d <hostname> delete host
ipadm -u update (dnsmasq-Config regenerieren + reload)
ipadm -h this help
Nach jeder Änderung an der Host-DB (-a, -c, -i, -m, -r, -d,
interaktiv) muss ipadm -u ausgeführt werden, damit dnsmasq die Änderung
tatsächlich übernimmt — das Tool weist nach jeder Änderung selbst darauf hin.
Bauen / Installieren
cd tools/ipadm
go build -o ipadm .
install -m 0755 -o root -g root ipadm /usr/local/bin/ipadm
Testen ohne die echte Server-Konfiguration anzufassen
Alle Pfade sind über Umgebungsvariablen überschreibbar:
export IPADM_DB=/tmp/test-hosts
export IPADM_DNSMASQ_HOSTS=/tmp/test-hosts.conf
export IPADM_LAN_CIDR=10.0.0.0/24
export IPADM_POOL_START=10.0.0.100
export IPADM_POOL_END=10.0.0.200
./ipadm -a testhost 10.0.0.50 aa:bb:cc:dd:ee:ff
./ipadm -l
Achtung: ipadm -u ruft trotzdem dnsmasq --test (prüft die echte
System-Konfiguration in /etc/dnsmasq.conf + /etc/dnsmasq.d/) und bei
Erfolg systemctl reload dnsmasq auf, auch im Testmodus — das ist
beabsichtigt (validiert, dass die generierte Datei mit der echten
Umgebung zusammenspielt), aber es reloadet den echten laufenden Dienst.