我有一个amazon ec2服务器,所有必要的端口都已打开并配置了防火墙。服务器应用程序在某个端口上侦听客户端数据并使用ack进行响应。但它看起来像服务器接收数据,然后发送确认,但客户端没有收到它。当我尝试在两个不同的ec2实例上启动服务器和客户端应用程序时,它可以工作,但如果客户端是在Amamzon之外的某个地方启动的,那么ack数据包永远不会到达它。
有什么想法吗?
谢谢!
答案 0 :(得分:1)
基本故障排除:
它看起来像服务器接收数据并用ack响应
呃,“看起来像”?您是否在服务器上运行TCPDump以验证响应是否实际发送? (并验证它是否已发送到正确的IP /端口等)
您是否在客户端上运行TCPDump以查看操作系统是否收到了数据包,但不知何故未将其传送到应用程序? (tcpdump -ni eth0 udp port 9999
)
您使用的是AWS VPC吗? (VPC防火墙可以阻止传出数据包)
是否涉及其他防火墙? (即家庭路由器做NAT / STUN /等。)你可以在亚马逊以外的另一个“裸”服务器上试试吗?
您是否可以使用netcat
的UDP模式来验证它是否与您的代码无关?
您可以在其他端口上使用netcat
的UDP模式来验证它不是特定于一个UDP端口吗?