Docker Swarm/Traefik/OpenVPN 设置:限制 traefik 前端访问 VPN

Docker Swarm/Traefik/OpenVPN 设置:限制 traefik 前端访问 VPN

我有以下设置:

  • 具有多个子网的 AWS VPC
  • EC2 实例上的 Docker Swarm 单节点
  • AWS 负载均衡器将 HTTP/HTTPS 流量路由到各种服务器(包括 EC2 实例)
  • OpenVPN Docker 容器(桥接网络,将端口绑定到主机),在 EC2 实例上运行
  • Docker Swarm 中的 Traefik v1.7 在 EC2 实例上运行多个前端

我想要实现的目标:

需要通过 VPN 访问 Traefik Frontends 的子集。

我在 AWS 上还有其他服务(例如 RDS),其 SecurityGroup 配置为仅允许从子网(VPC 的子网)内部访问,运行良好。当我断开与 VPN 的连接时,我无法访问它们,反之亦然。

但是,当尝试在 Traefik 中添加具有源范围限制的白名单时,无论我是否在 VPN 内部,我总是收到 403 错误。

我对入口点使用以下配置:

Name:http
Address::80
ProxyProtocol.TrustedIPs:172.31.16.0/20,172.31.20.0/20 
ForwardedHeaders.TrustedIPs:172.31.16.0/20,172.31.20.0/20 
WhiteList.UseXForwardedFor:true

我在目标容器上添加了以下限制:

traefik.frontend.whiteList.sourceRange=172.31.16.0/20,172.31.20.0/20 

Traefik 日志显示以下内容:

VPN 请求 -> EC2 实例的 IP(对互联网公开)

非 VPN 请求 -> 我的机器/互联网提供商的 IP

当我将源范围更改为 EC2 服务器实例 IP 的 IP 时,一切都按预期工作,但是,我更喜欢允许我使用子网范围的解决方案(以防添加新服务器)。

相关内容