Xenおよびルーティングされたネットワークの問題


2

私は最後のセヴァーンの日々をこれを機能させるために費やしましたが、この記事の最後にあるガイドは曖昧または時代遅れです。私が従おうとしたいくつかのガイドへのリンクを追加しました。hetznerに専用のマシンがあり、仮想化をセットアップしたいネットワークの問題であるvmの問題を作成できます。追加のサブネットをホストにルーティングするため、hetznerネットワークでは単純なブリッジを使用できません。 MACアドレスがホストマシンと一致しない場合、IPおよびパケットを受け入れません。

私は何度も何度も試行したeth0接続を介してサブネットをルーティングするためにルーティングされたネットワークを使用する必要があることを解決しました、私はネットワークを動作させることはできません通常、dom0から割り当てたアドレスからサーバーにsshできます。tcpdumpを実行しましたが、pingパケットはdomUを意図していないのにdom0に到達していますが、domUに到達せずに停止しています。

私が試した解決策の1つはvirtualizorを使用することでしたが、最初はうまくいきましたが、その設定を取得してコントロールパネルなしで複製することでした。私はこのマシンとそのvmの唯一のユーザーであるため、私にとっては。

Debian Jessieを主に使用しているため、Debianベースのオペレーティングシステムとxlツールを使用しています。OSを14.04以降のUbuntuで試したセキュリティアップデートの合理的なサポート範囲内にしたいです。私は問題がインターフェイスファイルのセットアップだと思いますが、何が悪いのか分かりません。

どんな助けでも大歓迎です

LVM
Hetzner Xen IPv4サブネット+ IPv6サブネットに基づくルーティングされたXEN VM
Hetzner専用サーバーでのXENの
セットアップUbuntu 12.04およびHetznerでのXenのセットアップ


VMにパブリックIPアドレスを割り当てますか?
ダニエルB

はい私は、パブリックIPv4アドレスのサブネット持っている
bobthemac

サブネットができてからしばらく経ちました。個々のIPで、ロボットユーザーインターフェースのセルフサービスボタンを使用して、異なるMACアドレスを割り当てることができるようになりました。おそらく、サブネットの個々のIPでもそれを行うことができますか?
ダニエルB

何らかの理由で、サブネット上でそれを許可していません。仮想MACに私が数年前に私の古い箱の上に個々のIPを持っていたとしてのに私はサポートに確認しなかった、あなたは可能性
bobthemac

回答:


1

次のようなネットワークがあるため、Hetzner、OVH、およびOnline.netサーバーのルーテッドモードの仮想マシンネットワーク構成は直感に反します。

Host IP:       192.168.0.2
Host Netmask:  255.255.255.0 (/24)
Host Gateway:  192.168.0.1

Guest IP:      10.0.0.1
Guest Netmask: 255.255.255.255 (/32)
Guest Gateway: 192.168.0.1
Guest MAC:     02:00:00:01:02:03

上記の例は単なる例であり、前述のホスティングプロバイダーから期待できるサンプルIPアドレスではありません。

え?何?サブネットを1つのIPアドレス(10.0.0.1/32)だけにするにはどうすればよいですか?ゲートウェイの余地はありません!ゲートウェイがまったく異なるサブネット(192.168.0.0/24)にあるのはなぜですか?

これらは、ネットワークが意味をなさないため、LinuxとWindowsがネットワークの健全性チェックに失敗する問題です。彼らは、ゲートウェイに到達できないと考えています。

Hetzner、OVH、およびOnline.netは、とにかくゲートウェイを到達可能にするいくつかのネットワークトリックを使用しています。

幸いなことに、LinuxとWindowsの両方で、健全性チェックを無効にして、上記のインターフェイス構成を設定できます。


可能な解決策

静的アドレス指定

これが最も簡単です。ホスト上で行う必要があるほとんどの構成は、ブリッジを作成することです。

ホスト

