- Mitglied seit
- 09. Nov 2018
- Beiträge
- 15
- Punkte für Reaktionen
- 8
- Punkte
- 53
Hallo,
Ich verzweifel langsam aber sicher an der Konfiguration des Netzwerks für meine Docker-Container.
Ausgangslage:
Ich habe ein Heimnetzwerk mit einer DS718 mit DSM 7.2. Als Router ins Internet dient eine IPcop-Firewall, die auch als DHCP-Server (DHCP-Range 192.168.0.65 - 192.168.0.250) dient. Bisher habe ich nur ein IP-Netz( 192.168.0.0 ; 255.255.255.0). Die interne Adresse der Firewall ist 192.168.0.11, Die DS hat die 192.168.0.10 als SLB Bond auf beiden LAN-Ports. Die FW auf der DS ist deaktiviert. Die Funktion "Mehrere Gateways aktivieren" in den Netzwerkeinstellungen (Allgemein -> Erweitert) habe ich aktiviert, aber keine manuelle statische Route gesetzt.) Auf dem Switch dazwischen ist nichts konfiguriert.
Worum geht es:
Ich will auf der DS eine Reihe von Container (so 5-6) betreiben, die über eine eigene IP erreichbar sein sollen.
Allerdings bekomme ich den Netzwerkzugriff für die Container einfach nicht hin. Nachdem was ich gelesen habe geht das nur mit einem mcVLAN. Ich hab schon ein paar Stunden damit verbracht.
Was ich versucht habe:
(Die Interessantesten Versuche durchnummeriert von A-D)
A) ein MCVLAN innerhalb der iprange des normalen Lan mit Gateway innerhalb des MCVLAN:
Und einen Container darin gestartet:
Der hat verhält sich jetzt aber sehr eigenartig.
Von der FW aus ist er erreichbar:
Von der DS nicht:
Von anderen Geräten klappt es ebenfalls, meistens. Aber nicht immer. Keine Ahnung wann und warum.
Der Container selbst kann die Firewall erreichen, aber nicht die DS oder ein Ziel im Internet.
IP Konfiguration und Routing im Container sieht für mich ok aus:
a
(Ich habe auch noch einen anderen Container (mit anderem Base-Image) ausprobiert, am Container liegt es nicht.)
Auf der DS und der FW habe ich testweise verschiedene statische Routen eingetragen, aber alles wieder gelöscht. zumindest auf der DS gibt ers aber routen, die mir nichts sagen:
FW:
Ich habe jetzt schon etliche Stunden damit verbracht, aber es klappt einfach nicht. Was ich (unter anderem) auch schon probiert habe:
B) Ein mcVlan im Bereich des lan (wie bei a)) aber als Gateway in dem Containern direkt die IP der FW. Hat auch nicht wirklich funktioniert. (Die genauen Infos hab ich nicht mehr, kann ich aber natürlich nochmal probieren, wenn es hilft.)
C) Ein Mcvlan aus nur einer IP Adresse (ohne Gateway) aus dem ganze normalen LAN (192.168.0.x) einem Container zuweisen.
Das klappt, und der Container ist sauber erreichbar. Aber ich kann halt nur einen Container so versorgen, und ich kann auch nur ein mcVlan an den Bond der DS hängen. Ich brauche aber mindestens 3 von der DS unabhängige Adressen.
D) Ein mcvlan aus einem anderen IP-Bereich (192.168.1.0): Die Container kamen zur Firewall aber nicht weiter. Von der Firewall oder der DS waren die Container nicht zu erreichen, die FW hat versucht die andressen über die externe Schnittstelle (Internet) zu erreichen. Eine funktionierende statische Route auf der Firewall habe ich nicht hinbekommen.
Ich bin mir fast sicher, das ich irgend einen gewaltigen Denkfehler mache. Die Frage ist nur welchen!
Hat jemand eine Idee?
Ich verzweifel langsam aber sicher an der Konfiguration des Netzwerks für meine Docker-Container.
Ausgangslage:
Ich habe ein Heimnetzwerk mit einer DS718 mit DSM 7.2. Als Router ins Internet dient eine IPcop-Firewall, die auch als DHCP-Server (DHCP-Range 192.168.0.65 - 192.168.0.250) dient. Bisher habe ich nur ein IP-Netz( 192.168.0.0 ; 255.255.255.0). Die interne Adresse der Firewall ist 192.168.0.11, Die DS hat die 192.168.0.10 als SLB Bond auf beiden LAN-Ports. Die FW auf der DS ist deaktiviert. Die Funktion "Mehrere Gateways aktivieren" in den Netzwerkeinstellungen (Allgemein -> Erweitert) habe ich aktiviert, aber keine manuelle statische Route gesetzt.) Auf dem Switch dazwischen ist nichts konfiguriert.
Worum geht es:
Ich will auf der DS eine Reihe von Container (so 5-6) betreiben, die über eine eigene IP erreichbar sein sollen.
Allerdings bekomme ich den Netzwerkzugriff für die Container einfach nicht hin. Nachdem was ich gelesen habe geht das nur mit einem mcVLAN. Ich hab schon ein paar Stunden damit verbracht.
Was ich versucht habe:
(Die Interessantesten Versuche durchnummeriert von A-D)
A) ein MCVLAN innerhalb der iprange des normalen Lan mit Gateway innerhalb des MCVLAN:
Bash:
docker network rm direktLan
sudo docker network create -d macvlan --subnet=192.168.0.0/24 --gateway=192.168.0.32 --ip-range=192.168.0.32/27 -o parent=ovs_bond0 direktLan
Und einen Container darin gestartet:
Bash:
docker stop pihole
docker rm pihole
docker pull pihole/pihole
docker run -d --name=pihole \
-e WEBPASSWORD=XXXXXXXX \
-e DNSMASQ_USER=root \
-m 512m \
-v /volume2/docker/pihole/dnsmasq.d:/etc/dnsmasq.d \
-v /volume2/docker/pihole/pihole:/etc/pihole \
--net=direktLan \
--ip 192.168.0.33 \
--restart always \
pihole/pihole:latest
Der hat verhält sich jetzt aber sehr eigenartig.
Von der FW aus ist er erreichbar:
Bash:
ben@Ben-PC:~$ ssh root@192.168.0.11
Last login: Thu Nov 16 21:07:54 2023 from 192.168.0.85
[root@ipfire ~]# ping 192.168.0.33
PING 192.168.0.33 (192.168.0.33) 56(84) bytes of data.
64 bytes from 192.168.0.33: icmp_seq=1 ttl=64 time=0.839 ms
64 bytes from 192.168.0.33: icmp_seq=2 ttl=64 time=1.73 ms
Von der DS nicht:
Bash:
ben@Ben-PC:~$ ssh admin@192.168.0.10
admin@Synalogy:~$ sudo ping 192.168.0.33
PING 192.168.0.33 (192.168.0.33) 56(84) bytes of data.
From 192.168.0.10 icmp_seq=1 Destination Host Unreachable
From 192.168.0.10 icmp_seq=2 Destination Host Unreachable
Von anderen Geräten klappt es ebenfalls, meistens. Aber nicht immer. Keine Ahnung wann und warum.
Der Container selbst kann die Firewall erreichen, aber nicht die DS oder ein Ziel im Internet.
IP Konfiguration und Routing im Container sieht für mich ok aus:
a
Bash:
dmin@Synalogy:~$ sudo docker exec -it pihole bash
root@93d37c5f2ad0:/# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1
link/sit 0.0.0.0 brd 0.0.0.0
25: eth0@if6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default
link/ether 02:42:c0:a8:00:21 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 192.168.0.33/24 brd 192.168.0.255 scope global eth0
valid_lft forever preferred_lft forever
root@93d37c5f2ad0:/# ip route
default via 192.168.0.32 dev eth0
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.33
root@93d37c5f2ad0:/# ping 192.168.0.10
PING 192.168.0.10 (192.168.0.10) 56(84) bytes of data.
From 192.168.0.33 icmp_seq=1 Destination Host Unreachable
root@93d37c5f2ad0:/# ping 192.168.0.11
PING 192.168.0.11 (192.168.0.11) 56(84) bytes of data.
64 bytes from 192.168.0.11: icmp_seq=1 ttl=64 time=1.10 ms
64 bytes from 192.168.0.11: icmp_seq=2 ttl=64 time=0.552 ms
root@93d37c5f2ad0:/# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
From 192.168.0.33 icmp_seq=1 Destination Host Unreachable
root@93d37c5f2ad0:/# ping [URL='http://web.de']web.de[/URL]
ping: web.de: Temporary failure in name resolution
(Ich habe auch noch einen anderen Container (mit anderem Base-Image) ausprobiert, am Container liegt es nicht.)
Auf der DS und der FW habe ich testweise verschiedene statische Routen eingetragen, aber alles wieder gelöscht. zumindest auf der DS gibt ers aber routen, die mir nichts sagen:
Bash:
admin@Synalogy:~$ ip route
default via 192.168.0.11 dev ovs_bond0 src 192.168.0.10
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
192.168.0.0/24 dev ovs_bond0 proto kernel scope link src 192.168.0.10
FW:
Bash:
ben@Ben-PC:~$ ssh root@192.168.0.11
Last login: Fri Nov 17 15:11:27 2023 from 192.168.0.16
[root@ipfire ~]# ip route
default via 62.155.245.91 dev ppp0
62.155.245.91 dev ppp0 proto kernel scope link src 79.251.37.230
192.168.0.0/24 dev green0 proto kernel scope link src 192.168.0.11
Ich habe jetzt schon etliche Stunden damit verbracht, aber es klappt einfach nicht. Was ich (unter anderem) auch schon probiert habe:
B) Ein mcVlan im Bereich des lan (wie bei a)) aber als Gateway in dem Containern direkt die IP der FW. Hat auch nicht wirklich funktioniert. (Die genauen Infos hab ich nicht mehr, kann ich aber natürlich nochmal probieren, wenn es hilft.)
C) Ein Mcvlan aus nur einer IP Adresse (ohne Gateway) aus dem ganze normalen LAN (192.168.0.x) einem Container zuweisen.
Bash:
#docker network create -d macvlan --subnet=192.168.0.0/24 --gateway=192.168.0.11 --ip-range=192.168.0.2/32 -o parent=ovs_bond0 PiholeLan
Das klappt, und der Container ist sauber erreichbar. Aber ich kann halt nur einen Container so versorgen, und ich kann auch nur ein mcVlan an den Bond der DS hängen. Ich brauche aber mindestens 3 von der DS unabhängige Adressen.
D) Ein mcvlan aus einem anderen IP-Bereich (192.168.1.0): Die Container kamen zur Firewall aber nicht weiter. Von der Firewall oder der DS waren die Container nicht zu erreichen, die FW hat versucht die andressen über die externe Schnittstelle (Internet) zu erreichen. Eine funktionierende statische Route auf der Firewall habe ich nicht hinbekommen.
Ich bin mir fast sicher, das ich irgend einen gewaltigen Denkfehler mache. Die Frage ist nur welchen!
Hat jemand eine Idee?