web-dev-qa-db-ja.com

DHCPを使用するようにOpenNebulaを構成する

ネットワーク上にすでに存在するDHCPサーバーを使用するようにOpenNebulaを構成しようとしています。はい、OpenNebulaがIPアドレスではなく仮想MACアドレスを管理していることはすでに知っていますが、それではこれを機能させる方法がわかりません。 ;)

私のゲストとホストはどちらもCentOSなので、必要なのは、BOOTPROTO = dhcpが/ etc/sysconfig/network-scripts/ifcfg-eth0にダンプされるようにコンテキスト化を構成することだけだと思います。

  1. これが発生するようにコンテキスト化を構成するにはどうすればよいですか?テンプレートを特定の方法で変更するだけですか?もしそうなら、それはどのように行われますか?
  2. これらの新しいコンテキスト化設定を使用してテンプレートを構成したら、仮想ネットワークをONEでどのように構成する必要がありますか?

これは、VMの静的IPの束を管理するよりも単純であるように見えるため、これは簡単に実行できるように思われます。これは一般的な使用例であると思われます。しかし、これまでのグーグルはほとんど現れていません。

ありがとう!

編集:BOOTPROTO = dhcpおよびDHCP_HOSTNAME = fooを手動で設定し、vmでネットワークを再起動すると、DHCPサーバーはvmにIPアドレスを正常に提供します。これで問題ありません。スピンアップするVMのホスト名も設定できるようにしたいと思います。

今では、ONEにこれらのことを自動的に/ WebインターフェイスまたはCLIツールを介して実行させる方法を決定するだけです。また、DHCPがVMに与えたIPではなく、元のリースのIPアドレスをリストします。その問題も修正してもらうといいでしょう。

3
cat pants

私のOpennebulaはバージョン4.8.0です。私も同様のニーズを持っていたので、これが私がしたことです:

  1. DHCP用にIP範囲を予約するように、ネットワークにすでに存在するDHCPサーバーを構成しました。範囲は10.23.1.201-10.23.1.254でした。これは54の動的IPです。
  2. 「DHCP」という名前の新しい仮想ネットワークを作成しました。 [アドレス]タブで、[イーサネット]ラジオボタンを選択しました。このように、Opennebulaはこのネットワークを使用するVMにのみMACアドレスを提供します。とにかくオプションなので、「MACスタート」は空のま​​まにしました。 DHCPがこれだけ多くの動的IPアドレスを提供できるため、[サイズ]フィールドに54と入力しました。したがって、Opennebulaは新しいVMにMACアドレスのみを提供し、それ以上は提供しません。

DHCPを使用するには、ゲストOSを手動で設定する必要があります。それを自動的に行う方法はわかりませんが、それは大きな問題ではありません。

これが、DHCPを使用するテンプレートを作成するためにさらに進んだ方法です。次に、CentOS6.5などの新しいオペレーティングシステムをインストールしました。

  1. この新しい仮想ネットワークと2つのディスク(ISOイメージと「persistent = yes」に設定された空のデータブロックイメージ)を使用してテンプレートを作成しました。
  2. 次に、テンプレートをインスタンス化し、VM ISOから起動し、VMをインストールするときに、ネットワーク構成を「動的」のままにします。
  3. インストールが完了すると、my VMには、実際のマシンであるかのように、DHCPサーバーから自動的に割り当てられたIPがあります。
  4. 次に、VMを停止して削除します。
  5. データブロックイメージを「persistent = no」に戻します。

これで、そのテンプレートから生成されるすべての新しいVMは、「DHCP」仮想ネットワークを使用し、動的IPアドレスを持ち、OpennebulaはそのようなVMのIPアドレスを表示しません。

ホスト名の自動設定についてはお答えできませんが、ゲストOSとDHCPの設定の問題だと思います。一方、DHCPはどのホスト名をどのMACアドレスに与えるかを知っている必要があり、OpennebulaはそれらのMACアドレスを動的に生成するため、DHCPサーバーにそれらについて事前に通知する方法がわかりません。

1
Pavel Tankov

にとって v4.x(4.10未満?):

まず、必要な設定を使用してVNETを作成します。たとえば、ブリッジネットワークの場合、次のようになります。

NAME = "net0"
TYPE = "FIXED"
BRIDGE = "br0"

次に、そのVNETに関連付けられたリースを作成します。 IPアドレスは必須で一意ですが、DHCPを使用している場合はNIC 'キー'としてのみ使用されます(以下を参照))。MACアドレスは次のように設定してください。 DHCPサーバーはそれにアドレスを提供します:

VNET = "net0"
IP = "192.168.0.1"
MAC = "02:00:d7:00:00:01"

次に、VMにNICを追加します。

NETWORK = "net0" IP = "192.168.0.1" MODEL = "virtio"

次に、そのMACアドレスに対してDHCPを適切に構成してください。

にとって 4.x > 10?および5.x、リースがアドレス範囲に置き換えられていることを除いて、ほぼ同じです。

上記のように(ほぼ)VNETを作成します。

NAME = "net0"
VN_MAD = "dummy"
BRIDGE = "br0"

次に、1つのアドレスのみを含むアドレス範囲を作成します。

VNET= "net0"
SIZE = "1"
MAC = "02:00:d7:00:00:01"

VMでこのARを使用します。

NETWORK="net0"
MAC="02:00:d7:00:00:01"
MODEL="virtio"

また、必要に応じてDHCPを設定します。

アドレス範囲の詳細については、こちらをご覧ください。

0
match

自分でhostnamectlできるようになるまで、dhcpdconfigビットを使用して新しいボックスに暫定ホスト名を設定することを検討してください。ログを調べたりIPを推測したりすることなく、接続に使用できる推測可能なホスト名を設定できるという利点があります。

if (not (option Host-name ~~ "^[a-z0-9][a-z0-9\-]+[a-z0-9]$")) {
    set new_Host-name = concat("Host-", binary-to-ascii(16, 8, "", substring(hardware, 1, 6)));
    log(concat("invalid hostname: ", option Host-name, " => ", new_Host-name));
    ddns-hostname = new_Host-name;
} else {
    ddns-hostname = pick (option fqdn.hostname, option Host-name, substring (option dhcp-client-identifier, 1, 20));
}

Peter Rathlevによるすばらしい投稿からこれを取得しました: https://lists.isc.org/pipermail/dhcp-users/2013-March/016518.html 。別の質問への回答ですが、dhcpdを構成して驚くべきことを実行し、少なくとも必要と思われることを実行する方法の優れた例を提供します。

0
user2066657