のDebian / Ubuntuのあなたの管理/インターネットインターフェイスがある場合、eth0あなたは編集することができ/etc/network/interfaces橋を持っているbr0ので、同じよう:

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
        address 192.168.0.2   # Host IP
        netmask 255.255.255.0 # Host Netmask
        gateway 192.168.0.1   # Host Gateway
        metric 0
        bridge_ports eth0
        bridge_stp on
        bridge_fd 0
        bridge_maxwait 0

実行sudo service networking restartして、ブリッジネットワーク構成を有効にします。

上のRHEL / CentOSのあなたの管理/インターネットインターフェイスがある場合、eth0あなたは編集することができます/etc/sysconfig/network-scripts/ifcfg-eth0ブリッジを使用するbr0ので、のように:

TYPE="Ethernet"
BOOTPROTO="none"
DEVICE="eth0"
ONBOOT="yes"
NM_CONTROLLED="no"
BRIDGE="br0"

次に、新しいファイル/etc/sysconfig/network-scripts/ifcfg-br0を作成してブリッジを構成します。

DEVICE="br0"
BOOTPROTO="static"
IPADDR="192.168.0.2"    # Host IP
NETMASK="255.255.255.0" # Host Netmask
GATEWAY="192.168.0.1"   # Host Gateway
ONBOOT="yes"
TYPE="Bridge"
NM_CONTROLLED="no"

実行sudo service network restartして、ブリッジネットワーク構成を有効にします。

サーバーへの接続が維持されている場合、おめでとうございます、機能しているブリッジがあります!

ハイパーバイザー

純粋なXen xl(libxenlight)では、これが仮想インターフェイス構成のために記述する必要があるすべてです。

vif=[ 'mac=02:00:00:01:02:03,bridge=br0' ]

これ02:00:00:01:02:03は、Hetzner、OVH、またはOnline.netがゲストのネットワーク用に提供したMACアドレスであり、br0上記で設定したブリッジです。

タグ内でlibvirtを使用している場合<devices>、このインターフェースを追加します。

<interface type='bridge'>
  <mac address='02:00:00:01:02:03'/>
  <source bridge='br0'/>
</interface>

あなたは右のMACアドレスとブリッジで構成され、この仮想インターフェイスを持っていたら、あなたのゲストを起動し、そのコンソール(に接続しxl console domUvirsh console domU該当する場合、または、ゲストのVNCセッションに接続)。

ゲスト

Hereい部分があります。ネットワークの健全性チェックを無効にする方法は、オペレーティングシステムによって異なります。私が取り上げるのDebian / UbuntuのRHEL / CentOSの、およびマイクロソフトのWindows NTを

のDebian / Ubuntuの、インターフェースが呼び出された場合eth0、これをに書き込みます/etc/network/interfaces

auto eth0
iface eth0 inet static
        address 10.0.0.1    # Guest IP
        broadcast 10.0.0.1  # Guest IP
        netmask 255.255.255.255
        gateway 192.168.0.1 # Guest Gateway, a.k.a. Host Gateway
        post-up route add 192.168.0.1 dev eth0
        post-up route add default gw 192.168.0.1
        pre-down route del 192.168.0.1 dev eth0
        pre-down route del default gw 192.168.0.1

iproute2のコマンドは、それが別のサブネット上にあるにもかかわらず、とにかくゲートウェイを適用するには、オペレーティング・システムに伝えます。post-uppost-down

実行後sudo service networking restart、ゲストIPを介してゲストにアクセスできるようになります10.0.0.1

上のRHEL / CentOSの、インターフェースが呼び出された場合eth0、これをに書き込みます/etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"
BOOTPROTO="none"
ONBOOT="yes"
USERCTL="no"
PEERDNS="yes"
TYPE="Ethernet"
NETMASK="255.255.255.255"
IPADDR="10.0.0.1"          # Guest IP
GATEWAY="192.168.0.1"      # Guest Gateway, a.k.a. Host Gateway
ARP="yes"
HWADDR="02:00:00:01:02:03" # Guest MAC

次に、以下を書き込みます/etc/sysconfig/network-scripts/route-eth0

192.168.0.1 dev eth0
default via 192.168.0.1 dev eth0

