プライマリのProxmox VE IP アドレスを安全に変更する方法

Proxmox VE を運用していると、ホストの IP アドレスを変更しなければならない場面があります。理由はさまざま(ローカル DC の再構成、オフィス移転、別の DC 事業者への移行など)。本記事では、Proxmox の IP アドレスを変更する手順をステップバイステップで解説します。

Proxmox VE の IP アドレス変更における前提条件

Proxmox のインストーラでは、静的 IP の設定を行います。DHCP での取得(例:DHCP でリースした IP を Proxmox ホストの NIC の MAC アドレスにバインド)も可能ですが、推奨は静的 IP 構成です。

ここでいう「Primary の Proxmox IP」は、Proxmox ホストの管理に使う IP を指します。共有ストレージ接続用など、他の物理 NIC に別 IP を持たせることもありますし、Proxmox ホスト上でルーティングされた VM ネットワーク(NAT)用の IP を持つこともあります。本稿の主目的は、ホスト管理用 IP の変更です。

本記事の例となる初期構成:

  • IP アドレス:192.168.101.229(Proxmox の静的 IP)
  • ネットマスク:255.255.255.0
  • ゲートウェイ:192.168.101.2
  • ホスト名:deb-proxmox
  • ブリッジ:192.168.101.229 でブリッジを構成し、VM と物理ネットワーク間/VM 同士の接続を確立
  • クラスタ:この Proxmox ホスト(192.168.101.229)は非クラスタ(クラスタの場合は手順が異なる)

最も効率的な方法はコマンドラインでの変更です。代替としてWeb インターフェイスからも変更できます(インストールや初期構成の詳細は How to Install Proxmox を参照)。

コマンドラインで Proxmox の IP アドレスを変更する

  1. SSH で Proxmox ホストに接続し、ログインします。Proxmox Web UI の対象ホストで Shell を押して CLI に入っても構いません。外部 SSH クライアントを使う場合は、ホスト側に SSH サーバが設定済みで、ファイアウォールでブロックされていないことを確認してください。
  2. 構成変更には root 権限が必要です。
    sudo -i
  3. 現在の IP 構成を確認します。
    ifconfig 出力には、設定対象となるブリッジ vmbr0(例:ens33 にブリッジ)が表示されます。インターフェイス名や IP は環境により異なります。例では ens36 に接続された vmbr110.10.101.229)が VM の NAT ネットワーク用ですが、本稿ではこの 10.10.101.0/24 の構成は変更しません。
  4. 注意:変更前に必ず設定ファイルをバックアップしましょう(例:cp file-original file-copy)。
  5. /etc/network/interfaces を編集し、IP を変更します(エディタは nano でも vim でも可)。
    nano /etc/network/interfaces
    • 別ネットワークの IP に変更する場合は、ゲートウェイも同一ネットワークの値に更新が必要です。
    • 必要に応じて DNS(nameserver) も変更します(ネットワークにより異なる)。
    注1:VM 用のルーティッド(NAT)ネットワークを使っている場合は、該当するインターフェイス/ネットワーク/iptables(ルーティング)も合わせて見直してください。
    注2:/24 から /16 などネットワークサイズを変える場合は、アドレスとマスクの整合をとってください。 例では、ブリッジ側(管理用)の IP を 192.168.101.229192.168.105.229 に変更し、ゲートウェイを 192.168.101.2192.168.105.2 に変更します。 保存と終了:Ctrl+OEnterCtrl+X
  6. /etc/hosts を編集し、ホスト名の名前解決が新 IP に一致するようにします。
    nano /etc/hosts 例:deb-proxmox の行で 192.168.101.229192.168.105.229 に変更。保存と終了は同様に Ctrl+OCtrl+X
  7. ネットワークサービスを再起動して反映します。
    systemctl restart networking うまく再起動できない/反映されない場合は、VM を停止したうえでホストを再起動します。
    init 6
  8. 変更後は、Web UI や SSH 接続に新しい IP を使用します。接続しているネットワークが正しいことを確認してください。

Web インターフェイスから Proxmox の IP アドレスを変更する

2つ目の方法は Proxmox の Web UI を使うやり方です。初心者にとって扱いやすいですが、内部的には /etc/network/interfaces/etc/hosts を編集している点は同じです(GUI というだけで原理は同じ)。

