問題タブ [tun]
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.
c - TUN インターフェイスから受信した raw パケット データの変換
TUN インターフェイスを通過するパケットを傍受しようとしています。後で使用できるように、生のパケット情報を読み取り可能な情報に変換したいと考えています。
私は次のコードを使用しています:
パケットのプロトコルと ip src アドレスを読み取れないようです。私は奇妙な結果を得ています。
助けてください??
ありがとうございました!
linux - ユーザー空間の tcp/ip スタックをテストするには?
私はユーザー空間の tcp スタックに取り組んでおり (主に楽しみのため)、UNIX の tcp スタックに対してテストするのに問題があります。現在、テストの唯一の形式は単体テストを介して行われます。ただし、実際のカーネル tcp スタックに対して tcp スタックをテストしたいと考えています。次のセットアップを試しましたが、あまり成功しませんでした。
raw ソケットの使用: カーネル tcp ソケットを使用して接続を受け入れる単純な echo tcp サーバーを作成しました。TCP サーバーは、localhost のポート 8080 をリッスンします。私の TCP クライアントは、ユーザー空間の TCP スタックを使用します。ただし、クライアントがサーバーに syn を送信するたびに、カーネルは tcp rst を送信します。すべてのtcp rstパケットをドロップするようにiptableを変更した後、それは一種の機能です。ただし、3 方向の syn、syn+ack、ack ハンドシェイクが確立されていても、サーバーはクライアントが送信するパケットを受信できません。私は最終的に生のソケットをあきらめました。
tun/tap を使用: 同様に、エコー サーバーはカーネル tcp ソケットを使用し、localhost ポート 8080 をリッスンします。クライアントは、tap デバイスを開きます。タップ デバイスの IP は 10.0.0.1 で、クライアントは 10.0.0.2 の IP を想定しています。コンピューターから 10.0.0.2 に ping できます。ただし、クライアントがタップ デバイスを介して tcp サーバーに syn を送信すると、サーバーは応答しません。
注:ubuntu 12.04を使用しています。
python - Packets larger than MTU arriving on TUN interface
I'm using pytun to setup a TUN and forward packets that arrive on it to another machine using UDP. What's puzzling me is that even though I've configured the TUN to have MTU of 141 bytes, I'm reading packets of size 145 on it. See the code below:
I've verified the actual MTU of the interface using ifconfig
.
Am I missing something?
linux - 違い tun/tap、プロトコルまたは OS を処理するインターフェイスですか?
tap と tun インターフェイスの違いを理解するのが難しいです。よくある質問であることは承知しており、申し訳ありません。
タップはレイヤー 2 で動作し、tun はレイヤー 3 で動作することを読みました。また、タップはブリッジングに使用され、tun はルーティングに使用されることも読みました。「ルーターはレイヤー3で機能する」または「ブリッジはレイヤー3で機能する」などのことをすでに聞いたことがあります。これは、ルーターがレイヤー3プロトコルを操作し、ブリッジがレイヤー2プロトコルを操作するため、私にとっては理にかなっていますか? しかし、tap と tun は「インターフェース」であるため、「INTERFACES work at layer 3」のような文には意味がありますが、それが何であるかはわかりません。つまり、インターフェースはプロトコルを操作しません (OS はそれを行いますが、インターフェースではありません) tun インターフェース == タップ インターフェースのように聞こえます:
異なるネットワーク (192.168.2.1/24 と 192.168.3.1/24) にある 2 つの IP を持つ 2 つのタップ インターフェイス (tunctl を使用) を作成すると、これらを 2 つの kvm 仮想マシンにリンクします (1 つのタップ インターフェイスが 1 つの VM に一致します)。ホストでルーティングを有効にすると、2 つの VM が通信できます。
したがって、tap インターフェイスはルーティングにも使用できます。tun との違いは何ですか? 多分タップもtunインターフェースですか?
また、tunctl コマンドでタップ インターフェイスを作成できますが、同じコマンドで tun インターフェイスを作成するにはどうすればよいですか (コマンドは TAPctl ではなく TUNctl と呼ばれます...)。
それを明確にするのを手伝ってもらえますか?ありがとうございました。
python - 2 つの異なるプロセスから TAP インターフェイスにアタッチする方法
次のように作成されたタップインターフェイスがあります。
tap0
次に、 Python と C++ で記述された別のプログラムを使用することにアタッチします。
パイソン:
(シミュレーション用)tap0 に 2 回アタッチしようとすると、次のようになります。
これを実行するとエラーが発生しますf2
:
複数のプロセスからタップ インターフェイスにアタッチするにはどうすればよいですか?
linux - コマンド「cat /dev/net/tun」の結果が $string の場合
VPS で TUN ドライバーが有効になっているかどうかを確認するスクリプトを作成しています。チェックコマンドは次のとおりです。
返された場合:
モジュールが有効になります。それ以外の場合は ERROR を返します。
これが私のスクリプトです:
ERROR
メッセージが届きます。
テキストファイルで同じスクリプトを試してみましたが、うまくいきました...