问题描述
我是StackOverflow的新手,如果需要编辑此帖子以使其更清楚,请告诉我。
目标:通过位于公共子网内的wireguard vpn通过专用子网内的HTTP / HTTPS Web应用程序实例进行访问(这些子网都在同一VPC内)。
情况:
我的VPC具有:
- 1个公共子网,其中包含运行wireguard VPN的ec2实例
- 4个私有子网,分别包含运行单个Web应用程序的ec2(基于bitnami图像) Wireguard实例具有其自己的安全组,其他实例与VPC共享同一安全组。 公共子网中有一个NAT网关,来自私有子网的所有出站连接都路由到该NAT。 我已经建立了一个私有托管区域,并添加了记录以将域名指向私有子网内的实例。 (即sub.test.com指向10.0.1.1等)。 我已启用端口转发,并在wireguard ec2实例上未选中“源/目标”。
结果:我可以通过SSH和Wireguard客户端连接到Wireguard实例,但是无法访问专用子网内的Web应用程序ec2。
问题:如何通过公共子网内的wireguard实例访问私有子网内的实例? (是wireguard配置问题还是路由表问题?)
解决方法
您需要使用console和此document来允许HTTP / HTTPS端口(80/443)。 您输入安全组和传入规则
PS:如果可以通过ssh进行访问,则意味着SSH(端口22)已在计算机的安全组中得到授权。只需添加其他规则HTTP
和HTTPS
查看本教程,其中介绍了如何设置 WireGuard with AWS private subnets 的每个步骤——其中包含一些针对此类问题的故障排除建议。以下是其中的四件事,特别是检查您是否在从 WireGuard 服务器访问私有子网中的应用程序时遇到问题:
- 确保您的 WireGuard 客户端配置中的
AllowedIPs
设置包括您的私有子网(如果整个 VPC 的 IPv4 CIDR 块是10.0.0.0/16
,这可能就是您想要设置客户端的 {{1} }} 到) - 确保网络应用的安全组允许从 WireGuard 服务器的安全组在网络应用使用的端口范围(可能是 TCP 端口
AllowedIPs
和80
)上进行入站访问 - 确保 WireGuard 服务器的安全组允许对 Web 应用程序的出站访问——默认出站规则允许所有内容,这很好——但如果您自定义了出站规则,请确保它们允许对 Web 应用程序的访问Web 应用使用的端口范围上的安全组(可能是 TCP 端口
443
和80
) - 确保您的网络 ACL 不会阻止公共子网和私有子网之间的流量——默认 ACL 允许一切,这同样没问题——但如果您为子网自定义了 ACL,则需要确保流量可以从公共子网流到 Web 应用程序使用的端口范围上的私有子网(可能是 TCP 端口
443
和80
),并从私有子网流回到临时网络上的公共子网WireGuard 服务器运行的操作系统使用的端口范围(TCP443
是安全的)