关于Ec2的TCP级别信息

时间:2019-03-20 19:15:12

标签: amazon-web-services amazon-ec2 tcp

我正在尝试从数据包中获取TCP时间戳,以便在EC2上托管的应用程序上实现时钟偏移。在我的网络中,我有一个ALB。

所以我的问题是如何在我的应用程序中获取TCP级别的数据包信息?由于ALB会过滤掉除应用程序级别(HTTP)之外的所有OSI层

1 个答案:

答案 0 :(得分:1)

如果访问TCP数据包的唯一原因是检测时间戳和纠正时钟漂移,建议您将EC2实例配置为使用NTP时间服务器。
https://aws.amazon.com/blogs/aws/keeping-time-with-amazon-time-sync-service/

话虽这么说,ALB并未从网络数据包中“删除” TCP信息。与应用程序建立的HTTP连接仍通过IP和TCP传输。如果您需要从某个应用程序低级访问网络数据包,建议您看一下pCAP库,该库由TCPDUMP和许多其他工具用来捕获接口上的网络流量。

https://www.tcpdump.org/

[已更新,包括评论]

了解客户端和ALB之间的TCP连接在ALB级别终止很重要。 ALB创建第二个TCP连接,以将HTTP请求转发到您的EC2实例。 ALB不会从TCP / IP中删除信息,它只是创建第二个独立的新连接。通常,您要从初始TCP连接传播的唯一信息是源IP地址。与大多数负载平衡器和代理一样,ALB从原始连接(从客户端收到的连接)中捕获此信息,并将该信息嵌入到称为X-Forwarded-For的HTTP标头中。

此文档记录在https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/x-forwarded-headers.html

如果您想从原始连接中捕获其他信息,恐怕无法使用ALB。 (但我也对用例很好奇,即您要实现的目标)