詳細説明: Linuxネットワーク仮想化技術

詳細説明: Linuxネットワーク仮想化技術

Linux ネットワーク仮想化は、LXC プロジェクトのサブプロジェクトです。 LXC には、ファイル システム仮想化、プロセス空間仮想化、ユーザー仮想化、ネットワーク仮想化などが含まれます。ここで、LXC ネットワーク仮想化は、複数のネットワーク環境をシミュレートするために使用されます。

[[271592]]

この記事は、基本的なネットワーク機器から始まり、特定の実験リンクに進み、Linux 自体の仮想ネットワーク環境のマクロ的な理解を提供することを目指しています。

TUNデバイス

TUN デバイスは、プログラムがネットワークの動作を簡単にシミュレートできるようにする仮想ネットワーク デバイスです。まず、物理デバイスがどのように動作するかを見てみましょう。

物理ネットワーク カードによって受信されたすべてのパケットは、処理のためにカーネルのネットワーク スタックに引き渡され、その後、ソケット API を介してユーザー プログラムに通知されます。 TUN がどのように機能するかを見てみましょう。


通常のネットワーク カードはネットワーク ケーブルを介してデータ パケットを送受信しますが、TUN デバイスはファイルを介してデータ パケットを送受信します。このファイルへのすべての書き込み操作は、TUN デバイスを介してデータ パケットに変換され、カーネルに送信されます。カーネルが TUN デバイスにパケットを送信すると、このファイルを読み取ることでパケットの内容を取得できます。

TUN デバイスを使用して UDP ベースの VPN を構築する場合、全体のプロセスは次のようになります。


パケットはカーネル ネットワーク スタックを 2 回通過します。ただし、アプリによって処理された後、データ パケットは暗号化され、元の IP ヘッダーは UDP 内にカプセル化されるため、2 回目にネットワーク スタック カーネルを通過すると、まったく異なるネットワーク パケットが認識されます。

TAPデバイス

TAP デバイスは、次の点を除いて TUN デバイスとまったく同じように動作します。

TUN デバイスの /dev/tunX ファイルは、IP 層のデータ パケットを送受信し、IP 層でのみ機能します。物理ネットワーク カードとブリッジすることはできませんが、レイヤー 3 スイッチング (ip_forward など) を介して物理ネットワーク カードに接続できます。

TAP デバイスの /dev/tapX ファイルは、MAC 層のデータ パケットを送受信します。 MAC 層機能を持ち、物理ネットワーク カードとブリッジでき、MAC 層ブロードキャストをサポートします。

マックVLAN

場合によっては、複数の IP アドレスと複数の MAC アドレスを物理ネットワーク カードにバインドする必要があります。複数の IP をバインドするのは簡単ですが、これらの IP は物理ネットワーク カードの MAC アドレスを共有するため、設計要件を満たさない可能性があります。したがって、次のように動作する MACVLAN デバイスが存在します。

MACVLAN は、受信したパケットの宛先 MAC アドレスに基づいて、パケットをどの仮想ネットワーク カードに渡すかを決定します。 MACVLAN だけを使用するのは意味がないように思えますが、先ほど紹介したネットワーク名前空間を使用すると、次のようなネットワークを構築できます。


macvlan と eth0 は異なる名前空間にあり、異なるネットワーク スタックを持っているため、仮想名前空間でネットワークを使用するためにブリッジを構築する必要はありません。

マックVTAP

MACVTAP は MACVLAN の改良版です。 MACVLAN と TAP デバイスの機能を組み合わせ、MACVLAN を使用してデータ パケットを送受信します。ただし、受信したパケットは処理のためにネットワーク スタックに送信されません。代わりに、/dev/tapX ファイルが生成され、次のファイルに送信されます。

MACVLAN は MAC 層で動作するため、MACVTAP は MAC 層でのみ動作し、MACVTUN のようなデバイスは存在しません。

仮想ネットワーク環境の作成

コマンドを使用する

  1. $ ip netns net0を追加します

独立したネットワーク カード スペース、ルーティング テーブル、ARP テーブル、IP アドレス テーブル、iptables、ebtables などを含む、完全に分離された新しいネットワーク環境を作成できます。つまり、ネットワーク関連のコンポーネントは独立しています。

コマンドを使用する

  1. $ ip netns リスト
  2. ネット0

作成したネットワーク環境を確認できます

仮想ネットワーク環境に入る

コマンドを使用する

  1. $ ip netns exec net0
  2. `コマンド`

net0仮想環境では任意のコマンドを実行できます

このようにして、新しいネットワーク環境でシェルを開くと、新しいネットワーク環境には lo デバイスが 1 つだけ存在し、この lo デバイスは外部の lo デバイスとは異なり、相互に通信できないことがわかります。

2つのネットワークを接続する

新しいネットワーク環境にはネットワーク機器がなく、外部と通信できません。それは孤立した島です。 2 つのネットワーク環境を接続するには、次の方法を使用できます。簡単に言えば、2 つのネットワーク環境の間にネットワーク ケーブルを引くことです。

  1. $ ip netns にnet1を追加します

まず、別のネットワーク環境 net1 を作成します。私たちの目標は、net0 と net1 を接続することです。

