本記事では、Linux管理ツール Cockpit のWeb GUIを使って、仮想マシン用に安全に ブリッジを構築する手順 を解説します。 この手順は AlmaLinux, Rocky Linux, Ubuntu, Fedora 等、Cockpitが動作する主要なディストリビューションで共通して利用可能です。
概要
デフォルトの状態(NAT接続)では、Cockpit上の仮想マシンはホストOSの内側に隠れてしまい、外部のMacやPCから直接SSHやHTTPでアクセスすることができません。
これを解消し、仮想マシンを自宅やオフィスのLANにおける「独立した1台のPC」として扱えるようにするには、 「ブリッジ接続(Bridge Connection)」 を作成するのが正解です。
⚠️ 作業前の重要な警告
リモート接続で作業している方は特に注意してください!
ブリッジ設定を適用する瞬間、サーバー(ホストOS)のネットワーク接続が一時的に切断されます。 これは物理LANポートの設定が書き換わるためです。
- 推奨: 可能な限り、サーバー本体にモニターとキーボードを繋いで直接操作してください。
- リモートの場合: 数十秒〜数分で再接続できるようになりますが、DHCP環境ではIPアドレスが変わる可能性があります。IPが変わった場合にルーターの管理画面から探せる準備をしておいてください。
検証環境
本記事の作業手順は、以下の環境にて検証を行いました。
| OS | アーキテクチャ | Cockpitバージョン |
|---|---|---|
| AlmaLinux 10.1 | x86_64 | 344.1 |
| Ubuntu 24.04 | x86_64 | 344.1 |
設定手順
ホスト側でブリッジを作成する
まず、物理LANポートを「ブリッジ(仮想のハブ)」に接続する設定を行います。
- Cockpitの左メニューから [ネットワーキング (Networking)] をクリックします。
- 画面右上の [ブリッジを追加 (Add Bridge)] ボタンをクリックします。
- 設定ウィンドウで以下のように入力します。
- 名前:
bridge0(デフォルトのままでOK) - ポート: 現在インターネット/LANに繋がっている物理インターフェース(例:
enp3s0,eth0等)にチェックを入れます。これが「物理ケーブル」の代わりになります。 - STP (Spanning Tree Protocol): ループ防止機能です。通常はチェックを入れたままで問題ありません。
- 名前:
- [追加] をクリックします。
※ここで接続が切れます。 数十秒待ってもCockpitが反応しない場合は、ブラウザをリロードしてください。それでも繋がらない場合は、IPアドレスが変更されていないか確認が必要です。
仮想マシンの接続先を変更する
ブリッジ(bridge0)ができたら、仮想マシンのLANケーブルをNATからブリッジへ繋ぎ変えます。
- Cockpitの左メニューから [仮想マシン (Virtual Machines)] をクリックします。
- 対象の仮想マシン名をクリックして詳細画面に入ります。
- [ネットワークインターフェース] セクションを探し、現在のインターフェース(通常は
defaultやvirbr0)の右側にある [編集 (Edit)] をクリックします。
- [インターフェースの種類] または [ソース] の項目で、先ほど作成した [Bridge to LAN (br0)] を選択し、[保存] をクリックします。
仮想マシン内でのIP確認
設定が正しければ、仮想マシンは物理ルーターから直接IPアドレスを受け取るようになります。
- 仮想マシンを起動(または再起動)します。
- コンソールを開き、IPアドレスを確認します。
- Linuxの場合:
ip addr - Windowsの場合:
ipconfig
- Linuxの場合:
私の環境(AlmaLinux 10 Host)の場合はネットワークが 192.168.11.XX 帯です。仮想マシンが 192.168.11.6 を取得しました。
また、Macから直接Pingが通ることを確認しました。
$ ping 192.168.11.6PING 192.168.11.6 (192.168.11.6) 56(84) bytes of data.64 bytes from 192.168.11.6: icmp_seq=1 ttl=64 time=0.307 msトラブルシューティング
Q. MacからPingが飛びませんが、IPは取得できています。
A. ゲストOS(Windowsや最近のUbuntuなど)のファイアウォール設定で、デフォルトでPing(ICMP)に応答しないようになっている可能性があります。Pingが通らなくても、SSHやWebブラウザでアクセスできれば問題ありません。
Q. IPも正しいのに、SSH接続がタイムアウトします。
A. ホストOS側のファイアウォールが通信をブロックしている可能性があります。OSによって確認コマンドが異なります。
- AlmaLinux / Rocky / Fedora の場合 (firewalld):
一時停止して確認:
systemctl stop firewalld恒久対応:firewall-cmdでブリッジインターフェースを適切なゾーンに追加してください。 - Ubuntu / Debian の場合 (ufw):
一時停止して確認:
sudo ufw disable恒久対応:sudo ufw allow ...で必要な通信を許可してください。
関連記事