2つのVirtualBox仮想ネットワークをブリッジするLinuxブリッジメソッドの手順

2つのVirtualBox仮想ネットワークをブリッジするLinuxブリッジメソッドの手順

では、スイッチはどのようにして Mac アドレスを登録するのでしょうか?つまり、仮想マシンのネットワーク カードがどの Mac に登録されているかはどこで確認できますか?

「仮想マシン -> 設定 -> ネットワーク」を参照してください。

ここに画像の説明を挿入

ネットワーク カードをアクティブ化するたびに、下の詳細を展開して、ネットワーク カードに登録されている Mac アドレスを確認します。

上記の実験がうまくいかなかった理由は明らかです。 H1 が H2 に ping すると、Linux Bridge 経由で H2 に ARP 要求がブロードキャストされます。H2 が受信した ARP ブロードキャストでは、送信元 MAC は当然 H1 の MAC アドレスです。H2が ARP Reply に応答すると、ターゲット MAC は H1 の MAC アドレスになります。ただし、H1 の MAC アドレスは intnet2 の仮想スイッチに登録されていないため、intnet2 のスイッチはこのフレームを転送しません。だから当然意味がないのです!

さて、次は仁経と杜経を開いて障害をなくします!今度はその方法を示す時です。

必要な手順は次の 3 つだけです。

  • intnet 上の H1 の MAC アドレスを Linux Bridge の intnet2 ネットワーク カード enp0s10 に登録します。
  • intnet2上のH2のMACアドレスをLinux Bridgeのintnetネットワークカードenp0s9に登録します。
  • Linux Bridge ホストが起動したら、ifconfig コマンドを使用して、enp0s9 および enp0s10 ネットワーク カードの MAC アドレスを他のアドレスに変更します。

ここに画像の説明を挿入

やり方をお見せしましょう。

ネットワーク カード構成インターフェイスには MAC アドレスを指定するオプションはなく、MAC をランダムに生成するボタンのみがあるようです。

ここに画像の説明を挿入

何をするか?

コマンドラインを使用してください。

特定のネットワーク カードの MAC アドレスを指定するには、VBoxManage コマンドを次のように使用します。

zhaoyadeMacBook-Pro:~ $ VBoxManage modifyvm "ubuntu new" --macaddress4 0800279ff0e6
zhaoyadeMacBook-Pro:~ $ VBoxManage modifyvm "ubuntu new" --macaddress3 080027bb3d67

上記の0800279ff0e6は H1 enp0s9 の MAC アドレスであり、 080027bb3d67 はH2 enp0s9 の MAC アドレスです。ネットワーク構成インターフェイスから、次のことがわかります。

ここに画像の説明を挿入

さて、Linux Bridge マシンを起動して、3 番目の手順を完了します。この手順は、アドレスの競合によって Bridge の転送テーブルが汚染されるのを防ぐために必要です。

  • 0800279ff0e6 は H1 の intnet から学習できます。
  • 0800279ff0e6 は独自の enp0s10 に設定されています。

混乱していますか?したがって、Linux Bridge の 2 つのネットワーク カード enp0s9 と enp0s10 の MAC アドレスを他のものに変更する必要があります。VirtualBox の内部ネットワーク スイッチはこの変更を認識しません (新しいネットワーク カードをアクティブ化するか、新しい MAC を再登録するだけで転送テーブルが変更されます。つまり、小さなボタンをクリックするか、VBoxManage コマンドを実行して MAC アドレスを変更します)。そのため、転送テーブルには影響しません。

では、やってみましょう:

ifconfig enp0s9 ハードウェアイーサ 08:00:27:bb:3d:68
ifconfig enp0s10 ハードウェアイーサ 08:00:27:9f:f0:e7

すべての手順が完了しました。テストしてみましょう。

brctl 追加br br0;
brctl を追加します。
brctl を追加すると、br0 enp0s10 になります。
ifconfig br0 アップ;

もう一度Pingしますか?

ここに画像の説明を挿入

これが解決策ではないでしょうか...

実際、HostOnly モードでのブリッジングは内部ネットワークでのブリッジングと似ており、問題と解決策も同じです。

2 つのネットワークをブリッジできないというこの問題が VirtualBox の意図的なものなのか、それとも実際に実装上の欠陥なのかはわかりませんが、実際の作業でこの要件に遭遇したので、私個人の意見としては、これは欠陥です。これは明らかに VMWare の LAN セグメントよりも劣っています。

