我的 VPC 中有两个子网:
- 具有 Nat实例的公共子网
不允许来自 Internet 的传入连接。 - 具有私有子网的应用程序服务器
路由表的私有子网将 Nat 实例的 eni 用于 0.0.0.0/0 目标,因此我的应用程序服务器可以通过 Nat 实例向某个外部服务器发送请求。
VPC Flow 日志格式如下:
因此,在应用程序服务器的流日志中,我看到了:
似乎,外部主机 31.220.24.x 正在尝试连接我的私有实例 172.30.4.205,不是吗?但是,根据这个文档,18作为tcp-flag表示 SYN-ACK,所以它是外部主机对来自内部主机的 SYN 数据包的响应。我对在没有之前的 SYN 数据包的情况下获得 SYN-ACK 感到困惑,所以我尝试模拟这种情况并通过tcpdump记录所有数据包。我从 172.30.4.205 向 31.220.24.x 发送了一些数据,并在 CloudWatch 中获得了相同的日志,但 WireShark 中的所有三个数据包 - SYN、SYN-ACK、ACK:
所以,问题是为什么我在应用服务器的 CloudWatch 日志中看不到第一个 SYN 数据包。提前致谢!