docker - 大 IP 删除 tcp/ip 路由并阻止与 Docker 容器的通信
问题描述
精简版 :
为什么 Big IP 在建立 VPN 连接时会删除一些路由?
这会通过阻止与 docker 容器的任何通信来影响“Docker Desktop for Windows”,因为到达容器的 TCP/IP 路由被 Big 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
第 3 步:Docker 网络详细信息
返回有关我的 docker 容器的网络子网的技术信息。
我们看到了我的容器的路线
第 5 步:连接我的 VPN 时,大 IP 删除我的 Docker 容器的路由
大IP日志:
第 6 步:建立 VPN 连接后,路由表如下所示
注意:172.29.48.0/20 的路由消失
第 7 步:现在,无法连接 SQL 容器
出现以下错误“建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。”</p>
第 8 步:当我断开我的 VPN 时,删除的路由由 Big IP 恢复
第 9 步:现在,可以访问我的 SQL
结论
大 IP 删除允许与 Docker 容器通信的路由。
我试图:
#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 连接时看到的那样。
#2:我尝试通过 Docker 更改 IP 用户范围以访问容器以使用 192.168.1.x(以前:172.29.48.0)
但和以前一样,Big IP 也删除了这个范围的路由:
解决方案
这个问题是针对您的网络管理员的,他们可能只遵循公司的安全政策,为您提供 VPN 访问权限。
基于K49720803:BIG-IP 边缘客户端操作指南 | 第 3 章:配置 VPN 的常用方法,您会要求禁用“禁止路由表更改”选项,或者尝试添加第二个专用于 Docker 的网卡,希望它根本不会由 VPN 客户端管理 - 但我没有不要尝试。
推荐阅读
- asp.net-mvc - 列表
ViewModel 在 POST 方法中为空 - angular - 如何将userId传递给Angular中的标头
- nix - 如何使用 nix-build -E 构建带有覆盖的包
- python - AttributeError:未知的属性列
- bots - 无法读取 discord.js 中未定义的属性“发送”
- javascript - 使用 express 中间件设置 cookie
- c# - 如何从视图发布输入数据
- vb.net - 通过句柄 VB.net 杀死进程
- javascript - onclick , onkeydown ... 是浏览器 api 还是 JavaScript api?
- ballerina - 是否可以在芭蕾舞演员中传递多个 toml 配置文件?