我有一个客户端通过VPN隧道连接到服务器。连接就绪,我可以通过该隧道来平平服务器并请求其他一些服务(例如,API上的curl请求)。
客户端上的一个服务不能绑定到服务器中的相应服务。在执行tcpdump时,我看到服务器使用RST应答连接到服务端口的客户端的初始SYN。
谁能发布这个RST?它是服务器的网络堆栈(因为防火墙、格式错误的数据包,简言之,任何与纯网络有关的内容),还是服务本身(服务器上的服务应该响应客户端的查询)?
这个问题的目的是试图区分设备的错误配置(OS、防火墙、.)以及服务本身的错误配置/不兼容。具体来说,我想了解一个高级服务是否可以(可能是间接地)关闭与请求客户端的连接,这样一个RST就会被发送回客户端。
发布于 2018-01-09 21:08:18
RST可以由与通信量交互的服务器或网络设备(如防火墙、VPN集中器)发出。
根据网络设备及其配置,它可能响应RST,或ICMP无法访问,或默默地只是默默地放下。
服务/应用程序建立的连接的优雅关闭应该会导致FIN数据包而不是RST;如果试图连接到没有侦听的端口,则可以获得RST。
您最好的选择是在网络的不同点执行数据包嗅探;您可以在服务器的NIC上捕获流量,以查看它是否正在生成RST,然后将监控点移向客户端( VPN和防火墙通常可以转储数据包捕获或日志)
发布于 2018-01-09 18:58:15
RST标志由服务器的网络堆栈发送,如果端口被过滤,防火墙往往会悄悄地丢弃数据包。
这里有一篇很好的文章,对此作了一些扩展:https://blogs.technet.microsoft.com/networking/2009/08/12/where-do-resets-come-from-no-the-stork-does-not-bring-them/
要回答您的具体问题,其他一些进程可能关闭TCP连接并非不可能,尽管这通常是通过终止侦听该端口的进程来完成的。如果侦听进程在RST之后仍处于打开状态,则不太可能有另一个进程试图关闭连接。
https://serverfault.com/questions/891228
复制相似问题