それとも、VirtualBox では Mac OS でのみこの問題が発生するのでしょうか? Windowsでも大丈夫ですか?はっきりとは言えません。Windows プラットフォームを離れてからほぼ 2 年が経ちました。

この問題はほぼ1日で解決しました。

最初は、brctl の設定に問題があると思いました。どうしてこんなに明らかな操作が機能しないのでしょうか? 困惑しました。HostOnly を使用して実験したところ、パケット キャプチャによって、H1 の戻りパケットが Mac OS ホストの vboxnet1 ネットワーク カードに直接返され、vboxnet1 がパケットを Linux Bridge に転送していないことがわかりました。最初は VirtualBox のバグではないかと疑いました。システムを再起動しても効果がなかったため、大まかに意味を推測できました。 「登録スイッチ」という用語については、これは私の推測にすぎません。いずれにせよ、かなり近いものであり、明らかにこの問題に従って解決しました。

私は長い間この種の問題に遭遇していませんでしたが、それでもこの種の難しい問題を解くのが好きで、得意です。私は従来の知識に関するチュートリアルを書くのはあまり得意ではありませんが、人々があまり遭遇しないこの種の奇妙な問題に対しては、ここに私独自の魔法の薬があります。

答えを見つけるまで、私は長い間 Google 検索をして、VirtualBox の LAN セグメントに相当するものを探したり、内部ネットワークと LAN セグメントの違いを探したりしました。Mac OS で仮想スイッチを見つけて、仮想イーサネットと実際のイーサネットを自分で作成したいと思ったことさえありました... 本当に見つからなければ、自分で作るしかありません。

幸いなことに、この極めて非現実的な大きなシーンを始める前に、この記事で説明されている問題の解決策を突然思いつきました。ありがたいですね〜

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • VirtualBox がブリッジするネットワーク インターフェイスを指定しない問題の解決方法

この記事は、この時期の「ピーターから奪ってポールに払う」という仕事のスタイルに対する私の不満から生まれました。

まず、ディスク容量が足りません。提供されたコンピュータには12Gの空き容量しかありません。外付けハードドライブを接続できず、当面はバックアップをアップロードできません。オフラインマシンに相当します。 Linux カーネルの 4.19 バージョンをコンパイルする必要がありました... そのため、昼夜を問わず手動で圧縮してリリースし始めましたが、非常に不満でした。最終的には解決しましたが、それはディスク容量の問題に対するエレガントな解決策ではありませんでした。少なくとも、私が自慢していると思われるような方法ではありませんでした。

ディスク容量に関する苦情と比較すると、次の質問は少し興味深いです。

仮想マシンを使用してネットワーク テスト環境を構築する場合、さまざまな奇妙な問題に必ず遭遇します。これらの問題は、さまざまな仮想マシン プラットフォームの欠陥によって発生することがよくあります。 (私の認識が狭いのかもしれませんが、仕事の妨げになる仕組みは欠陥だと思います)

結局のところ、仮想ネットワークは現実のものではありません。ネットワーク技術の40年以上の発展を経て、ソフトウェアが包括的なテストに合格することはほぼ不可能であり、設計が不完全であることは正常です。

たとえば、VirtualBox を使用して、次の要件を満たすテスト環境を構築します。

2 つのネットワーク間のブリッジとして機能する Linux ホストが必要です。 (途中でいくつかのルールを設定する必要があり、ルーティングを通過したくない)

ここに画像の説明を挿入

シンプルですよね?試してみましたか?

そのアイデアは非常に直接的でシンプルです。 VMWare の Lan セグメントと同様に、VirtualBox には内部ネットワークと呼ばれる仮想ネットワークがあり、簡単に内部プライベート ネットワークを作成することができます。

ホスト B はブリッジとして機能し、ネットワーク カードの構成は次のようになります。

ここに画像の説明を挿入

2 つのネットワーク内の 2 つのホストを接続するブリッジとして、Linux システムは次のように構成されます。

brctl 追加br br0;
brctl を追加します。
brctl を追加すると、br0 enp0s10 になります。
ifconfig br0 アップ;

ホスト H1 の enp0s9 を内部モードに設定し、intnet に接続します。

ここに画像の説明を挿入

