他のコンピュータでLinuxのTapデバイスと通信する方法

他のコンピュータでLinuxのTapデバイスと通信する方法

私はMacのVMware FusionでLinuxを実行しています。 Linuxでは、TAPデバイス(下にリンクされているPicoTCPと呼ばれる)に基づくTCPエコーサーバーを使用しています。https://github.com/tass-belgium/picotcp)。次のコマンドを使用してエコサーバーを実行します。sudo ./build/test/picoapp.elf --tap tap1:192.168.13.37:255.255.255.0 --app tcpecho:8000ターミナルウィンドウで、次のコマンドを使用してエコサーバーと通信できます。sudo ip addr add 192.168.13.38/24 dev tap1 ; sudo ip link set tap1 up;その後、次の簡単なnetcatが続きますnc 192.168.13.37 8000。私の目標は、仮想マシンの外部でnetcat(またはそれに対応するコマンド)を実行して、Mac(または同じネットワーク上の他のコンピュータ)でtcp echoサーバーと通信できるようにすることです。どうすればいいですか?現在、VMネットワークカードのIPアドレスまたはpicotcpサーバーの実行時に指定したIPアドレス(この場合は192.168.13.37)を使用してnetcatを実行しようとすると動作しません。

とても感謝しています!また、現在の設定に関する追加情報が必要な場合はお知らせください!

答え1

持っているネットワークを理解する必要があります。通信が停止する可能性がある複数のポイント(少なくとも2つ)があり、外部からデバイスにアクセスするには、まずこれらのポイントをすべて解決する必要があります。

説明によると、サーバーが待機しているローカルコンピュータにTAPデバイスがあります。通常、Linuxシステムの外部では、VMWareネットワークの他の仮想マシンでもこのTAPインターフェイスにアクセスすることはできません。解決策は、TAPをLinuxのイーサネットインターフェイスに接続することです(愚かなRedHatソリューションがない場合はeth0である必要があります。確認するにはifconfigを使用してください)。

したがって、まずブリッジを作成します。

ip link add br0 type bridge

次に、デバイスをブリッジに追加します(eth0である必要があると仮定したように、tap0と仮定します)。

ip link set tap0 master br0
ip link set dev eth0 down
ip addr flush dev eth0 
ip link set dev eth0 up
ip link set eth0 master br0

そして、ブリッジが機能していることを確認してください。

ip link set dev br0 up

これで、同じVMWare仮想ネットワーク上の仮想マシンからtap0のサーバーにアクセスできるようになりました。 2番目の仮想マシンを起動してテストする必要があります。

仮想Linuxボックスには、次のネットワークがあります。

+------+      +-------+
| tap0 |      | eth0  |
+------+      +-------+
   |             |   |
   +-------------+   +--------
      bridge 0         "outside world"

次の記事:このVMWare仮想ネットワークはどのように外界に接続しますか?このネットワークはMacでも接続されていますか?それともすでにNATですか?この場合、いくつかのポート転送ルールを提供する必要があります。多くの人がVirtualBoxを使用しているので、これがVMWareでどのように機能するのかわかりません。

VirtualBoxでは、「外部世界」にはいくつかあり、最も重要なのは次のとおりです。

  • ブリッジアダプタ:Tapインターフェイスと同様に、仮想インターフェイスはVirtualBoxを実行しているホストの外部インターフェイスにブリッジされます。仮想マシンは外部に独自のIPアドレスを持っています。

  • NAT:仮想インターフェイスはネットワークアドレス変換(NAT)を介して外部に接続されます。これがほとんどのSOHO DSLルータがインターネットに接続する方法です。外部にはIPアドレスがあり、外部からマシンにアクセスするにはポート転送を設定する必要があります。 (絶対にこれを実行しないでください。VirtualBoxで可能かどうかはわかりません。)

  • ホストのみ:VirtualBox環境でのみ利用可能な別々のネットワーク。

したがって、VirtualBoxではブリッジアダプタが最適です。

VirtualBoxでブリッジングすると仮定すると、次のネットワークが作成されます。

+------+      +-----+     }
| tap0 |      | eth0|     }
+------+      +-----+     }  in your Linux virtual machine
   |     br0    |  |      }
   +------------+  |      }
                   |
Your host (mac)    |
-----------------+ |
                 | |
              +-----------+     physical outside world
              | mac's eth0|--------------
              +-----------+

注意すべき他の問題は、IP計画とサブネットです。

関連情報