ネットワーク上のトラフィックダンプを分析して、すべてのPCでTCPキープライブ機能が有効になっているかどうかを確認する必要があります。そのためにtcpdumpを使用しています。
私が知っておく必要があるのは、キープアライブパケットのみをフィルタリングする可能性があるかどうかです。
Windowsでは、wiresharkがそれを実行できることがわかりますが、コンソールモードのみのLinuxシステムでは、この種のパケットをフィルターする方法がわかりませんでした。
キープアライブプローブは、データが含まれておらず、ACKフラグがオンになっているパケットです。
tcpdump -pni $intf -v "tcp port $port and ( tcp[tcpflags] & tcp-ack != 0 and ( (ip[2:2] - ((ip[0]&0xf)<<2) ) - ((tcp[12]&0xf0)>>2) ) == 0 ) "
これは何をしますか:
免責事項:実際にはテストされていませんが、良い方向を示す必要があります
Wiresharkは、tcpdumpと同じキャプチャ構文を使用します。どちらもlibpcapで動作します。ただし、Wiresharkで見ている機能は、近隣のパケットをヒューリスティックに分析する表示フィルターだと思います。キャプチャで実行できる最善の方法は、キープアライブリクエストへの応答で1バイトまたは0バイトのACKを探すことです。これを試して;
tcpdump -vv "tcp[tcpflags] == tcp-ack and less 1"
予想されるホスト間のトラフィックを取得するかどうかを確認します。
RFC 1122 はTCPをカバーし、実装の多くをベンダーに任せます。
また、Linuxホストでtcpdump
を使用してファイルにキャプチャし、キャプチャをワークステーションに転送して分析することもできます。