Containerport / -dienst, der von allen Host-IPs aus erreichbar ist, mit einer benutzerdefinierten Docker-Bridge, die mit dem IPv4-Alias ​​auf dem Synology NAS verbunden ist

633
Lars Beugelaar

Guten Tag alle.

Ich habe eine Frage zu Docker auf einem Synology NAS (Linux).

Ich habe einen Ubiquity Unifi Controller-Container, der auf diesem NAS ausgeführt wird. (jacobalberti / unifi) Für dieses Image müssen dem Netzwerk bestimmte Ports für die Kommunikation mit Unifi-Hardware zur Verfügung stehen. Die Idee ist, diesen Container über eine andere IP-Adresse verfügbar zu machen als die, unter der alle NAS-Dienste laufen.

Ich bin kein Netzwerktechniker und habe nur begrenzte Kenntnisse über die Möglichkeiten und Fallstricke beim Networking. Ich habe jedoch einige Nachforschungen angestellt und festgestellt, dass es einige Möglichkeiten gibt:

-Karten Sie die Ports 1: 1 auf eine Host-IP-Adresse wie:

docker run-p 192.168.1.3:8443:8443 

-Erstellen Sie ein Docker Bridge-Netzwerk und binden Sie es an eine bestimmte Host-IP-Adresse wie:

docker network create --driver=bridge --gateway=10.0.0.1 \ --subnet=10.0.0.0/24 --ip-range=10.0.0.2/24 \ -o "com.docker.network.bridge.name"="br_UUC" \ -o "com.docker.network.bridge.host_binding_ipv4"="192.168.1.3" UUC_bridge 

Ich habe mich für ein Bridge-Netzwerk entschieden, da dieses Netzwerk in der Synology Docker-Benutzeroberfläche angezeigt wird, und ich kann auf diese Weise den Container in dieser Benutzeroberfläche weiterhin verwalten.

Nach der Erstellung des neuen Netzwerks kann ich den Container mit dem Bridge-Netzwerk UUC_bridge verknüpfen und ein 1: 1-Port-Mapping durchführen.

Ich gehe davon aus, auf den Container-Port 8443 hinter der IP-Adresse 192.168.1.3 zugreifen zu können, während die IP-Adresse des NAS-Hosts 192.168.1.2 den Port 8443 frei hat oder von einem anderen Dienst verwendet wird.

Jetzt brauche ich einen Weg, um die zweite IP-Adresse 192.169.1.3 auf der Host-NIC zu haben. Da ich keine isolierte Vernetzung brauche, sind VLANs meiner Meinung nach keine Lösung. Ich habe gelesen, dass sie auch einen anderen Docker-Netzwerktreiber benötigen. (macvlan)

Ich habe auf der NIC des NAS einen Alias ​​erstellt, indem Sie den folgenden Befehl ausgeführt haben:

ifconfig eth0:0 192.168.1.3 up netmask 255.255.252.0 name UUC 

(Ich mache das, bevor ich die Docker-Brücke schaffe)

Ich weiß, dass es andere Möglichkeiten gibt, dies zu verwenden ip address add, aber der alte Weg funktioniert immer noch.

Die Neworks werden angezeigt als: eth0 und eth0: 0 ifconfig
UUC_bridge ifconfig

und die Bridge-Konfiguration lautet: Docker-Netzwerk inspizieren UUC_bridge

Nun zu den Problemen, mit denen ich konfrontiert bin:

In netstatfinde ich einen Eintrag, der wie folgt aussieht:tcp6 0 0 :::8443 :::* LISTEN 0 6783321 -

Nun sieht es so aus, als ob die Bridge IPv6 ist, wenn man sich die ifconfig-Ausgabe ansieht. Ich weiß nicht, wie das IPv4 <> IPv6-Linking funktioniert, aber ich würde sagen, es sollte kein Problem sein, da ich Docker sagte, dass es die Bridge mit dieser IPv4-Adresse 192.168.1.3 verknüpfen sollte.

Ich kann jetzt über 192.168.1.3:8443 auf die UUC-Schnittstelle zugreifen. Die Sache ist, dass ich auf dieselbe UUC-Schnittstelle auch über 192.168.1.2:8443 zugreifen kann. Ich will das nicht und ich sehe nicht, warum es das tun würde.

Möglicherweise verwendet der UUC-Container 0.0.0.0 intern, um 8443 für alle (Container-) Hostschnittstellen verfügbar zu machen, aber ich habe die Bridge so konfiguriert, dass sie nur mit der IPv4-Adresse 192.168.1.3 verbunden ist.

Weiß jemand, was mir hier fehlt?

Das andere Problem, mit dem ich konfrontiert bin, ist, dass alle Synology-Dienste 0.0.0.0 als Port-Bindungs-IP zu verwenden scheinen, sodass alle Synology-Dienste auch hinter 192.168.1.3 verfügbar sind. Gibt es eine Möglichkeit, die Adresse 192.168.1.3 aus der Gruppe der Host-IP-Adressen zu entfernen, zu der die 0.0.0.0-Adresse der NAS-Verbindung gehört?

Vielen Dank im Voraus!

1

0 Antworten auf die Frage