3.4 KiB
3.4 KiB
Docker IP Addr Manager
Docker IP Addr Manager ger ett enkelt GUI i ZimaOS för att hantera host-IP-aliaser som används i portbindings (IP:PORT).
Exempel: istället för att köra ip addr add 10.0.4.2/16 dev eth0 via SSH, kan du skapa en post i GUI och aktivera den.
Funktioner (v1)
- CRUD för IP-poster:
name,ip,cidr,device. - Enable/disable per post:
- enable =>
ip addr add <ip>/<cidr> dev <device> - disable =>
ip addr del <ip>/<cidr> dev <device>
- enable =>
- Sorterbar tabell: namn, IP-adress, used/unused, containernamn, device, enable/disable.
- Used/unused-kontroll via Docker API (
NetworkSettings.Ports) med exaktHostIp-match. - Include stopped containers i used-kontroll.
- Fail-closed:
- disable blockeras om IP används av minst en container,
- delete blockeras om posten är enabled eller used,
- disable/delete blockeras om Docker-usage inte kan verifieras.
- Startup reconcile: enabled-poster återappliceras vid appstart.
- Manuell refresh-knapp (ingen websocket i v1).
Portar
${APP_PORT:-31810}: webbgränssnitt/API.127.0.0.1:2375(socket-proxy, valfritt): lokal Docker TCP proxy för alternativ endpoint.
Volymer
/DATA/AppData/$AppID/data:/data- persistent lagring av IP-poster.
/var/run/docker.sock:/var/run/docker.sock:ro- Docker metadata för used/unused-kontroll.
Privilegier
network_mode: hostcap_add: [NET_ADMIN]security_opt: ["no-new-privileges:true"]
Säkerhetsavvikelser
Denna app använder högrisk-inställningar och de är avsiktliga:
network_mode: host- mount av
/var/run/docker.sock
Varför det behövs
ip addr add/delmåste köras i hostens nätverksnamespace för att påverka hostens interface (ex.eth0).- Used/unused-status behöver läsas från Docker container metadata.
Alternativ som utvärderats
- Extern host-agent utanför Docker: bättre isolering men kräver separat installation utanför appstore.
- nsenter-helper: mer komplex driftsmodell och högre implementationsoverhead för v1.
- Endast Docker TCP endpoint utan socket: stöds, men default är unix-socket för enklare baseline i ZimaOS.
Risker
- Host network +
NET_ADMINkan påverka hostens nätverk direkt vid felaktig konfiguration. - Docker socket-access innebär insyn i container-metadata och behöver hanteras med strikt kontroll.
Riskreducering
- Minsta capability för nätverksoperationer (
NET_ADMIN), inteprivileged: true. no-new-privileges:true.- Fail-closed blockering vid osäker Docker-usage.
- Valbar socket-proxy med read-only Docker socket och endpoint-begränsning.
Konfiguration
Viktiga environment-variabler:
APP_PORT(default31810)DOCKER_API_URL(defaultunix:///var/run/docker.sock)- alternativt
http://127.0.0.1:2375för socket-proxy.
- alternativt
DOCKER_TIMEOUT_SECONDS(default3)STATE_FILE(default/data/entries.json)
Integrationstester
Kör:
./Apps/docker-ip-addr-manager/tests/run_integration_tests.sh
Testerna mockar Docker API och ip-kommandoflöde och verifierar:
- exakt
HostIp-matchning, - fail-closed disable/delete,
- blockering vid enabled/used,
- startup reconcile av enabled-poster.
Auth-notis
Ingen auth ingår i v1.
Auth/autorisering ska implementeras i en senare version och är en uttalad roadmap-punkt.
Roadmap (ej v1)
- WebSocket-baserad live-uppdatering av used-status.
- DNS-integration (Cloudflare/lokal DNS) kopplat till IP-poster och hostnamn.