問題タブ [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 - Linux tun ドライバーとのインターフェース方法
この問題を理解するのに苦労しています。Linux トンネル ドライバーと対話するプログラムを作成しようとしています。非常に基本的なレベルでは、ネットワーク トンネルを介してデータを転送できるアプリケーションを作成したいだけです。ただし、これを達成するためにトンネルドライバーを適切にセットアップする方法については、完全に途方に暮れています。
私は Ubuntu 9.04 で開発しており、トンネル ドライバー カーネル モジュールをロードしています。
デバイスは存在しますが、デバイス/dev/net/tun
はありません/dev/tunX
。を使用してこれらのデバイスを作成することができませんifconfig
- を実行するたびに/sbin/ifconfig tun0 up
、たとえば、次のエラーが表示されます。
tun0: インターフェイス フラグの取得中にエラーが発生しました: そのようなデバイスはありません。
デバイスを見ようとする/dev/net/tun
と、次のエラーが表示されます。
cat: /dev/net/tun: ファイル記述子が不適切な状態です。
/dev/tunX
基本的に、単純な小さなプログラムを介して開こうとしています
-1 を返します: アプリケーションはルートとして実行されていますが、まだこのトンネル デバイスを開くことができません。を開くことは可能ですが、代わりに使用する新しいデバイスを/dev/net/tun
生成するようには見えません。/dev/tunX
要約すると、Linux トンネル ドライバーを使用するアプリケーションを作成するにはどうすればよいでしょうか。どんな洞察も大歓迎です。
ありがとう; 〜ロバート
linux - TUN インターフェイスとして動作するユーザー空間 TCP スタックはありますか?
TUN インターフェイスとして動作し、アプリケーション側で POSIX に似た API を使用するユーザー空間 TCP スタックはありますか?
c - tun プログラムがデバイス ノードを作成しない
私はhttp://backreference.org/2010/03/26/tuntap-interface-tutorial/に従っています
次のコードは、root として実行すると fd (通常は 3) を正常に取得しますが、/dev/tun77 デバイスを作成しません。
それはすべきですか?
vpn - HTTPプロキシにtun/tapデバイスを使用させる
VPN経由で大学のネットワークに接続するために使用するツールを使用できるようにしようとしています。それに関する問題は、私がtun/tapデバイスを生成することができるということです。ツール自体は特定のネットワークインターフェイスの使用をサポートしていませんが、HTTPプロキシの使用をサポートしています。
そのため、ツールがこのHTTPプロキシを介してVPNに接続できるようにするために、特定のインターフェイス(tunデバイス)にバインドできるHTTPプロキシを探しています。
私はイカのprivoxyを見てきましたが、彼らがそれをサポートしているというヒントを見つけることができませんでした。
私がやろうとしていることをサポートするHTTPプロキシを知っていますか?
tun - Windows での TUN ドライバーの使用
Windows 7 マシンにTAP-WIN32 Adapter V9をインストールしました。インターフェイスから IP パケットを読み取るために TUN を使用したいと考えています。http://www.varsanofiev.com/inside/using_tuntap_under_windows.htmの C# サンプルに従いました 。
以下のようにコードを修正しました
ただし、まだ IP パケットを取得していないようです。相手側で tcpdump を実行したところ、「リンク層のカプセル化が間違っています」というメッセージが表示されました。
これは、TUN インターフェイスから IP パケットを取得しようとする正しい方法ですか?
linux - Webサーバー(lighttppd)および(curl)クライアントを実行しているLinuxサーバー上の分離されたテストネットワーク
既知のトラフィックを(libpcapを使用して)NICからキャプチャし、テストしようとしているアプリケーションにフィードする必要があるテストツールを作成しています。
私がセットアップしようとしているのは、Webサーバー(この場合はlighttpd)と、同じマシン上で分離されたテストネットワーク上で実行されているクライアント(curl)です。スクリプトはセットアップ全体を駆動します。目標は、クライアントの数と、各クライアントがWebサーバーからダウンロードするファイルのセットを指定できるようにすることです。
私の最初のアプローチは、単にループバック(lo)インターフェイスを使用することでした... 127.0.0.1でWebサーバーを実行し、クライアントにファイルをフェッチさせhttp://127.0.0.1
、loインターフェイスでlibpcapベースのツールを実行します。これは、ループバックインターフェイスが実際のイーサネットインターフェイスをエミュレートしないという事実を除けば、問題なく機能します。それに関する主な問題は、パケットがすべて一貫性のないサイズであるということです... 32kバイト以上で、いくらかランダムです... loでMTUを下げることもできません(まあ、できますが、効果はありません!)。
また、実際のインターフェイス(eth0)で実行しようとしましたが、内部Webサーバーと通信する内部Webクライアントであるため、トラフィックがインターフェイスを離れることはなく、libpcapはそれを認識しません。
それで私はtun/tapに目を向けました。私はsocatを使用して2つのtunインターフェイスをtcp接続でバインドしたので、実際には次のようになりました。
これは本当に素晴らしい解決策のようです...tun/ tapデバイスは実際のイーサネットデバイスをエミュレートするので、Webサーバーをtun0(10.0.1.1)で実行し、キャプチャツールをtun0で実行して、クライアントをtun1(10.0.2.1)にバインドできます。 )... tcを使用して、このトラフィックにシェーピングルールを適用し、Linuxボックス内に仮想WANを作成することもできます...しかし、それは機能しません...
これが私が使用したsocatコマンドです:
これにより、それぞれのIPアドレスを持つ2つのtunインターフェイス(tun0
および)が生成されます。tun1
を実行するping -I tun1 10.0.1.1
と応答がありませんが、iを実行するとtcpdump -n -i tun0
、ICMPエコー要求が反対側に到達し、応答の兆候が戻ってこないことがわかります。
それで、私は明らかな何かを見逃していますか、それともこれは間違ったアプローチですか?他に試すことができるものはありますか(たとえば、2つの物理インターフェイス、eth0とeth1 ???)。
最も簡単な方法は、2台のマシンを使用することですが、このすべてが自己完結型である必要があるため、他の依存関係なしに、1台のマシンですべてのスクリプトと自動化を行うことができます...
アップデート:
2つのsocatをtcp接続で接続する必要はありません。これを行うことは可能です(そして私にとっては望ましいことです)。
同じ問題がまだ存在します...
tun - トンネルへの TUN/TAP ライトバック
私のアプリはtun0などのTUNを使用しています。設計では、私のアプリは完全な IP レイヤーを含む UDP を受け取ります。次に、IP レイヤーを取り出し、「ファイル書き込み」を使用してそれらを自分の tun0 デバイスに入れます。おそらく設計上、 tun0 から再度パケットを送信します。
今の状況は、パッケージがトンネルに書き込まれていることを tcpdump で確認できますが、それらを読み取ることができませんでした。
トンネル設定やルート設定がおかしくないですか?
前もって感謝します
ヤン
routing - RTNETLINK の回答: トンネル ルーティング時の無効な引数
以下のように、サーバーで TUN のルーティングを設定しました。
「ip route get」を使用して eth0 からのルーティングを確認すると、以下のように問題はありません。
ip rg 192.168.1.3 から 10.0.1.3 iif eth0
しかし、私が以下のように使用した場合:
ip rg 192.168.1.3 から 10.0.1.3 iif tun0
おそらく、それはまだ機能するはずです。ここにネットワーク構成の問題があると思います。何かご意見は?前もって感謝します。
python - Pythonを使用したTUN\TAP for MAC OSX(Lion)とのインターフェース
次のtun\tapサンプルプログラムを見つけましたが、動作させることができません。
http://www.secdev.org/projects/tuntap_udp/files/tunproxy.py
次の行を変更しました。
最初の行は、ドライバーの実際の場所を反映するように変更されました。もともとは
実行すると、次のエラーが発生します。
http://tuntaposx.sourceforge.net/download.xhtmlからインストールされた最新のtun\tapドライバーを使用しています
c - C: タップに書き込まれたデータ量の検出
私はタップから読んでいるプログラムに取り組んでいます。唯一の問題は、タップへの 1 つの送信の終了と別の送信の開始を検出する方法がわからないことです。
タップからの読み取りは SOCK_STREAM と同じように機能しますか?