Windows容器无法访问互联网,但Linux容器可以访问-主机上的VPN客户端处于活动状态

时间:2019-05-28 12:04:10

标签: docker vpn docker-for-windows

我在主机上安装了Stonesoft VPN客户端和Windows的Docker。我的Windows容器似乎无法解析任何主机(甚至是www.google.com)。但是我的Linux容器工作得很好。当我在网络适配器列表中禁用VPN适配器时,Windows容器可以再次访问Internet。但是我需要他们与活跃的VPN合作。

所以我研究了一段时间,并尝试遵循:

  1. 在powershell中检查适配器优先级: Get-NetIPInterface -AddressFamily IPv4 | Sort-Object -Property InterfaceMetric -Descending

enter image description here

据说,主适配器应具有最低的度量值。就我而言,这是以太网,这似乎还不错。 https://github.com/docker/for-win/issues/2760

  1. 使用--dns = 8.8.8.8标志运行映像。没有解决问题。
  2. 我进入了Hyper-V Manager的Virtual-Switch设置。我将名为“ nat”的开关设置为“外部网络”。好吧,那之后我的集装箱就可以上网了。但是它会自动禁用VPN适配器,因此不正确。

  3. 将vEthernet(nat)的IPv4地址和DNS设置为自动。也没有帮助。

  4. 重新安装容器工具,Hyper-V和Docker。没有成功。

  5. 尝试使用旧版Windows的Docker。没有成功。

以下是有关我的环境的一些信息:

我的网络适配器:

enter image description here

我的Docker设置是默认设置。

enter image description here

enter image description here

Hyper-V虚拟交换机:

enter image description here

vEthernet(nat)IPv4设置:

enter image description here

vEthernet(DockerNAT)IPv4设置:

enter image description here

vEthernet(默认交换机)IPv4设置:

enter image description here

我主机上的ipconfig / all:

enter image description here enter image description here

我希望这会有所帮助,并且有人可以回答这个问题。现在已经困扰了我好一阵子了。

编辑:

因为那里没有实际的问题:

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

我刚发现:

1)。跟随:https://docs.docker.com/machine/drivers/hyper-v/#example

2)。启动hyper v(可能需要启用):https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v

3)。然后在hyper v中创建外部虚拟交换机。选择您的wifi适配器。 (应在启用或禁用vpn的情况下使用)。

4)。重新启动。

5)。启动容器并连接到新网络。

docker network ls
docker network connect "John Windows Container Switch" win1809
docker network inspect "John Windows Container Switch"

显示:

        "Containers": {
            "b8c4ae07761fdf082602f836654013b8d83a717cce9156880a80c7542d855842": {
                "Name": "win1809",
                "EndpointID": "e84652fc93fd1fa2970c3bdcad513d8928fc35823a9f8cf0e638926b6091a60c",
                "MacAddress": "00:15:5d:fb:77:dd",
                "IPv4Address": "",
                "IPv6Address": ""

6)。 docker exec -it win1809 powershell

ping www.google.com

Pinging www.google.com [172.217.10.36] with 32 bytes of data:
Reply from 172.217.10.36: bytes=32 time=19ms TTL=118
Reply from 172.217.10.36: bytes=32 time=18ms TTL=118
Reply from 172.217.10.36: bytes=32 time=18ms TTL=118
Reply from 172.217.10.36: bytes=32 time=14ms TTL=118