基本上我想做类似 strace ssh user@host 之类的事情,而不是看到系统调用,我想在建立连接时观察 tcp 连接数据包。
我在两台特定机器之间遇到了这个奇怪的问题,其中 b 可以连接到 a 但 a 无法连接到 b 大部分时间,当它能够连接时,连接速度非常慢,只需一分钟即可获取 ssh 问候语。
听起来数据包被丢弃了,所以我正在寻找一种诊断方法。我知道我可以启动wireshark或其他东西(欢迎提出建议),但我想如果有一些简单且特定于过程的东西会很方便。
基本上我想做类似 strace ssh user@host 之类的事情,而不是看到系统调用,我想在建立连接时观察 tcp 连接数据包。
我在两台特定机器之间遇到了这个奇怪的问题,其中 b 可以连接到 a 但 a 无法连接到 b 大部分时间,当它能够连接时,连接速度非常慢,只需一分钟即可获取 ssh 问候语。
听起来数据包被丢弃了,所以我正在寻找一种诊断方法。我知道我可以启动wireshark或其他东西(欢迎提出建议),但我想如果有一些简单且特定于过程的东西会很方便。
您可以完美地使用 tcpdump 进行嗅探
安装 tcpdump
在 debian、ubuntu 上
在centOS上
监听 tcp 数据包
首先列出你的接口
列出/捕获接口 eth0 上的数据包
仅列出/捕获接口 eth0 上的 TCP 数据包
截图
tcpdump 显示可用接口
tcpdump 捕获显示数据包
所以我发现了我的问题,原来是一个脚本生成了很多 iptables 丢弃规则。我猜它被阻止的其中一个ip位于两台机器之间的一条路由上,所以它是间歇性的。删除 iptables 规则使问题消失。