問題タブ [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.
networking - OSX で TUN インターフェイスの IP アドレスを設定するにはどうすればよいですか (宛先アドレスなし)?
OSX で TUN インターフェイスの IP アドレスを設定するにはどうすればよいですか? 宛先 IP を指定せずにインターフェイスの IP アドレスを設定する方法がわかりません。私はそれをしたくありません-後で任意のアドレスへのトンネルを多かれ少なかれ構築したいと思っています。役に立たない以前の質問:
- 答えが不明な質問があったので、参考文献に従ってみました。
- この質問は、tun デバイスのポイント ツー ポイントの IP アドレスを設定するため、目的地がありますが、これはまさに私が望んでいないことです。
osxtuntapのページには次のように書かれています。
TUN インターフェイスの OSX 10.6 でこれを機能させることはできません。
ネットマスクを追加しても役に立ちません-OSXは宛先アドレスを要求しているようです:
Linuxの場合、それがどのように機能するかがわかります。このページによると、インターフェイスを open() し、 ip コマンドを使用してこれを実行します。これまでに問題なく実行しました。
私がやりたいことは、Linuxでできることと同じです。
編集:
私は小さなUDPトンネルアプリを書いています。そのようです:
tun1 -> udp アプリ #1 -> udp トンネル -> udp アプリ #2 -> tun2
udp アプリが異なるコンピューター (ローカルとリモートとしましょう) にある場合、それぞれの tun デバイスを IP アドレスに関連付けたいと思います。 remove マシン上の tun デバイスの IP アドレス。
Linux チュートリアルからさらに借りるために、作成者はローカルとリモートで tun デバイスをセットアップし、ips を関連付け、単純なトンネリング アプリを実行してから、トンネルの反対側に ping を送信します。
ubuntu - Ubuntu、ネットワーク TAP インターフェイスを削除
シミュレートされたネットワーク (NS-3) と実際の Linux ホストの間にブリッジを構築するために、プログラムを介してネットワーク インターフェイスを作成しています。そのため、「ブリッジされた」ノードが NS-3 でパケットを受信すると、実際の Linux ホストがパケットを受信します。
しかし、プログラムを再度実行すると、「デバイスまたはリソースがビジー状態」のため、ネットワーク インターフェイスを「消去」または削除できません。
インターフェイスをシャットダウンしようとしたり ( ifconfig <myInterface> down
)、ネットワーク サービスを再起動したり ( )、 service networking restart
tunctl で TAP インターフェイスを削除しようとしたりしましたtunctl -d myInterface
が ( )、何時間も経っても、このインターフェイスを削除したり再利用したりできません。「デバイスまたはリソースがビジーです」。
インターフェイスを削除または消去または再利用する方法を教えてください。
networking - OSX の TAP インターフェイスでのイーサネット パケット (ICMP、Bonjour) のフィルタリング
レイヤー 2 インターフェイス (TAP) をエンドポイントとして使用する小さなトンネリング アプリを作成しています。OSX でこれをテストする過程で、トンネルが単一の OSX マシンで実行されているときと、OSX と Linux ボックスの間でトンネリングされているときの両方で、トンネルで予期しないあらゆる種類のトラフィックが発生していることに気付きました。このトラフィックを除外したいのですが、これを行う最善の方法は何だろうと考えています。
トンネルは次のようになります (両方のエンドポイントが同じマシン上にある可能性があることに注意してください)。
注目すべきトラフィックは、宛先ポート 5353 の Bonjour パケットと ICMP/IGMP です。マルチキャストは、TAP インターフェイスで有効になっています。この種のトラフィックをブロックしたいと思います。これを行うことについての私の考え:
- インターフェイスでマルチキャストをオフにします (OSX では機能しません。以下を参照してください)。
- 使用する
ebtables
- トンネル アプリ内のインターフェイスから送信されるパケットを解析し、そこで無視する
これを行うためのより良い/より簡単な方法はありますか?
OSX インターフェイス (tap0 と呼びましょう) でマルチキャストをオフにしようとしましたが、エラーが発生します。
編集: もう少し調べてみると、UNIX と BSD の ifconfig には異なるオプションがあるようです。OSX/BSD の特定のインターフェイスでマルチキャスト/ICMP トラフィックをブロックする別の方法はありますか?
ここにifconfigの出力があります...
OSX (osxtuntap を使用):
Linux:
packets - Linux tun デバイスへの 1 回の書き込みで複数の IP パケットを書き込むことはできますか?
Linux の tun ドライバーが 1 回の読み取りで複数の IP パケットを返すことができることを (実際に tun デバイスを読み取ることによって) 確認しました。逆は本当ですか - tun デバイスへの 1 回の書き込みで複数の IP パケットを書き込むことができますか?
c - 仮想インターフェイスでリッスンする
私の目的は、 を作成して仮想ワイヤレス インターフェイスを作成し、そのインターフェイスにリスナーを接続することです。Cプログラムを使用してこれを実行しようとしています。
これまでのところ、次の方法で仮想インターフェイスを作成できました。
- Linux iw コマンドの使用: `
sudo iw phy phy0 インターフェイスに mySta1 タイプ ステーションを追加
しかし、Cプログラムを使用して同じことを行うライブラリを見つけることができませんでした.
Tun/Tap 永続インターフェイスの使用:
http://backreference.org/2010/03/26/tuntap-interface-tutorial/
tun_alloc は、ioctl を使用してインターフェイスを作成する関数です。
ioctl(fd, TUNSETIFF, (void *) &ifr)
ただし、このインターフェイスにはワイヤレス拡張機能はありません
インターフェイスでリッスンする場合:
nread = read(tunfd,buffer,sizeof(buffer));
ただし、これは、自分のプログラムまたは openvpn などのプログラムを使用して作成した tun デバイスでのみ機能します。wlan0 などの他のインターフェイスで使用すると、ioctl で「引数が無効です」というエラーが表示される
問題に対する私のアプローチは正しいですか? これを達成する他の方法はありますか?次のことを知りたい:
- 「iw add interface」コマンドで作成されたデバイスに tun デバイスを接続する方法はありますか?
- 仮想ワイヤレス tun/tap インターフェイスを作成する方法や、既存の tun インターフェイスのタイプをワイヤレスに変更する方法はありますか?