Files
router/tools/ipadm/README.md
T

74 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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:
`name<TAB>ip<TAB>mac<TAB>comment`, `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 <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
```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.