Proxmox上に仮想ルーターとしてOpenWrtを構築:ラボネットワーク管理を軽量化するソリューション

Virtualization tutorial - IT technology blog
Virtualization tutorial - IT technology blog

煩わしい配線はもう不要。ルーターを仮想マシンの世界へ!

Linuxの学習やDockerのテストのためにラボを構築し始めた頃、デスクの下にある古いルーターから伸びる大量のLANケーブルに頭を抱えていました。VLANを分割したりIPレンジを変更したりするたびに手動で抜き差しが必要で、安価なルーターだったので設定を間違えるとハードリセットが必要になり、再設定に1時間も費やすこともありました。

現在、私は単一のProxmoxノード上で約15個の仮想マシン(VM)とコンテナを管理しています。すべてをスッキリさせる秘訣は、OpenWrtを「仮想ルーター(Virtual Router)」として運用することです。これが「司令塔」となり、システム全体にDHCPを割り当て、トラフィックを制御します。Proxmoxを搭載したミニPCが1台あれば、LANケーブルを1本も増やすことなく、複雑なネットワーク構成を構築できます。

なぜ pfSense ではなく OpenWrt なのか?

pfSenseやOPNsenseは非常に強力ですが、リソースを大量に消費します。標準的なpfSenseは少なくとも2GBのRAMを必要とします。しかし、OpenWrtは全く別物です。私はわずか256MBのRAMと1コアのCPUを割り当てていますが、1Gbpsの帯域を余裕で捌き、CPU使用率が5%を超えることは滅多にありません。

一番のお気に入りはProxmoxのスナップショット機能です。広告ブロックのプラグインを追加したり、複雑なVPN設定を試したりする前に、たった2秒でバックアップを作成できます。万が一ネットワーク設定を壊してしまっても、「Rollback」をクリックするだけで、瞬時に安定した状態に戻せます。

ステップバイステップの構築ガイド

ステップ1:OSイメージのダウンロード

OpenWrtは一般的なISOファイルではなく、ディスクイメージ(.img)を使用してインストールします。公式サイトにアクセスし、Generic x86-64版を選択してください。

ヒント:combined-ext4.img.gz版を優先的に選んでください。ext4形式なら、将来的に多くのパッケージをインストールして容量が足りなくなった場合でも、ディスク容量の拡張が非常に簡単です。Proxmoxのターミナルからwgetコマンドを使って直接ダウンロードするのが早いです:

# ストレージディレクトリに移動
cd /var/lib/vz/template/iso

# OpenWrtをダウンロード (例: 23.05.0)
wget https://downloads.openwrt.org/releases/23.05.0/targets/x86/64/openwrt-23.05.0-x86-64-generic-ext4-combined.img.gz

# ファイルを解凍
gunzip openwrt-23.05.0-x86-64-generic-ext4-combined.img.gz

ステップ2:Proxmoxで仮想マシンの「枠」を作成

OSを読み込む前に、まず空の仮想マシンの構成を作成します:

  1. Create VMを選択。IDは100、名前は「OpenWrt-Core」にします。
  2. OSセクション:「Do not use any media」を選択。
  3. Disksセクション:デフォルトのディスクを削除。後でコマンドを使ってインポートします。
  4. CPU:1コアで十分です。命令セットを最適化するため、Typeは「host」に設定。
  5. Memory:256MB、またはアプリをたくさん入れる予定なら512MBに設定。
  6. Network:Bridge vmbr0 を選択(これが外部インターネットに繋がるWANポートになります)。

ステップ3:qm importdiskコマンドでディスクを読み込む

ここが重要なステップです。.imgファイルをProxmoxが認識できるディスク形式に変換する必要があります。ターミナルに戻り、以下のコマンドを実行します:

# 構文: qm importdisk <VM_ID> <ファイル名> <ストレージ名>
qm importdisk 100 openwrt-23.05.0-x86-64-generic-ext4-combined.img local-lvm

完了後、Proxmoxの管理画面に戻り、**VM 100** -> **Hardware** を開きます。「Unused Disk 0」が表示されているので、ダブルクリックして **Add** を選択します。その後、**Options** -> **Boot Order** でこのディスクの起動優先順位を一番上に上げるのを忘れないでください。

ステップ4:内部ネットワーク(LAN)の設定

ルーターとして機能させるには、仮想マシンに少なくとも2つのポート(外部接続用のWANと内部配信用のLAN)が必要です。

  • **WANポート:** 先ほど作成した vmbr0 です。
  • **LANポート:** ProxmoxのNetworkセクションで、新しいLinux Bridge(例:vmbr1)を作成します。注意:**Bridge portsは空欄**のままにしてください。これはラボ内のVM専用の隔離された仮想ネットワークになります。

最後に、OpenWrt VMの **Hardware** タブから **Add** -> **Network Device** を選択し、vmbr1 を追加します。

OpenWrtをサクッと設定する

仮想マシンを起動し、**Console** を開きます。OpenWrtのロゴが表示されたらEnterを押します。デフォルトのIPは192.168.1.1ですが、自宅のルーターと衝突しやすいため、変更しましょう:

vi /etc/config/network

option ipaddr '192.168.1.1' の行を別のレンジ(例:10.0.0.1)に書き換えます。保存して、/etc/init.d/network restart を実行して反映させます。

あとは、適当な仮想マシン(例:Windows 10)を用意し、そのネットワークアダプタを vmbr1 に切り替えるだけです。その仮想マシンはOpenWrtからIPを取得し、ブラウザで http://10.0.0.1 にアクセスすればWeb管理画面(LuCI)が開けます。

実運用からのアドバイス

長期間使用してみて得られた、重要な経験則をいくつか紹介します:

  • **即座にセキュリティ設定を:** Web UIに入ったら、まず最初にRootパスワードを設定してください。ポートを開放する場合、空のままにしておくと非常に危険です。
  • **速度の最適化:** ネットワークカードのモデルには VirtIO を選択してください。これにより、内部転送速度を最大10Gbpsまで引き出すことができます。互換性の問題がない限り、E1000は避けるべきです。
  • **便利なパッケージ:** luci-app-wireguard のインストールをお勧めします。外出先からVPNで自宅に接続し、カフェにいながらラボ内のすべての仮想マシンにアクセスできるようになります。

まとめ

Proxmox上でOpenWrtを運用することは、単なるリソース節約だけでなく、プロフェッショナルなネットワーク管理の考え方を身につけることにも繋がります。個別のハードウェアを買い足すことなく、各仮想マシンのファイアウォール、帯域幅、サービスを完全にコントロールできます。SysAdmin(システム管理者)としてのスキルを磨きたいなら、これが最初に取り組むべき実践的な課題です。理想のラボ環境を構築できることを願っています!

Share: