AWS - 通过 public 子网内的 wireguard 实例访问私有子网内的实例
AWS - Access instances inside private subnets through wireguard instance inside public subnet
我是 Whosebug 的新手,如果我需要编辑此 post 以使其更清楚,请告诉我。
Objective:通过位于 public 子网内的 wireguard vpn 通过私有子网内的 HTTP/HTTPS Web 应用程序实例访问(这些子网都是在同一 VPC 内)。
情况:
我有一个 VPC:
- 1 public 包含 ec2 实例的子网 运行 wireguard VPN
- 4 个私有子网,分别包含 ec2 运行 个单独的网络应用程序(基于 bitnami 图像)
wireguard 实例有自己的安全组,其他实例与 VPC 共享相同的安全组。
public 子网内有一个 NAT 网关,所有来自私有子网的出站连接都路由到该 NAT。
我已经设置了一个私有托管区域并添加了记录以将域名指向私有子网内的实例。 (即 sub.test.com 指向 10.0.1.1,等等)。
我在 wireguard ec2 实例上启用了端口转发并取消选中 'source/destination'。
结果:我可以通过 SSH 和 wireguard 客户端连接到 wireguard 实例,但无法访问私有子网内的 web 应用程序 ec2。
问:如何通过public子网内的wireguard实例访问私有子网内的实例? (是 wireguard 配置问题还是路由 table 问题?)
您需要允许 HTTP/HTTPS 端口 (80/443) 使用您的 console and this document。
您输入您的安全组和传入规则
PS: 如果可以通过ssh访问,说明SSH(22端口)已经在你机器的安全组中授权了。只需添加其他规则 HTTP
和 HTTPS
查看本教程,其中介绍了如何设置 WireGuard with AWS private subnets 的每个步骤——它包括针对此类问题的一些故障排除建议。这里有四件事情,特别是检查您是否在从 WireGuard 服务器访问私有子网中的应用程序时遇到问题:
- 确保 WireGuard 客户端配置中的
AllowedIPs
设置包括您的私有子网(如果整个 VPC 的 IPv4 CIDR 块是 10.0.0.0/16
,这可能是您想要设置客户端的 AllowedIPs
到)
- 确保 Web 应用程序的安全组允许来自 WireGuard 服务器安全组的入站访问 Web 应用程序使用的端口范围(可能是 TCP 端口
80
和 443
)
- 确保 WireGuard 服务器的安全组允许对 Web 应用程序进行出站访问——默认出站规则允许一切,这很好——但如果您自定义了出站规则,请确保它们允许访问Web 应用程序使用的端口范围内的 Web 应用程序安全组(可能是 TCP 端口
80
和 443
)
- 确保您的网络 ACL 没有阻止 public 和私有子网之间的流量——默认 ACL 允许一切,这也很好——但是如果您已经为您的子网自定义了 ACL ,您需要确保流量可以从 public 子网流向 Web 应用程序使用的端口范围内的私有子网(可能是 TCP 端口
80
和 443
),并从私有子网回到 OS 使用的临时端口范围上的 public 子网,WireGuard 服务器是 运行(TCP 1024-65535
是安全的)
我是 Whosebug 的新手,如果我需要编辑此 post 以使其更清楚,请告诉我。
Objective:通过位于 public 子网内的 wireguard vpn 通过私有子网内的 HTTP/HTTPS Web 应用程序实例访问(这些子网都是在同一 VPC 内)。
情况:
我有一个 VPC:
- 1 public 包含 ec2 实例的子网 运行 wireguard VPN
- 4 个私有子网,分别包含 ec2 运行 个单独的网络应用程序(基于 bitnami 图像) wireguard 实例有自己的安全组,其他实例与 VPC 共享相同的安全组。 public 子网内有一个 NAT 网关,所有来自私有子网的出站连接都路由到该 NAT。 我已经设置了一个私有托管区域并添加了记录以将域名指向私有子网内的实例。 (即 sub.test.com 指向 10.0.1.1,等等)。 我在 wireguard ec2 实例上启用了端口转发并取消选中 'source/destination'。
结果:我可以通过 SSH 和 wireguard 客户端连接到 wireguard 实例,但无法访问私有子网内的 web 应用程序 ec2。
问:如何通过public子网内的wireguard实例访问私有子网内的实例? (是 wireguard 配置问题还是路由 table 问题?)
您需要允许 HTTP/HTTPS 端口 (80/443) 使用您的 console and this document。 您输入您的安全组和传入规则
PS: 如果可以通过ssh访问,说明SSH(22端口)已经在你机器的安全组中授权了。只需添加其他规则 HTTP
和 HTTPS
查看本教程,其中介绍了如何设置 WireGuard with AWS private subnets 的每个步骤——它包括针对此类问题的一些故障排除建议。这里有四件事情,特别是检查您是否在从 WireGuard 服务器访问私有子网中的应用程序时遇到问题:
- 确保 WireGuard 客户端配置中的
AllowedIPs
设置包括您的私有子网(如果整个 VPC 的 IPv4 CIDR 块是10.0.0.0/16
,这可能是您想要设置客户端的AllowedIPs
到) - 确保 Web 应用程序的安全组允许来自 WireGuard 服务器安全组的入站访问 Web 应用程序使用的端口范围(可能是 TCP 端口
80
和443
) - 确保 WireGuard 服务器的安全组允许对 Web 应用程序进行出站访问——默认出站规则允许一切,这很好——但如果您自定义了出站规则,请确保它们允许访问Web 应用程序使用的端口范围内的 Web 应用程序安全组(可能是 TCP 端口
80
和443
) - 确保您的网络 ACL 没有阻止 public 和私有子网之间的流量——默认 ACL 允许一切,这也很好——但是如果您已经为您的子网自定义了 ACL ,您需要确保流量可以从 public 子网流向 Web 应用程序使用的端口范围内的私有子网(可能是 TCP 端口
80
和443
),并从私有子网回到 OS 使用的临时端口范围上的 public 子网,WireGuard 服务器是 运行(TCP1024-65535
是安全的)