H1 の Linux システム構成は次のとおりです。

ifconfig enp0s9 40.40.40.201/24

ホスト H2 の enp0s9 を Internel モードに設定し、intnet2 に接続します。

ここに画像の説明を挿入

H2 の Linux システム構成は次のとおりです。

ifconfig enp0s9 40.40.40.100/24

H1 と H2 は互いのアドレスを ping できると思いますか?

試してみると、うまくいかないことがわかります。

2019 年 11 月 8 日現在、6.0.14 が最新です。

ここに画像の説明を挿入

はい、いいえ!

まず理由を説明し、次にその方法を説明します。

それで、なぜ?

内部に仮想学習スイッチ (以前はブロードキャスト ハブでした)を持つ VMWare の LAN セグメントとは異なり、 VirtualBox の内部ネットワーク内のスイッチは学習スイッチではなく、登録済みスイッチです。

いわゆる登録済みスイッチとは、Mac アドレスが登録されている場合にのみトラフィックを転送することを意味します。このタイプのスイッチには、次の 2 つの転送戦略しかありません。

ブロードキャスト フレームの場合、すべてのポートがコピーを送信します。ユニキャスト フレームの場合、宛先 MAC アドレスが登録されているポートにのみ送信されます。

明らかに、内部にテーブルがあると推測されます。

ポート登録Macアドレス
1 位マック1
2位マック2

<<:  OneProxy に基づいて MySQL の読み取り/書き込み分離と負荷分散を実装する

>>:  1つの記事でTypeScriptのデータ型について学ぶ

推薦する

MySQLカーソルの使い方と機能の詳細な説明

[mysqlカーソルの使い方と機能]例:現在、テーブル A、B、C の 3 つのテーブルがあります。...

HTML テーブル マークアップ チュートリアル (37): 背景画像属性 BACKGROUND

テーブル ヘッダーの背景画像を設定します。任意の GIF または JPEG 画像ファイルを使用できま...

アダプティブ Web デザインの手法 (モバイル フォンでの優れたアクセス エクスペリエンス)

1. HTML ヘッダーにビューポート タグを追加します。ウェブサイトの HTML ファイルの先頭...

Mysql ALTER TABLE はフィールドを追加するときにテーブルをロックしますか?

目次MySQL 5.6以前MySQL 5.6以降要約する知らせMySQL 5.6以前更新手順元のテー...

JavaScript クラス配列の詳細な理解

js 配列はどこでも使用されているため、おそらく誰もがよく知っているでしょうが、配列クラス (疑似配...

VUE+Canvasはデスクトップピンボールブロック破壊ゲームのサンプルコードを実装します

誰もがピンボールやレンガ崩しのゲームをプレイしたことがあるでしょう。左と右のキーを使用して、下にある...

Reactでwindow.print()を使用した際にページが応答しなくなる問題の解決記録について

目次1. 問題の背景: 2. 問題の原因: 3. 問題解決:要約: 1. 問題の背景: window...

Docker ベースの MySQL マスタースレーブレプリケーション環境を構築するための実装手順

1. はじめに以前のプログラム アーキテクチャは次の形式になります。プログラムのサイズが大きくなると...

MySQL データ型の詳細

目次1. 数値型1.1 数値型の分類1.1.1 浮動小数点数1.1.2 ビットタイプ1.1.3 時間...

JDBC および MySQL 一時テーブルスペースの詳細な分析

背景一時テーブルスペースは、データベースのソート操作を管理し、一時テーブルや中間ソート結果などの一時...

Windows 10 での MySQL 5.7.17 のインストールと設定方法のグラフィック チュートリアル

この記事では、最新バージョンの MySQL データベース、つまり MySQL 5.7.17 圧縮バー...

Web面接におけるJS事前解析と変数プロモーションの違い

目次事前分析とは何ですか?変数と関数の準備の違いvar 変数の繰り返し宣言変数と関数の昇格の優先順位...

CSS 使用のヒントのまとめ

最近、ブログのアップグレードを始めました。テンプレートを変更する過程で、CSS スタイルシートを書き...

require loaderの実装原理の深い理解

序文Node は新しいプログラミング言語ではなく、JavaScript のランタイムに過ぎないとよく...

MySQL の大きなテーブルで大量のデータを一括削除する方法

質問はhttps://www.zhihu.com/question/440066129/answer...