簡體   English   中英

使用VPN在Docker容器內訪問專用網絡中的資源

[英]Hitting resources in a private network from within a Docker container using VPN

我在OSX上運行Docker 1.9.1,並且我通過Cisco AnyConnect VPN連接到我的私人工作網絡。 我在Docker容器中運行的服務連接到工作網絡中的數據庫,並且無法從容器內訪問,但可以從OSX中的容器外部訪問。 如果我直接連接到工作網絡,而不是通過VPN連接,也可以從容器內訪問。 我懷疑我可能不得不使用docker-machine VM進行一些網絡配置,但我不確定從這里開始。

如果您使用Virtualbox作為docker-machines的虛擬機管理程序,我建議您將網絡模式設置為Bridged Adapter 這樣,您的VM將像您自己的計算機一樣單獨連接到網絡。 另外,要收集更多信息以進行故障排除,請嘗試從容器計算機命令行ping數據庫主機。 使用docker exec -it <container-name> /bin/bash

檢查Docker Machine VM內的路由

docker-machine ssh default
$ route -n

在新機器上看起來像這樣:

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

如果您創建了大量網絡,即使用docker-compose它可能已創建到堆棧的路由,這會與您的VPN或本地網絡路由沖突。

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;博士

刪除所有網絡應該是安全的

docker network rm $(docker network ls -q)

因為默認情況下不會刪除活動網絡...但是在運行rm命令時要小心:)

我今天遇到了這個問題,並且無需拆分隧道或OpenConnect等不同的VPN客戶端就可以使AnyConnect工作。 所需要的只是一些端口轉發。

我的設置

說明

  1. 測試時使用上述軟件配置。

  2. 確保沒有任何VM正在運行,並且您已從VPN斷開連接。

  3. 修改第47行以指定不安全的注冊表或刪除“--engine-insecure-registry:5000”參數。

  4. 在Mac上的shell中執行以下操作:

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

MacOS Sierra的解決方法。 出於某種原因,啟用NTP會導致docker引擎掛起。 看到:

https://forums.docker.com/t/docker-beta-for-mac-does-not-work-and-hangs-frequently-on-macos-10-12/18109/7

./docker-vpn-helper

設置端口轉發,重新生成TLS證書。

請注意腳本發出的以下行,您需要將它們剪切並粘貼到shell中。

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

連接到AnyConnect VPN並測試docker:

docker run hello-world

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM