Ich habe mir ein Docker Image gebastelt. Leider funktioniert es nicht so
wie es soll. Bzw. er gibt überhaupt keine Leases raus.
Ich übergebe die DHCP Ports, ich habe die Datenbank - welche auch
angebunden ist (KEA leert die leases). Kea läuft im Container. Auch
läuft die selbe Config auserhalb von Docker ohne jede Probleme. Woran
kann das liegen? Muss ich die Ports separat noch einmal freigeben?
Hat da jemand Erfahrung? Das würde mir sehr helfen :-)
Ich gebe mal die Dateien:
docker-compose.yml
1
version: '3.8'
2
services:
3
srv_dhcp:
4
container_name: srv_c_dhcp
5
restart: always
6
build:
7
context: ./dhcp
8
dockerfile: Dockerfile
9
depends_on:
10
- srv_mysql
11
network_mode: host
12
volumes:
13
- /mnt/hdd2/Dockerfiles/dhcp:/etc/kea/
14
srv_apache:
15
container_name: srv_c_apache
16
restart: always
17
build:
18
context: ./php
19
dockerfile: Dockerfile
20
depends_on:
21
- srv_mysql
22
volumes:
23
- /mnt/hdd2/Dockerfiles/www:/var/www/html/
24
ports:
25
- 80:80
26
srv_mysql:
27
container_name: srv_c_mysql
28
image: mysql
29
restart: always
30
environment:
31
MYSQL_ROOT_PASSWORD: *****
32
MYSQL_DATABASE: draconix
33
MYSQL_USER: draconix
34
MYSQL_PASSWORD: *****
35
MYSQL_PORT: 3306
36
volumes:
37
- /mnt/hdd2/Dockerfiles/db:/var/lib/mysql
38
ports:
39
- "3306:3306"
40
srv_phpmyadmin:
41
container_name: srv_c_phpmyadmin
42
image: phpmyadmin/phpmyadmin
43
ports:
44
- '5000:80'
45
restart: always
46
environment:
47
PMA_HOST: srv_mysql
48
depends_on:
49
- srv_mysql
Dockerfile
1
FROM ubuntu:18.04
2
3
# Update APT and System.
4
RUN apt update && apt upgrade -y
5
RUN apt update && apt install -y kea-dhcp4-server nano
6
7
# Install KEA DHCP Serve
8
9
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
Hmmm schrieb:> Draconix schrieb:>> EXPOSE 67 67/udp>> EXPOSE 68 68/udp>> DHCP-Server brauchen Raw Sockets o.dgl., um direkt Clients bedienen zu> können.
Deswegen benutzt er ja
network_mode: host
in seiner docker-compose.yml.
Draconix schrieb:> RUN service kea-dhcp4-server start
^^^ das läuft einmalig beim Container build.
> ENTRYPOINT ["tail"]> CMD ["-f","/dev/null"]
^^^ das läuft im fertigen Container, wenn du deinen compose-stack
startest.
Sicher, dass das so richtig ist?
Εrnst B. schrieb:> Draconix schrieb:>> RUN service kea-dhcp4-server start> ^^^ das läuft einmalig beim Container build.>>> ENTRYPOINT ["tail"]>> CMD ["-f","/dev/null"]> ^^^ das läuft im fertigen Container, wenn du deinen compose-stack> startest.>> Sicher, dass das so richtig ist?
Nein, das stimmt, das ist nicht richtig so.
Aber auch wenn ich KEA im Container direkt starte (über EXEC bash in den
Container) - dann läuft es.
Hmmm schrieb:> Draconix schrieb:>> EXPOSE 67 67/udp>> EXPOSE 68 68/udp>> DHCP-Server brauchen Raw Sockets o.dgl., um direkt Clients bedienen zu> können.
Guter Ansatz, kann ich RAW Sockets überhaupt in Docker freigeben? Geht
nicht nur TCP und UDP?
Kann es auch sein, das Docker überhaupt keine Broadcasts in die
Container lässt? Aber rein theoretisch braucht es das mit "network_mode:
host" auch überhaupt nicht. Da er ja die kompletten Netzwerk-Ressourcen
/ IP des Hosts nutzt.
Hmmm schrieb:> Draconix schrieb:>> EXPOSE 67 67/udp>> EXPOSE 68 68/udp>> DHCP-Server brauchen Raw Sockets o.dgl., um direkt Clients bedienen zu> können.
Mit "network_mode: host" werden Portmappings auf diesem Container doch
ignoriert oder? Also wäre es relativ egal welche Ports ich dort wohin
binde.
Was aber richtig ist, das in der KEA Config der Broadcast über UDP
abgefangen wird. Was aber auf dem aktuellen Rechner - ohne Docker -
tadellos schon seit einigen Monden seinen Dienst verrichtet.
Rene K. schrieb:> Was aber richtig ist, das in der KEA Config der Broadcast über UDP> abgefangen wird. Was aber auf dem aktuellen Rechner - ohne Docker -> tadellos schon seit einigen Monden seinen Dienst verrichtet.
Laut Doku sollte das aber nicht gehen:
"Using UDP sockets automatically disables the reception of broadcast
packets from directly connected clients. This effectively means that UDP
sockets can be used for relayed traffic only. When using raw sockets,
both the traffic from the directly connected clients and the relayed
traffic are handled."
Default ist "raw", warum weichst Du davon ab?
Ich habe den Fehler nun gefunden. 🤦♂️
Ich habe als Image Ubuntu:18.04 genommen. Dort wird noch die Docker
Version 1.1.n ausgeteilt. Diese jedoch kommt nicht mit der Config klar,
da der Aufbau anders ist, aufgefallen ist mir dies - nachdem ich Kea
nicht als Dienst sondern direkt gestartet habe. Dort bemängelte er die
Kommentare welche mit # voran gestellt war. Überdies hat er auch z. B.
bei Max-Rec. die Werte in einem anderen Format erwartet.
Ich habe das Baseimage nun auf Ubuntu:20.04 laufen, dort wird Docker
1.6.n ausgeliefert und diese schluckt auch meine Konfiguration und es
läuft nun.
Und ja richtig, die Ports müssen auf RAW laufen. Auch meinem Heimserver
laufen sie auf RAW - scheinbar habe ich dies umgestellt als ich
"experimentiert" habe.
Ich danke euch dennoch vielmals.
René