10

OSX で TUN インターフェイスの IP アドレスを設定するにはどうすればよいですか? 宛先 IP を指定せずにインターフェイスの IP アドレスを設定する方法がわかりません。私はそれをしたくありません-後で任意のアドレスへのトンネルを多かれ少なかれ構築したいと思っています。役に立たない以前の質問:

  1. 答えが不明な質問があったので、参考文献に従ってみました
  2. この質問は、tun デバイスのポイント ツー ポイントの IP アドレスを設定するため、目的地がありますが、これはまさに私が望んでいないことです。

osxtuntapのページには次のように書かれています。

ifconfig tap0 10.1.2.3 up

TUN インターフェイスの OSX 10.6 でこれを機能させることはできません。

$ sudo ifconfig tun0 10.1.2.3 up
ifconfig: ioctl (SIOCAIFADDR): Destination address required

ネットマスクを追加しても役に立ちません-OSXは宛先アドレスを要求しているようです:

$ ifconfig tun0 10.0.0.1/24 netmask 255.255.255.0
ifconfig: ioctl (SIOCAIFADDR): Destination address required

Linuxの場合、それがどのように機能するかがわかります。このページによると、インターフェイスを open() し、 ip コマンドを使用してこれを実行します。これまでに問題なく実行しました。

$ ip link set tun0 up
$ ip addr add 10.0.0.1/24 dev tun0

私がやりたいことは、Linuxでできることと同じです。


編集:

私は小さなUDPトンネルアプリを書いています。そのようです:

tun1 -> udp アプリ #1 -> udp トンネル -> udp アプリ #2 -> tun2

udp アプリが異なるコンピューター (ローカルとリモートとしましょう) にある場合、それぞれの tun デバイスを IP アドレスに関連付けたいと思います。 remove マシン上の tun デバイスの IP アドレス。

Linux チュートリアルからさらに借りるために、作成者はローカルとリモートで tun デバイスをセットアップし、ips を関連付け、単純なトンネリング アプリを実行してから、トンネルの反対側に ping を送信します。

[remote]# ip link set tun3 up
[remote]# ip addr add 192.168.0.2/24 dev tun3
[remote]$ ./simpletun -i tun3 -s
# server blocks waiting for the client to connect
[local]# ip link set tun11 up
[local]# ip addr add 192.168.0.1/24 dev tun11
[local]$ ./simpletun -i tun11 -c 10.2.3.4
# nothing happens, but the peers are now connected
[local]$ ping 192.168.0.2
4

1 に答える 1

11

デフォルトでは、tun デバイスはレイヤー 3 モード (ポイントツーポイント) で動作します。一般的なイーサネット デバイスにより近いレイヤー 2 モードを求めています。Linux はこれらのタップ デバイスを呼び出します。OpenBSD では、「ifconfig tun0 link0」で tun デバイスをレイヤー 2 モードに切り替えることができます。Macintosh の tuntaposx ドライバーは、Linux のデバイス分裂を模倣しています。代わりにタップ デバイスを開きます。

本当にタップ デバイスが必要かどうかを判断するには、https://community.openvpn.net/openvpn/wiki/BridgingAndRoutingを確認してください。少しオーバーヘッドが追加されます。互いに IP パケットを渡すために 2 つのボックスだけが必要で、より大きなサブネットへのブリッジやブロードキャストが必要ない場合は、ポイント ツー ポイントで十分です。

たとえば、2 台のマシンがあり、1 台は 192.168.0.12 のような LAN IP アドレスで「ローカル」とラベル付けされ、もう 1 台は 192.168.1.14 のような LAN IP アドレスで「リモート」とラベル付けされている場合、次のようにトンネル IP アドレスを割り当てることができます。

ifconfig tun0 inet 10.0.0.1 10.0.0.2 up

ローカル システム上、および:

ifconfig tun0 inet 10.0.0.2 10.0.0.1 up

リモートシステム上。リモート マシンの視点が逆になっていることに注意してください。ポイントツーポイント アドレスを既存のサブネット上に設定しないでください。正しくルーティングされません。

私はこれを十分に強調することはできません: マニュアルページ (「man ifconfig」と「man tun」、おそらく他のもの) を読んで、意味がわかるまで読み直してください。上記の ifconfig の例は、お使いのオペレーティング システムとは若干異なる場合があります。

また、別の観点から、GRE トンネルを調べることができます。その機能は、プログラムについて記述した内容を反映しているからです。ただし、GRE は、今日の TCP 中心のネットワークでは実行できない可能性が高く、重大なセキュリティ上の問題があるため、良い考えではありません。

威圧的なファイアウォールを回避することが目標である場合は、そのようなファイアウォールの多くが UDP (および特に GRE) パケットをブロックすることに注意してください。このような場合は、SSH インターフェイス トンネリングを試して、tun/tap インターフェイスを設定し、パケットを転送します。暗号化と、オプションで圧縮も取得できます。:)

于 2013-07-07T12:06:00.070 に答える