微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

大 IP 删除 tcp/ip 路由并阻止与 Docker 容器的通信

如何解决大 IP 删除 tcp/ip 路由并阻止与 Docker 容器的通信

简短版本:

为什么Big IP在建立VPN连接时会删除一些路由?

这会通过阻止与 docker 容器的任何通信来影响“Windows Docker 桌面”,因为到达容器的 TCP/IP 路由被大 IP 删除

长版:

上下文:Docker 用于在容器中运行应用程序(Microsoft sql Server)。与容器的通信由Docker创建的NAT接口完成。

问题描述:Big IP 运行时无法连接到我的 Docker 容器。

概述:当我启动包含 sql Server 的新 docker 容器时,我可以连接它并执行 sql 查询……但是如果我开始使用 Big IP 连接 ICN,则无法连接到我的运行 sql Server 的 Docker 容器是可能的......即使我的容器仍在运行(还有 sql 服务器)

根本原因:到我的 Docker 容器的 TCP/IP 路由被 Big Ip 删除

一步一步重现

第 1 步:启动我的 Docker 容器

docker run -e "ACCEPT_EULA=Y" --name MyLocalServer -p 1433:1433 -e "SA_PASSWORD=XXXXX" -d microsoft/mssql-server-windows-developer

第 2 步:能够连接到位于 Docker 容器中的 sql

enter image description here

第 3 步:Docker 网络详细信息

返回有关我的 docker 容器的网络子网的技术信息。

enter image description here

第 4 步:VPN 连接前的路由表

我们看到了我的容器的路线

enter image description here

第 5 步:连接我的 VPN 时,大 IP 删除我的 Docker 容器的路由

大IP日志:

enter image description here

第六步:VPN连接建立后路由表如下图

注意:172.29.48.0/20的路由消失

enter image description here

第 7 步:现在,无法连接到 sql 容器

出现以下错误“与 sql Server 建立连接时发生与网络相关或特定于实例的错误。”

enter image description here

第 8 步:当我断开 VPN 连接时,删除的路由将通过 Big IP 恢复

enter image description here

第 9 步:现在,可以访问我的 sql

enter image description here

结论

允许与 Docker 容器通信的大 IP 删除路由。

我尝试过:

#1 : 使用以下命令在 Big Ip 连接后手动添加路由:

  *route add 172.29.48.0 mask 255.255.240.0 0.0.0.0 METRIC 10 IF 34*

…但是 Big IP 会自动删除路由表中的新条目,就像之前在 BIG IP 连接时看到的那样。

enter image description here

#2 :我尝试通过 Docker 更改 IP 用户的范围以访问容器以使用 192.168.1.x(以前:172.29.48.0)

enter image description here

但和以前一样,Big IP 也会删除此范围的路由:

enter image description here

解决方法

这个问题是针对您的网络管理员的,他可能只遵守为您提供 VPN 访问权限的公司的安全政策。

基于 K49720803: BIG-IP Edge Client operations guide | Chapter 3: Common approaches to configuring VPN,您会要求禁用禁止路由表更改选项,或者尝试添加第二块专用于 Docker 的网卡,希望它不会被管理VPN 客户端 - 但我没有尝试。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?