通过 VPC 将 AWS *** NAT 到 AWS IOT
Posted
技术标签:
【中文标题】通过 VPC 将 AWS *** NAT 到 AWS IOT【英文标题】:NAT AWS *** to AWS IOT via VPC 【发布时间】:2018-09-27 05:14:56 【问题描述】:我的公司设备有一个专用的 M2M GSM 网络。 我想将流量从我的设备发送到 AWS IOT,但 M2M 提供商不允许从其 sim 卡访问互联网,它只提供与私有网络的 IPSec 连接。
我现在在将 IPSec 连接配置到 AWS VPC 时遇到问题,我的模拟用户可以成功 ping 我的 AWS VPC 中的所有实例。然而,我想要的是让我的模拟市民访问 AWS IOT。
我做了什么:
-
我用AWS third scenario 配置了我的***。我有一个 CIDR 为 192.168.0.0/24 的公共网络和一个 CIDR 为 192.168.1.0/24 的专用网络。我的 *** 有一条用于 M2M 网络的静态路由 CIDR 10.1.128.0/14。
然后我在我的公共网络中启动了一个 EC2 Nat 实例。
我在我的 VPC 主路由表中添加了一条路由规则,以将到 0.0.0.0/0 的流量路由到我的 NAT 实例。
我在我的 VPC 的私有网络中启动了一个 EC2 实例并尝试从它访问互联网,这项工作我可以看到流量通过我的 nat 实例。所以我假设我的 nat 和路由配置良好。
但是我仍然无法从我的 sim 卡访问互联网,流量甚至没有路由到我的 NAT 实例。根据John Rotenstein's answer*** 流量不会使用我的路由规则。
AWS *** 是否会丢弃未发往 VPC 或 *** 的 CIDR 的流量?这样做有安全原因吗? 如果是这种情况,有没有办法为 *** 的流量自定义路由规则?或者是在 EC2 实例中使用自定义 *** 的唯一解决方案?
感谢您的帮助。
【问题讨论】:
您可以启用 AWS 流日志(VPC 或子网)来捕获到您的 *** 和流出的流量详细信息。这将为您提供清晰的洞察力,让您了解幕后发生的事情。 您好,感谢您的帮助。正如你所说,我为我的 VPC 启用了流日志。之后,我尝试从我的一个 sim 中直接 ping 一个 EC2 实例,并在 Flow Log 中查看接受的数据包。但是,例如,当我尝试 ping 8.8.8.8 时,我没有记录日志。所以我猜这意味着到互联网的数据包在进入 VPC 之前被丢弃在虚拟私有网关上。 【参考方案1】:我在我的 VPC 主路由表中添加了一条路由规则,以将到 0.0.0.0/0 的流量路由到我的 NAT 实例。
VPC 的“主要”路由表会影响来自 VPC 硬件 *** 的流量,这是一个可以理解的误解。它没有。没有适用于此类流量的路由表,只有 VPC 子网的隐式目标。此类 *** 只能访问分配的 CIDR 块。
AWS *** 是否会丢弃不是发往 VPC 或 *** 的 CIDR 的流量?这样做有安全原因吗?
是的,该流量已被丢弃。
这可能不是专门出于安全原因...这只是服务的设计方式。托管 *** 连接旨在访问基于实例的服务,不支持我们通常分类为网关、边缘到边缘、对等互连或传输的流量。
如果您可以将边缘设备配置为使用 Web 代理,那么像 squid 这样的转发代理服务器可以处理设备的连接,因为设备和转发代理之间的 IP 路径是只涉及设备和代理 IP。
更简单的解决方案是使用基于实例的防火墙来终止 ***,而不是使用内置的 VPC *** 服务,因为这样防火墙实例可以允许流量通过自身发夹,即源伪装 (NAT)它自己的 EIP 背后的流量,这将是 VPC 基础设施轻松支持的东西。
当然,您可以自己构建基于实例的防火墙,但 AWS Marketplace 中也有一些产品提供 IPSec 隧道终止和 NAT 功能。有些有免费试用期,其中唯一的成本是实例的成本。
【讨论】:
感谢您的回答,这确实清楚了很多事情并证实了我的观察。我考虑了一个代理,我可能会寻求类似的解决方案来获得像Soracom Beam 这样的解决方案。感谢您的建议。以上是关于通过 VPC 将 AWS *** NAT 到 AWS IOT的主要内容,如果未能解决你的问题,请参考以下文章
AWS Lambda:如何为具有 VPC 访问权限的 lambda 函数设置 NAT 网关
AWS VPC:将 NAT 和 Internet 网关与负载均衡器和私有子网一起使用时的奇怪行为