ipadm: Port-Forwarding hinzufügen (-pa/-pl/-pd) + nftables-Include verdrahten
- ipadm verwaltet jetzt auch WAN->LAN Port-Forwards, referenziert per Hostname aus der bestehenden Host-DB (folgt IP-Änderungen automatisch) - ipadm -u generiert zusätzlich /etc/nftables.d/portforward.conf, validiert via 'nft -c -f' und reloadet nftables (Rollback bei ungültiger Config, wie beim dnsmasq-Teil) - /etc/nftables.conf bindet dafür neu /etc/nftables.d/*.conf ein - Host-Store-Locking-Logik in generischen LineStore[T] extrahiert, von Host- und PortForward-Store gemeinsam genutzt
This commit is contained in:
@@ -51,9 +51,11 @@ mehr von Hand in `dnsmasq.d` gepflegt, sondern über das Tool
|
||||
| LAN-Interface | `enp7s0` statisch auf `10.0.0.1/24` | `/etc/network/interfaces` | [`config/network-interfaces`](config/network-interfaces) |
|
||||
| IP-Forwarding | `net.ipv4.ip_forward=1`, persistent über Reboot | `/etc/sysctl.d/99-router-forwarding.conf` | [`config/sysctl.d/99-router-forwarding.conf`](config/sysctl.d/99-router-forwarding.conf) |
|
||||
| NAT | Masquerading `10.0.0.0/24` → raus über `enp3s0` | `/etc/nftables.conf` | [`config/nftables.conf`](config/nftables.conf) |
|
||||
| Port-Forwarding-Include | `/etc/nftables.conf` bindet `/etc/nftables.d/*.conf` ein (dort generiert `ipadm` die Port-Forward-Regeln) | `/etc/nftables.conf` (Zeile am Ende) | [`config/nftables.conf`](config/nftables.conf) |
|
||||
| DHCP + DNS | dnsmasq: DHCP-Pool, Gateway/DNS-Option, DNS-Forwarding | `/etc/dnsmasq.d/lan.conf` | [`config/dnsmasq.d/lan.conf`](config/dnsmasq.d/lan.conf) |
|
||||
| DNS-Includes aktiviert | eine Zeile in `/etc/dnsmasq.conf` einkommentiert: `conf-dir=/etc/dnsmasq.d/,*.conf` | `/etc/dnsmasq.conf` | – (Rest der Datei ist Debian-Standard, nicht gespiegelt) |
|
||||
| Statische Hosts (DHCP-Reservierung + DNS) | von `ipadm` generiert, **nicht** von Hand editieren | `/etc/dnsmasq.d/hosts.conf` (generiert) + `/etc/ipadm/hosts` (Datenbank) | – (live Daten, siehe [`tools/ipadm/`](tools/ipadm/)) |
|
||||
| Port-Forwards (WAN → LAN-Host) | von `ipadm` generiert, **nicht** von Hand editieren | `/etc/nftables.d/portforward.conf` (generiert) + `/etc/ipadm/portforwards` (Datenbank) | – (live Daten, siehe [`tools/ipadm/`](tools/ipadm/)) |
|
||||
| dnsmasq-Resilienz | `Restart=on-failure` (Default war `no`), damit dnsmasq bei einem Boot-Race mit `enp7s0` nicht dauerhaft tot bleibt | `/etc/systemd/system/dnsmasq.service.d/override.conf` | [`config/systemd/dnsmasq.service.d/override.conf`](config/systemd/dnsmasq.service.d/override.conf) |
|
||||
|
||||
Installiertes Paket: `dnsmasq` (übernimmt sowohl DHCP- als auch
|
||||
@@ -141,20 +143,18 @@ address=/server1.lan/10.0.0.10
|
||||
Oder Einträge über `/etc/hosts`-Syntax in einer eigenen Datei einbinden
|
||||
(`addn-hosts=/etc/dnsmasq.d/lan-hosts`).
|
||||
|
||||
### Weitere Firewall-/Portfreigaben (z.B. Port-Forwarding vom WAN ins LAN)
|
||||
### Port-Forwarding (WAN → LAN-Host)
|
||||
|
||||
In `/etc/nftables.conf`, `table inet nat`, eine `chain prerouting` ergänzen,
|
||||
z.B. um Port 8080 vom WAN auf einen LAN-Host weiterzuleiten:
|
||||
Wird über `ipadm` verwaltet, siehe [tools/ipadm/README.md](tools/ipadm/README.md).
|
||||
Kurzform: Zielhost muss zuerst als Host in `ipadm` angelegt sein, dann:
|
||||
|
||||
```
|
||||
chain prerouting {
|
||||
type nat hook prerouting priority dstnat;
|
||||
iifname "enp3s0" tcp dport 8080 dnat to 10.0.0.10:8080
|
||||
}
|
||||
```sh
|
||||
ipadm -pa <hostname> <wan-port> [lan-port] [tcp|udp|both]
|
||||
ipadm -u # generiert /etc/nftables.d/portforward.conf neu + reloadet nftables
|
||||
```
|
||||
|
||||
Danach: `nft -c -f /etc/nftables.conf` (Syntaxcheck) und dann
|
||||
`systemctl reload nftables` bzw. `nft -f /etc/nftables.conf`.
|
||||
Nicht mehr von Hand in `/etc/nftables.conf` eintragen — die Datei bindet
|
||||
dafür `/etc/nftables.d/*.conf` ein, das ist der von `ipadm` verwaltete Teil.
|
||||
|
||||
⚠️ Falls künftig auch der WAN-Eingang gefiltert werden soll (aktuell bewusst
|
||||
offen gelassen), unbedingt zuerst SSH-Zugriff (und alle anderen aktiv
|
||||
|
||||
Reference in New Issue
Block a user