Proxmox VE ホストノード上の VPS で起こる問題の多くはネットワークの問題です。VM がゲートウェイに到達できない、追加した /24 がホストでは使えるのに VM では使えない、IPv6 がまったく応答しない、といったものです。解決方法は、プロバイダーが IP アドレスをどのように提供しているかによって異なります。この記事では、一般的な 2 つの提供方式であるブリッジ型(オンリンク)とルーティング型を説明し、それぞれに対応する /etc/network/interfaces の設定例を示したうえで、MAC バインド IP、追加の /24 ブロック、IPv6 サブネット、設定後の確認とトラブルシューティングを解説します。
/etc/network/interfaces をバックアップし、コンソールに接続できる状態で ifreload -a を使って変更を適用してください。| 提供方式 | 特徴 | VM の接続方法 |
|---|---|---|
| ブリッジ型 / オンリンク | ブロック内に専用のゲートウェイがあり(例:203.0.113.0/24 なら 203.0.113.1)、サーバーと同じネットワーク上にある | vmbr0 上の VM がプロバイダーのゲートウェイを直接使用 |
| ルーティング型 | プロバイダーがブロックをサーバーのメイン IP 宛てにルーティングしており、ブロック内にゲートウェイがない | ホストがルーターとなり、VM はホストをゲートウェイとして使用 |
| MAC バインド | サーバー自身の MAC(または登録済みの仮想 MAC)からしか、その IP の通信を送信できない | ホストでルーティング構成にするか、VM ごとに登録済みの仮想 MAC を 1 つ使用 |
サーバーの納品情報には、各 IP ブロックのゲートウェイとネットマスクが記載されています。ブロックがルーティング型かオンリンクかが書かれていない場合は、設定前にサポートへお問い合わせください。推測で設定すると何時間も無駄にしてしまいます。
物理 NIC を vmbr0 のポートにし、ホスト自身の IP をブリッジに移します。vmbr0 に接続した VM は、独立したサーバーのようにプロバイダーのネットワーク上に配置されます。
# /etc/network/interfaces (main IP 198.51.100.10/24, gateway 198.51.100.1)
auto lo
iface lo inet loopback
iface eno1 inet manual
auto vmbr0
iface vmbr0 inet static
address 198.51.100.10/24
gateway 198.51.100.1
bridge-ports eno1
bridge-stp off
bridge-fd 0
オンリンクで提供される追加ブロック(例:ゲートウェイが 203.0.113.1 の 203.0.113.0/24)は、ホスト側の変更が不要です。vmbr0 上の VM に、そのブロックのアドレスとブロックのゲートウェイを設定します(例:ip=203.0.113.11/24,gw=203.0.113.1)。
プロバイダーが 203.0.113.0/24 をメイン IP 宛てにルーティングしている場合は、物理 NIC に接続しない内部ブリッジにブロックを割り当て、先頭のアドレスを VM のゲートウェイとしてホストに設定し、フォワーディングを有効にします。
# /etc/network/interfaces (vmbr0 as in Step 2, plus:)
auto vmbr1
iface vmbr1 inet static
address 203.0.113.1/24
bridge-ports none
bridge-stp off
bridge-fd 0
echo 'net.ipv4.ip_forward = 1' > /etc/sysctl.d/80-forward.conf
sysctl --system
ifreload -a
VM は vmbr1 に接続し、ゲートウェイ 203.0.113.1 で 203.0.113.2〜254 のアドレスを使用します。ホストが .1 を使用し、ネットワークアドレスとブロードキャストアドレスは予約されたままなので、ルーティングされた /24 で VM に使えるアドレスは 253 個です。通信は VM 自身の送信元 IP のままホストのメインインターフェースから出ていくため、NAT は使用しません。
ネットワークによっては、サーバー自身の MAC アドレスからの通信しか受け付けないことがあります。ブリッジ接続の VM はそれぞれ独自の MAC を持つためパケットが破棄され、設定は正しく見えるのに「ネットワークにつながらない」状態になります。解決方法は 2 つあります。
qm set 101 --net0 virtio=02:00:00:AA:BB:CC,bridge=vmbr0)。IPv6 サブネット(例:/64 や /56)がホストにルーティングされている場合は、ステップ3のルーティング型 IPv4 ブロックとまったく同じように扱います。サブネット内のアドレスを vmbr1 に設定し、IPv6 フォワーディングを有効にして、そのアドレスを VM のゲートウェイとして使用します。
# /etc/network/interfaces: add an IPv6 stanza to vmbr1
iface vmbr1 inet6 static
address 2001:db8:200::1/64
echo 'net.ipv6.conf.all.forwarding = 1' > /etc/sysctl.d/81-ipv6-forward.conf
sysctl --system
ifreload -a
# VM configuration (cloud-init)
qm set 101 --ipconfig0 ip=203.0.113.11/24,gw=203.0.113.1,ip6=2001:db8:200::11/64,gw6=2001:db8:200::1
フォワーディングを有効にすると、Linux はアップリンクのルーター広告(RA)を無視するようになります。そのため、ホスト自身の IPv6 デフォルトルートは vmbr0 に静的に設定する必要があります(address と gateway を記述した iface vmbr0 inet6 static スタンザ)。
一方、/64 が 1 つだけでアップリンク上でオンリンクになっている場合(プロバイダーのルーターが近隣探索ですべてのアドレスを直接見つけようとする場合)、別のブリッジ上の VM には到達できません。ホストが VM に代わって近隣探索に応答し(NDP プロキシ。例:ndppd)、ルーティングを慎重に調整する必要があります。よりシンプルで確実なのは、ホスト宛てにルーティングされるサブネットをプロバイダーに依頼する方法です。お使いのサーバーがどちらに該当するかは、IMIDC サポートにお問い合わせください。
cp /etc/network/interfaces /root/interfaces.bak.$(date +%F)
ifreload -a
ip -br addr # addresses on vmbr0 / vmbr1
ip route # default route via the provider's gateway
bridge link # which ports and VM taps belong to which bridge
# Watch ARP and traffic for one VM address while it pings out
tcpdump -ni vmbr0 host 203.0.113.11
# From inside the VM
ping -c3 203.0.113.1 # gateway
ping -c3 1.1.1.1 # internet
ping -c3 google.com # DNS
VM がゲートウェイには到達できるのにインターネットに出られない場合は、上流がその通信を破棄しています(MAC バインド、ルートの欠落、ネットマスクの誤り)。ゲートウェイにもまったく到達できない場合は、ブリッジ、VM の IP とプレフィックス、Proxmox ファイアウォールの IP フィルターがそのアドレスを許可しているかを確認してください。
プロバイダーの提供方式に合わせてください。ブロックにオンリンクのゲートウェイがある場合は、ブリッジ型が最も簡単です。ブロックがメイン IP 宛てにルーティングされている場合はルーティング型が必須で、IP が MAC にバインドされている場合もルーティング型が確実な選択です。
はい。パブリック IP の VM は vmbr0 または vmbr1 に置き、NAT の VM は別のプライベートブリッジに置きます。Proxmox VE の NAT ネットワークを参照してください。
ロケーションとサーバーによって異なります。ゲートウェイとネットマスクは納品情報に記載されています。不明な点があればチケットを送信してください。提供方式を確認し、設定をお手伝いします。
上記の手順で解決しない場合は、サポートチケットを送信して IMIDC の 24 時間 365 日対応テクニカルサポートへご連絡ください。ホストサーバーの IP、IP ブロック、/etc/network/interfaces の内容、ip -br addr と ip route の出力を添えていただくと、より迅速に調査できます。