初期構成は前節の CLI 例と同じです。例では Web UI へは https://192.168.101.229:8006 でアクセスします(8006 は既定の管理ポート)。

  1. Proxmox VE の Web UI にログインし、左ペインで IP を変更したいホストを選択(例:deb-proxmox)。
  2. System → Network を開き、管理に使っているネットワークインターフェイス(例:vmbr0)を選んで Edit
  3. 設定ウィンドウで以下を入力:
    • IPv4/CIDR:新しい IP とネットマスク(CIDR)
    • Gateway:別ネットワークに変更した場合は新しいゲートウェイ
    • その他の設定は既定のままで可
    例:192.168.101.229/24192.168.105.229/24、ゲートウェイ 192.168.101.2192.168.105.2
    ブリッジ vmbr0 は物理 NIC ens33 にリンクされています。 OK で保存して閉じます。
  4. System → Hosts を開き、/etc/hosts の内容が表示されるフィールドで旧 IP を新 IP に書き換えて Save(例:192.168.101.229192.168.105.229)。
  5. 再度 System → Network に戻り、Apply Configuration をクリックして保留中の変更を適用します。「ネットワーク変更を適用しますか?」には Yes
  6. ネットワークサービスの再起動が終わるまで待機。
  7. 必要なら物理的に別ネットワークへ接続し直します。
  8. 新しい IP で Web UI にアクセスします(例:https://192.168.105.229:8006)。

Proxmox クラスタで IP アドレスを変更する

クラスタ環境では、上記と同じ手順をそのまま使うことはできません(共通点はあるものの、問題が生じる可能性があります)。必要なのは、ネットワーク構成の更新クラスタ構成の更新Corosync 構成の調整 です。以下は基本的なワークフローの例で、Open vSwitch の有無、VLAN 構成、変更対象ノード数、その他の構成により手順は変わり得ます。

推奨:一度に 1 ノードずつ IP を変更します。クラスタの稼働状態を保ちやすくなります。

  1. 影響を抑えるため、IP を変更するノードでクラスタ関連サービスを停止:
    systemctl stop pve-cluster systemctl stop corosync
  2. ネットワーク設定を更新(新しい IP を反映):
    nano /etc/network/interfaces 例: iface vmbr0 inet static address <new-ip-address> netmask 255.255.255.0 gateway <gateway-ip> bridge_ports eth0 bridge_stp off bridge_fd 0 保存後、ネットワークサービスを再起動:
    systemctl restart networking
  3. /etc/hosts を更新(新しい IP に置換):
    nano /etc/hosts
  4. Proxmox クラスタ設定を更新(対象ノードの IP を反映):
    nano /etc/pve/corosync.conf 該当ノードのセクションで IP を更新: node { name: <node-name> nodeid: <node-id> quorum_votes: 1 ring0_addr: <new-ip-address> }
  5. Corosync 設定を更新。Corosync 3.x では transportbindnetaddr の見直しが必要な場合があります:
    nano /etc/pve/corosync.conf bindnetaddr が新しいネットワークアドレスを反映していることを確認: totem { ... interface { ringnumber: 0 bindnetaddr: <network-address> mcastport: 5405 ttl: 1 } ... } Corosync はクラスタノード間で設定を同期します。1 ノードで編集すれば同期されます。
  6. 対象ノードでクラスタ関連サービスを起動:
    systemctl start corosync systemctl start pve-cluster
  7. 旧 IP に紐づくファイアウォールルールなどがある場合は更新。
  8. 新しい IP で到達性とクラスタ動作を確認:
    ping <new-ip-address> pvecm status
  9. すべてのステップ完了後、必要に応じて次のノードでも繰り返します。
  10. 最後に、全ノードで known_hosts を新しい IP に合わせて更新し、ノード間の SSH 接続をスムーズにします:
    /etc/pve/priv/known_hosts 各ノードから他ノードへ SSH で接続できるか確認してください。

結論

非クラスタの Proxmox ホストの管理 IP は、CLI でも Web UI でも変更できます。いずれも本質的には /etc/network/interfaces/etc/hosts の更新です。クラスタ構成ではワークフローが異なるため、非クラスタ向け手順を流用しないでください。変更前に設定のバックアップを取ることを推奨します。

コメント

タイトルとURLをコピーしました