Linux:跟踪netstat -s“连接尝试失败”的来源
我有几台服务器,其中netstat -s(来自/ proc / net / snmp)返回的失败连接尝试度量标准大约每秒增长一次,我想诊断这些服务器的来源.
通过使用此ipTables规则(在不同的服务器上):
我阻止传出的telnet,所以我可以运行这个循环:
因此证明计数器因连接到远程套接字的失败尝试而增加. (当然,它并不能证明这是增量的唯一原因). 问题是,我怎样才能找到失败的远程地址和端口(或两者的复数)的特定组合,以便我可以查看下一步;路由/防火墙问题?
我希望在状态SYN-SENT中看到套接字,但不要.这是因为我使用了REJECT,而不是DROP? 解决方法
让我们试着以另一种方式(艰难的方式)回答这个问题.阅读内核的源代码,看看,只有一个地方,这个度量增量 –
tcp_done函数.正如我们在代码中看到的,增量仅发生在SYN_SEND或SYN_RECV状态的连接中.然后我们检查,从哪里可以调用tcp_done.我们可以找到几个地方:
> tcp_reset – 在连接中止时调用(收到第一个标志的回复数据包).是的,它可能发生在SYN_SENT和SYN_RECV状态(以及其他状态,理论上). 现在,打开任何TCP FSM图来检查,在什么情况下我们的连接可以在SYN_SENT或SYN_RECV中. 在客户端情况下,它可以只是SYN_SENT状态,其中syn数据包正在传输,并且由于接收到拒绝(tcp-rst或icmp错误)或未收到回复而中止连接. 在服务器情况下,它可能只是SYN_RECV状态(已经接收到syn并且已经发送了syn ack),并且由于接收到拒绝(某些地方拒绝了syn ack)或超过了回复等待超时(未收到确认)而中止连接. 现在您已了解更新此度量标准的原因,并可以检查系统中可能的源代码.在现代内核中,有一个强大的工具可以在内核级别进行故障排除.从布兰登格雷格开始于this brief tutorial. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- linux-kernel – Linux内核ARM异常堆栈init
- Linux内核模块中的内存泄漏检测工具
- LINUX实战:Ubuntu 17.04 桌面版安装指南超多截图
- 是否可以在不安装ssh的情况下从Linux远程运行批处理脚本?
- 如何理解linux服务器中的内存使用率和平均负载
- 在os x lion上安装新的tmux会返回“git:Permission denied
- linux相关知识(二)在windows10下利用xshell连接linux虚拟
- LINUX教程:Linux教程之文件描述符、重定向、管道符、tee命
- linux – 为什么堆栈必须是页面对齐的?
- Linux上的V8js PHP模块 – 找不到libv8.so