問題タブ [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.
macos - OS X 用の tunctl 同様のコマンド
Linuxのように、OS Xでデバイスを作成、削除などするコマンドはありますtun
か?tap
tunctl
python - Scrapy で tun0 (TUN インターフェース) を使用する
Scrapy からリクエストを作成するために、別のインターフェイスを使用したい (tun0
の代わりにeth0)
.Scrapy でそれを行う方法を誰か説明できますか? curl では、指定されているだけです--interface tun0
。よろしくお願いします!
tun - TAP/TUN デバイスの「宛先アドレス」とは何ですか?
TAP/TUN デバイスの「宛先アドレス」の目的は何ですか?
Pytunを使用すると、タップ/チューニング デバイスのパラメーターを簡単に設定できます。
これを行うと、次のように構成されたデバイスになります。
システムに IP 10.66.66.1 の仮想インターフェイスがあることを理解しています。そして、このシナリオでは、TUN デバイスは、IP アドレスが 10.66.66.2 のデバイス (VPN ゲートウェイなど) に「接続」されていると考えられます。
しかし、これが「ポイントツーポイント」インターフェースであり、宛先の IP アドレスであることをカーネルが認識することは、具体的にどのような目的に役立つのでしょうか? 単純にルート テーブルを構成するだけでは達成できない何らかの方法でルーティングに影響を与えますか?
dstaddr
プロパティを設定すると、 SIOCSIFDSTADDR
ioctl が生成されます。
netdevice(7)
マニュアルページには次のように書かれています:
windows - Windows 7 で TUN とルーティングを作成する
リモート接続を行うアプリケーションをいじっていますが、tun/tap を理解するのに苦労しています。OpenVPN tuntap ドライバーをインストールし、アプリケーションを介して接続/構成できますが、明確にする必要があります。
TAP モードで使用する場合、ネットワーク アダプタを正しくブリッジする必要がありますか??
TUNインターフェースはどのようにセットアップされますか?? DeviceIoControl
私は電話をかける必要があることを知っており、そのTAP_IOCTL_CONFIG_TUN
方法を理解していると思いますが、私の調査では、Windowsルーティングテーブルにも追加する必要があると思います??
典型的な TUN レイヤー 3 VPN がどのように見えるかをレイアウトできますか?
ありがとうマット
python - Connecting a Tun to a socket
I want to connect a Tun to a socket so that whatever data is stored in the Tun file will then end up being pushed out to a socket which will receive the data. I am struggling with the higher level conceptual understanding of how I am supposed to connect the socket and the Tun. Does the Tun get a dedicated socket that then communicates with another socket (the receive socket)? Or does the Tun directly communicate with the receive socket? Or am I way off all together? Thanks!
linux - インターフェイスと IPv6 を調整する
tun インターフェイスについて質問したいのですが、OpenVPN はありません。
トラフィックをトンネリングする 2 つのアプリケーションがあります。「sgsn ユーザー空間アプリ」は tun インターフェイス「tun sgsn」から IP パケットを読み取り、それらを「ggsn ユーザー空間アプリ」に送信し、このアプリはそれらを「tun ggsn」に書き込みます。他の方法でも機能するため、ssh セッションを機能させたり、ファイルをコピーしたりできます。
したがって、パケットは次のようになります。
scp クライアント --> sgsn tun インターフェース ---> アプリを介したトンネリング -----> ggsn tun インターフェース (ここにドロップ) ----------> sshd
今、IPv4 で試してみましたが、動作しますが、IPv6 に切り替えると、IP パケットは「tun ggsn」に書き込まれ、IP スタックはそれを破棄します。dropwatch で見たことがあります。これは、破棄が ip_rcv+c0 にあることを示しています。
ルートは正しい必要があります。そうしないと、そもそもパケットが tun_sgsn に到達しないからです。
CentOS 6.7 と 7.1 の両方でこれを試しましたが、結果は同じでした。ただし、7.1 ではホストが 1 つしかないため、ip6tables を使用して NAT アドレスにいくつかのトリックを実行し、各ユーザー空間アプリ (scp および sshd) からのトラフィックが tun インターフェイスを通過するようにしました。最初からわかりやすいように言っているのですが、6.7 では 2 台のマシンがあり、NAT はありません (IPv6 の CentOS 6.7 では NAT が機能しないことは承知しています)。tun ggsn インターフェイスで tcpdump を使用しましたが、IPv6 データグラムは問題ないようです。
別のヒント: tun_ggsn インターフェースに直接 scp すると動作しますが、同じマシンにいるということは IP パケットが TCP/IP スタックを下らないことを意味するため、tun ドライバーで何も破棄されないと思います。 tun ドライバーに到達します (実際、これを行った場合、tcpdump はパケットをキャプチャしません)。
事前にどうもありがとうございました。
netty - Netty は複数のネットワーク インターフェイス カードをサポートしていますか?
2 つの質問があります。まず、シミュレーションの目的で、さまざまなネットワーク インターフェイス カードにバインドするいくつかの netty プロセスを開始したいのですが、それに関する情報が表示されません。それで、誰かが私に明確な返事をすることができますか?次に、Java に tun/tap を駆動するラッパー ライブラリはありますか? tun/tap を使用して仮想ネットワーク インターフェイス カードを実装したいと考えています。
どうもありがとう!!!
networking - dev_queue_xmit は、tun/tap デバイスで NET_XMIT_CN をランダムに返します
独自のパケット (App、UDP、IP) を作成write()
し、それを TUN デバイスに送信するユーザー空間プログラムがあります。パケットは私自身の Netfilter モジュールによって傍受され、受信したパケットが処理したいものであるかどうかをチェックします。次に、Netfilter モジュールがskb_clone()
元skb
の応答パケットを作成し、ユーザー空間プログラムに返されるデータを入力します。応答を送信するには、 を使用しますdev_queue_xmit()
。NET_XMIT_CN
新しい TUN デバイスを作成したばかりで、他のトラフィックが通過していないにもかかわらず、ランダムに返されます。ユーザー空間プログラムを実行し続ける (TUN デバイスに新しいパケットを送信する) と、最終的に TUN デバイスは応答しますが、一貫性はありません。なぜそんなに不規則に動作しているのかを追跡できないようです。
基本的に、ユーザー空間からカーネル空間へ、またはその逆に通信するためのメカニズムとして TUN デバイスを使用しています。
これが私のユーザー空間アプリです:
ここに私の Netfilter モジュールがあります:
私はこの行動を理解できないようです。TUN デバイスを誤用していませんか? これより簡単な方法はありますか?
追加の詳細を提供する必要がある場合、または何かを明確にする必要がある場合はお知らせください。
virtualization - 仮想化環境で vTAP インターフェースの取得に失敗する
次の設定があるとします。
2 つの KVM VM ( VM1とVM2 )、仮想ブリッジvirbr、および 2 つのブリッジ タップvTAP1とvTAP2を実行するホスト。VM はそれぞれ vTAPS に接続されます。
ブリッジ上のさまざまな負荷メトリックを測定するアプリケーションをホスト上で実行しています。これを実現するには、測定のためにブリッジを介して vTAP 間でパケットをストリーミングするために、vTAPS を取得する必要があります。問題
は
、ioctl TUNSETIFF syscall がEBUSY errnoで失敗するため、vTAPS を取得できないことです。アプリケーション(ホスト上で実行される)がタップ(VMが所有する)の所有者ではない
ために発生すると思います。VM vTAPS 間のフローを直接測定したい場合があるため、測定用に新しい一時ブリッジ vTAPS を追加することが常に解決策になるとは限りません。試みられた解決策:あります
マルチキュー tuntap インターフェイス:
Linux は、複数のファイル記述子 (キュー) を使用してパケットの送受信を並列化できるマルチキュー tuntap をサポートしています。デバイスの割り当ては以前と同じで、ユーザーが複数のキューを作成したい場合は、同じデバイス名の TUNSETIFF を IFF_MULTI_QUEUE フラグで何度も呼び出す必要があります。
IFF_MULTI_QUEUEを使用すると、ioctlがEBUSY errno で失敗することはなくなりましたが、vTAP への書き込みシステムコールでEINVAL errno で失敗し始めました。それで根本的な解決にはなりませんでした。
助けていただければ幸いです、ありがとう。