【发布时间】:2020-08-26 20:57:35
【问题描述】:
我已经在远程服务器上配置了 rsyslogd,以使用 TCP 协议从带有 rsyslogd 的客户端机器发送日志。在客户端和服务器上配置并重新启动 rsyslogd 守护程序后,我能够将数据包发送到服务器并且一切正常。但是后来当我在服务器上重新启动 rsyslogd 时,客户端仍在将数据包发送到旧的 TCP 连接。因此,客户端重试了 16 次,但未能发送数据包。重试发送下一个数据包后,客户端正在创建一个新连接,并且通信工作正常。
当我使用 tcpdump 在服务器上重新启动 rsyslogd 时,我捕获了数据包,我们可以看到服务器向客户端发送了 flag[F],并且客户端也确认了它。但是当我们发送下一个数据包时,它并没有创建一个新的连接。
在服务器上重新启动 rsyslog: 服务器端 tcpdump:
*09:54:50.012933 IP x.x.x.101.514 > y.y.y.167.37141:标志 [F.],seq 1,ack 31,win 229,长度 0
09:54:50.013050 IP y.y.y.167.37141 > x.x.x.101.514: 标志 [.], ack 2, 赢得 115,长度 0*
对于从客户端发送的下一个数据包,服务器发送标志 [R] 但客户端不断重试 16 次:
来自服务器的 tcpdump:
*03:55:11.811611 IP y.y.y.167.37141 > x.x.x.101.514:标志 [P.],seq 31:61,ack 2,win 115,长度 30
03:55:11.811647 IP x.x.x.101.514 > y.y.y.167.37141:标志 [R],seq 1863584583,赢0,长度0
03:55:12.014158 IP y.y.y.167.37141 > x.x.x.101.514:标志 [P.],seq 31:61,ack 2,赢 115,长度 30
03:55:12.014189 IP x.x.x.101.514 > y.y.y.167.37141:标志 [R],seq 1863584583,赢0,长度0*
同时在客户端我们看不到来自服务器的响应:
09:55:11.811077 IP y.y.y.167.37141 > x.x.x.101.514:标志 [P.],seq 31:61,ack 2,赢 115,长度 30
09:55:12.013639 IP y.y.y.167.37141 > x.x.x.101.514:标志 [P.],seq 31:61,ack 2,赢 115,长度 30
09:55:12.421627 IP y.y.y.167.37141 > x.x.x.101.514:标志 [P.],seq 31:61,ack 2,赢 115,长度 30
现在,在 16 次重试之后(大约需要 13 分钟),如果我们发送一个新数据包,它就会正确发送。 在这里,我们看到正在创建一个新会话:
*10:16:43.873325 IP y.y.y.167.39859 > x.x.x.101.514: 标志 [S], seq 1000783963, win 14600, options [mss 1460,nop,wscale 7], 长度 0
10:16:43.873658 IP x.x.x.101.514 > y.y.y.167.39859:标志 [S.], seq 231452091, ack 1000783964, win 29200, 选项 [mss 1460,nop,wscale 7],长度为0
10:16:43.873740 IP y.y.y.167.39859 > x.x.x.101.514: 标志 [.], ack 1, 赢得 115,长度 0
10:16:43.873904 IP y.y.y.167.39859 > x.x.x.101.514:标志 [P.],seq 1:31,ack 1,赢 115,长度 30
10:16:43.874084 IP x.x.x.101.514 > y.y.y.167.39859: 标志 [.], ack 31, 赢 229,长度 0*
有人遇到过这样的问题吗?任何人都可以告诉为什么客户端发送标志[F]时服务器没有关闭连接。 rsyslogd 中是否有任何配置参数可以在服务器发送 flag[F] 时创建新会话?
【问题讨论】:
标签: sockets networking tcp tcpdump rsyslog