# 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](../../README.md)). Installiert auf dem Server unter `/usr/local/bin/ipadm`. ## Funktionsweise - Pflegt eine flache Textdatei `/etc/ipadm/hosts` (eine Zeile pro Host: `nameipmaccomment`, `mac` ist `-` wenn nicht gesetzt) als Datenbank für statische Hosts. - `ipadm -u` generiert daraus `/etc/dnsmasq.d/hosts.conf` (pro Host ein `host-record=` für DNS, plus `dhcp-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 vorherige `hosts.conf` automatisch wiederhergestellt und dnsmasq **nicht** neu geladen. - IP-Adressen werden bei `-a`/`-i`/im interaktiven Modus geprüft: müssen in `10.0.0.0/24` liegen und **außerhalb** des dynamischen DHCP-Pools `10.0.0.100–10.0.0.200` (verhindert Kollisionen mit dynamisch vergebenen Adressen). ## Usage ``` ipadm add/edit host (interaktiv) ipadm -l list hosts ipadm -a [-f] [mac address] add host ipadm -c set comment ipadm -i change ip address ipadm -m change mac address ipadm -r rename host ipadm -d 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 ```sh 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: ```sh 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.