Ressourcen in einem privaten Netzwerk innerhalb eines Docker-Containers mithilfe von VPN treffen

8

Ich verwende Docker 1.9.1 unter OSX und bin mit meinem privaten Arbeitsnetzwerk mit Cisco AnyConnect VPN verbunden. Ein Dienst, den ich in einem Docker-Container ausfühle, stellt eine Verbindung zu einer Datenbank innerhalb des Arbeitsnetzwerks her und ist innerhalb des Containers nicht erreichbar, aber von außerhalb des Containers in OSX erreichbar. Es ist auch von innerhalb des Containers erreichbar, wenn ich direkt mit dem Arbeitsnetzwerk verbunden bin, nicht über VPN. Ich vermute, dass ich einige Netzwerkkonfiguration mit der Docker-Maschine VM tun muss, aber ich bin nicht sicher, wohin von hier aus gehen.

    
Jared 03.01.2016, 20:57
quelle

3 Antworten

4

Wenn Sie Virtualbox als Hypervisor für die Docker-Maschinen verwenden, sollten Sie Ihren Netzwerkmodus als Bridged Adapter festlegen. Auf diese Weise wird Ihre VM wie Ihr eigener Computer individuell mit dem Netzwerk verbunden. Um weitere Informationen zur Fehlerbehebung zu erhalten, versuchen Sie, den db-Hostcomputer über die Befehlszeile des Containercomputers anzupingen. Verwende docker exec -it <container-name> /bin/bash

    
Miad Abrin 22.07.2016 17:31
quelle
2

Überprüfen Sie Ihr Routing in der Docker Machine VM mit

%Vor%

Das sieht so auf einer frischen Maschine aus:

docker@default:~$ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.0.2.2 0.0.0.0 UG 1 0 0 eth0 10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 127.0.0.1 0.0.0.0 255.255.255.255 UH 0 0 0 lo 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 192.168.99.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

Wenn Sie viele Netzwerke erstellt haben, d. h. mit docker-compose , wurden möglicherweise Routen zu Stapeln erstellt, die in Konflikt mit Ihren VPN- oder lokalen Netzwerkrouten stehen.

docker@dev15:~$ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.0.2.2 0.0.0.0 UG 1 0 0 eth0 10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 127.0.0.1 0.0.0.0 255.255.255.255 UH 0 0 0 lo 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-7400365dbd39 172.25.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-4db568a601b4 [...] 192.168.80.0 0.0.0.0 255.255.240.0 U 0 0 0 br-97690a1b4313 192.168.105.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

TL; dr

Es sollte sicher sein, alle Netzwerke mit

zu entfernen %Vor%

da aktive Netzwerke nicht standardmäßig entfernt werden ... aber seien Sie dennoch vorsichtig, wenn Sie rm Befehle ausführen:)

    
schmunk 27.07.2016 12:27
quelle
2

Ich bin heute auf dieses Problem gestoßen und habe AnyConnect dazu gebracht, ohne Split-Tunneling oder einen anderen VPN-Client wie OpenConnect zu arbeiten. Es brauchte nur ein bisschen Portweiterleitung.

Mein Setup

  • MacOS Sierra 10.12
  • VirtualBox 5.0.26
  • Docker ToolBox 1.12.2
  • docker-vpn-helper-Skript befindet sich unter Ссылка

Anweisungen

  1. Beim Testen wurde die obige Softwarekonfiguration verwendet.

  2. Stellen Sie sicher, dass keine VMs ausgeführt werden und Sie die Verbindung zum VPN getrennt haben.

  3. Ändern Sie Zeile 47, um entweder Ihre unsichere Registrierung anzugeben oder den Parameter "--engine-insecure-registry: 5000" zu löschen.

  4. Führen Sie Folgendes in einer Shell auf Ihrem Mac aus:

sudo launchctl unload /System/Library/LaunchDaemons/org.ntp.ntpd.plist

Workaround für MacOS Sierra. Aus irgendeinem Grund führt die Aktivierung von NTP dazu, dass die Docker-Engine hängen bleibt. Siehe:

Ссылка

./docker-vpn-helper

Richtet die Portweiterleitung ein, regeneriert TLS-Zertifikate.

Achten Sie auf die folgenden Zeilen, die vom Skript ausgegeben werden, die Sie ausschneiden und in Ihre Shell einfügen müssen.

export DOCKER_HOST=tcp://localhost:2376 export DOCKER_CERT_PATH=/Users/<username>/.docker/machine/machines/default export DOCKER_MACHINE_NAME=default

Verbinden Sie sich mit Ihrem AnyConnect VPN und testen Sie das Andockfenster:

docker run hello-world

    
Phil Podlevsky 16.10.2016 19:17
quelle