Docker容器内无法通过SNX VPN访问公司服务器问题求助
Docker容器无法通过SNX VPN访问公司内网(仅降级glibc可临时解决)
我最近碰到一个头疼的问题:通过SNX连接公司VPN后,宿主机能正常访问内网服务器,但Docker容器里完全不行,只能靠降级系统包临时解决,想请教各位有没有更好的办法。
环境信息
- 操作系统:最新版Manjaro(内核版本 x86_64 Linux 5.10.15-1-MANJARO)
- VPN客户端:SNX(构建版本 800010003)
- Docker版本:20.10.3(构建号 48d30b5b32)
问题详情
用SNX连上公司VPN后,宿主机不管是用主机名还是IP,都能ping通内网的company-server,但启动Docker容器测试时,不管是解析主机名还是直接用IP,都失败:
[maurice@laptop ~ ]$ docker run --rm alpine ping company-server ping: bad address 'company-server'
直接用IP执行ping <服务器IP>也同样无法连通。
已排查的内容
我检查了容器内的DNS配置,/etc/resolv.conf看起来是正常的,和宿主机的配置一致:
[maurice@laptop ~ ]$ docker run --rm alpine cat /etc/resolv.conf # Generated by NetworkManager search lan nameserver 10.1.0.250 nameserver 10.1.0.253 nameserver 192.168.86.1
临时解决办法
我偶然发现把几个系统包降级到指定版本后,容器就能正常访问内网了:
- 将
glibc和lib32-glibc降级到2.32-5版本 - 由于依赖关系,同步把
gcc、gcc-libs和lib32-gcc-libs降级到10.2.0-4版本
但这毕竟是临时方案,我想找到根本原因,避免每次系统更新都要降级。
补充测试结果
- 在全新安装的Pop OS 20.10系统里测试,遇到了一模一样的问题
- 换成OpenVPN连接VPN的话,容器访问内网完全正常,但公司要求必须用SNX,所以OpenVPN没法替代
我已经折腾好几天了,试了各种Docker网络配置调整都没用,希望各位能帮忙分析下问题出在哪,或者提供更稳定的解决办法!
内容的提问来源于stack exchange,提问作者Maurice
相关产品推荐
相关产品推荐