ここでは、パイプに似た veth 仮想ネットワーク カードのペアを作成します。 veth0 に送信されたデータ パケットは veth1 によって受信され、veth1 に送信されたデータ パケットは veth0 によって受信されます。これは、マシンに 2 つのネットワーク カードをインストールし、それらをネットワーク ケーブルで接続するのと同じです。

  1. $ ip link set veth0 netns net0
  2. $ ip link set veth1 netns net1

これら 2 つのコマンドの意味は、veth0 を net0 環境に、veth1 を net1 環境に移動するということです。結果を見てみましょう。

veth0 veth1 は私たちの環境では消えてしまい、それぞれ net0 と net1 に現れます。次に、net0 と net1 間の接続をテストします。

2 つのデバイスを個別に設定し、ping を使用して接続をテストします。


少し複雑なネットワーク環境


仮想ネットワーク環境を作成し、ネットワークケーブルを接続します。

  1. ip netnsnet0を追加します
  2. ip netnsネット1を追加
  3. ip netnsブリッジを追加
  4. IPリンク追加タイプveth
  5. ip リンクセットdev veth0名前net0-bridge netns net0
  6. ip link set dev veth1 name bridge-net0 netns ブリッジ
  7. IPリンク追加タイプveth
  8. ip リンクセットdev veth0名前net1-bridge netns net1
  9. ip link set dev veth1 name bridge-net1 netns ブリッジ

ブリッジで br デバイスを作成して設定します。

  1. ip netns execブリッジ brctl addbr br
  2. ip netns execブリッジ ip link set dev br up
  3. ip netns execブリッジ ip link set dev bridge-net0 up
  4. ip netns execブリッジ ip link set dev bridge-net1 up
  5. ip netns execブリッジ brctl addif br ブリッジ-net0
  6. ip netns execブリッジ brctl addif br ブリッジ-net1

次に、2 つの仮想環境のネットワーク カードを構成します。

テスト:


はい、今日はこれで終わりです。

やっと

NDK 基本開発プロセス - Linux プロセス概要

<<:  SaaS、PaaS、IaaSの市場動向

>>:  Java仮想マシン(効率的な並行性)に関する深い理解

推薦する

blazingswitch-1 USD 3か月間 VPS: 512 メモリ/5M 無制限/G ポート

blazingswitch は、Authorize.net のビジネス認証に合格し、独自の ARIN...

Baiduスパイダークローリングの簡単な分析

最近はWebサイトや商品のプロモーションに携わっています。分からないことも多いのですが、プロモーショ...

クラウドベース(物理)サーバーの10%割引:米国cn2 gia 100M-1750元/月、香港cn2高防御(20M帯域幅)-1782元/月、国内100G高防御(20M帯域幅)-649元/月

Yunji を選んでサポートしていただいた膨大な数のお客様への感謝の気持ちを表すため、Yunji は...

企業における人工知能の応用と人材発掘テンセントクラウド「タレントプログラム」企業新技術実践クラウドサロン広州駅開催

2020年は人工知能技術の発展にとって重要な年です。流行の期間中、世界は流行との戦いにおいて人工知能...

初心者のためのクラウドコンピューティング入門

2006 年 8 月 9 日、当時 Google の CEO であった Eric Sc​​hmidt...

PS メールはウェブサイトのランキングを下げる可能性があります。不満を抱かないでください。

このタイトルはちょっと怖くて信じられないと思うかもしれません。はい、私も最初はあなたと同じ反応をしま...

orbitservers-6 USD/年/128 MB RAM/256 MB スワップ/8 GB ハードドライブ/125 GB データ トラフィック

OrbitServers の OVZ がプロモーション中です。128 MB のメモリを搭載した OV...

2022年までに産業企業の90%がエッジコンピューティングを使用する

Frost & Sullivan の最近のレポートによると、エッジ コンピューティングは、レ...

パンデミック中に最も人気があった電子商取引モデル:コミュニティ電子商取引

2018年1月、新型コロナウイルス感染症が流行しました。この特別な時期に、全国の人々が協力して感染症...

フランスのVPSの推奨、いくつかの便利なフランスのVPS(フランスのクラウドサーバー)業者が推奨

フランスの VPS の推奨事項、フランスの VPS のレンタル、どのフランスの VPS が最適ですか...

事例分析:ウェブサイトのホームページがブロックされる理由と解決策

最近、グループ内の友人の 2 つの Web サイトのホームページがブロックされました。これが 1 つ...

おすすめのウェブサイト: loveyourlarder ユニークな食品ウェブサイト

「ユーザーが新しい食品を発見し、購入できるようにする」ことが、loveyourlarder ウェブサ...

アリババクラウド南京雲奇が技術配当を発表、コア製品は最大50%削減

4月26日、2018年雲奇会議南京サミットにおいて、アリババクラウドは新たな一連の価格調整を発表しま...

教育およびトレーニング Web サイトにおける悪いユーザー エクスペリエンスの一覧 (パート 2)

「教育・研修ウェブサイトにおける悪いユーザーエクスペリエンスの目録(パート 1)」では、主に教育・研...

誤ったキーワードクロールとランキング低下に対する対策の実践的なまとめ

みなさんこんにちは。ハルビン仮想現実ウェブサイト設計です。最近、キーワードクローリングが間違っていて...