このファイルは、別のサブネット上にあるにもかかわらず、ゲートウェイを適用するようにiproute2に指示します。

実行後sudo service network restart、ゲストIPを介してゲストにアクセスできるようになります10.0.0.1

のMicrosoft Windows NT、インターフェイスを右クリックし、「プロパティ」をクリックし、[コントロールパネル]の[ネットワーク接続]にアクセスしてください。[ネットワーク]タブで、[インターネットプロトコルバージョン4(TCP / IPv4)]を選択し、[プロパティ]をクリックします。次のようにフィールドに入力します。

インターネットプロトコルバージョン4(TCP / IPv4)のプロパティ

[OK]をクリックすると、次の警告が表示されます。

Microsoft TCP / IP:警告-デフォルトゲートウェイは、IPアドレスとサブネットマスクで定義されているのと同じネットワークセグメント(サブネット)上にありません。 この構成を保存しますか?

[OK]をクリックして、ゲートウェイを使用することを確認します。

数秒後、ゲストIPを介してゲストに到達できるはず10.0.0.1です。

DHCPダイナミックアドレッシング

残念ながら、これは不可能です。何らかの方法でゲストのDHCPDISCOVERをインターセプトした場合でも、DHCPサーバーはユーザーを割り当てて10.0.0.1/32、ゲートウェイが192.168.0.1であることを通知しません。また、この奇妙な構成を受け入れるDHCPクライアントはありません。

DHCPをセットアップするには、サブネット内にゲートウェイを持つ適切に構成されたネットワークが必要です。これを行う唯一の方法は、プライベートネットワーク(172.16.0.0/12)を作成し、ゲートウェイ()を介してゲストのプライベートIPアドレス(172.16.0.2)とパブリックIPアドレス(10.0.0.1)間のネットワークアドレス変換を行うことです172.16.0.1

プライベートネットワークとNAT

上記のすべての手順を検証しましたが、プライベートIPからパブリックIP への1対1 /基本 NAT 正常に作成できませんでした。理由の一部は、ネットワークを構築するためにやることがたくさんあるということです。

ネットワークは次のようになります。

Guest Public IP:  10.0.0.1
Guest Private IP: 172.16.0.2
Guest Netmask:    255.240.0.0 (/12)
Guest Gateway:    172.16.0.1

その後、ホストはゲストゲートウェイを介してゲストパブリックIP 10.0.0.1とゲストプライベートIPの間でトラフィックを転送します。172.16.0.2172.16.0.1

OpenStacklibvirtを介してXenサポート)は、ネットワーク抽象化OpenStack Neutronを介してこのNATセットアップとプライベートサブネットDHCPサーバーを提供できる可能性がありますが、OpenStack自体のセットアップは非常に面倒です。

Novaインスタンス/ゲスト/サーバー用に実行されているシングルノードOpenStackインストールとNeutronプライベートネットワークを取得できましたが、プライベートIPアドレス(172.16.0.0/12)を外部ネットワークIPアドレス(10.0.0.1/3210.0.0.2/32など)にNAT変換する方法がわかりませんでした)OpenStackは、すぐに使用できる仮想マシン向けのHetzner、OVH、およびOnline.netの珍しいネットワーク構造をサポートしていないためです。これは未解決の問題のままです。


追加のリソース


私は答えを感謝し、それは私もサブネットを使用していたアップ多くをクリアしないと、彼らはサブネットのMACアドレスを割り当てていない
bobthemac

@bobthemac:Hetznerに関する私の情報は少しずれていたと思いますが、Hetznerで任意のMACアドレスを使用できる可能性があります。ヘッツナーは、彼ら自身のドキュメンテーションに従って異なる提案をしています。この記事にはNATスクリプトも含まれているため、プライベートネットワークルートを選択する場合に役立ちます。
デルティック

私は以前運のないスクリプトを使用してみました。私はあなたがそれらに割り当てられたMacを取得できることがわかったので、私がどれだけ多くの単一のIPを使用できるかを確認する必要があります。
bobthemac
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.