問題タブ [tun-tap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
250 参照

c++ - tun/tap インターフェイスを使用した間違ったシーケンス番号

tun/tap を使用して TCP パケットを構造体に読み込もうとしているので、tun デバイスを使用するように IFF_TUN フラグが設定されています (イーサネット ヘッダーなし)。

私は次のような構造体を持っています (エンディアンの問題は気にしません):

TCP ヘッダー:

Ipv4 ヘッダー:

次のようにパケットを読み取ります。

そしてこれまでのところ、とても良いです。しかし、TCPシーケンス番号を読み取ろうとすると、間違った番号が表示されます:

tshark の出力は seq=0 を示します (以下のように):

しかし、私のコード出力は7be53b39 です

0 投票する
0 に答える
41 参照

c - TUN インターフェイスを作成するコードを実行し、コードで TCP リスニング ポートをシミュレートします。そのため、受信した SYN パケットは、コードで SYN+ACK で応答しました

TUN0 インターフェイスから IP パケットを読み取る単純なサーバーがあります。そして、このコードでは、ポート 80 で TCP リスニング ポートの動作をシミュレートしようとしているので、サーバーと呼びます。したがって、SYN 要求を受け取った場合は、SYN+ACK 応答で応答します。

コードの SYN+ACK パケットが無視されていることを繰り返し確認しており、SYN パケットが再送信され続けています。これはなぜですか?

私の SYN+ACK パケットは問題ないようです。他の誰かもそれをチェックしました。必要に応じて、完全なパケット キャプチャについては以下を参照してください。しかし、私のクライアントは、TCP SYN パケットに対するサーバー コードの SYN+ACK パケット応答を無視しています。

私はnetstatをチェックしました

Linux ReverseのPathフィルタリングも無効にしました

しかし、私の netstat はドロップされたパケットを示していません。クライアントがサーバーの SYN+ACK パケットを単純に無視しているもう 1 つの理由は何でしょうか。そして、クライアントから SYN パケットの再送信を受け続けます。SYN+ACK パケットを拒否する Linux カーネルで実行された魔法のような作業があり、誰もそれを知りません。設定する必要iptableがありますか、最初はこれが必要だとは思いませんでしたが、他に何ができるでしょうか。

これは、初期 SYN および SYN+ACK の 16 進ダンプです。

SYN+ACK

パケット キャプチャは次を示します。

そして、これは完全なパケット キャプチャです。

https://drive.google.com/file/d/1hF8FeQcZqGvAZzxHHRRtO2BOl8Y1Yymn/view?usp=sharing

カーネル バージョン: カーネル 5.13.0-22-generic