我正在测试SFTP与第三方的连接,我们正在使用C#和Renci来执行此操作。
但这些联系似乎并未结束。这是我简单的测试代码:
public bool TestConnection()
{
using (var client = new SftpClient(_connectionInfo))
{
try
{
client.Connect();
if (!client.IsConnected)
return false;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return false;
}
finally
{
client.Disconnect();
client.Dispose();
}
return true;
}
}
严格来说,断开和处置是多余的。
Wireshark显示从我们到主机的每个测试的最后一个命令是
59916→22 [RST,ACK] Seq = 2319 Ack = 1941 Win = 0 Len = 0
对我来说,表明连接应该关闭。然而,经过大约19次连续测试后,主机开始强行关闭连接尝试,直到原始连接开始超时。 主机是否忽略RST,是否像防火墙一样阻止了断开连接?怎么回事?
答案 0 :(得分:0)
最后我们找到了原因。它与我们的代码无关。
其中一个内部防火墙有一个入侵防御规则,基本上是为了防止DoS攻击。
我们通过测试我们自己的SFTP服务器发现了这一点。服务器日志表示客户端正在关闭连接。客户端说服务器正在关闭连接,所以我们假设介于两者之间的东西是罪魁祸首。