企業などでシステム開発やテスト、検証などで一時的な環境を構築する場合、仮想環境を使用することが多いですが、その際にルーターやファイアウォール、DHCP、プロキシなどのネットワーク機能が必要になることがあります。
そのようなとき便利なのが、さまざまなネットワーク機能が利用できるソフトウェアルーターです。
ソフトウェアルーターには有償・無償を含めていろいろな選択肢がありますが、ここでは、オープンソースの無料ソフトウェアルーター「OpenWrt」を紹介します。
目次
OpenWrtとは
[OpenWrt Wiki] Welcome to the OpenWrt Project
OpenWrtは、Linuxをベースに開発されているオープンソースの無料ソフトウェアルーターで、物理マシンだけでなく、市販のWi-Fiルーター、VMwareやMicrosoft Hyper-V、VirtualBox、KVMなどの仮想環境で利用できます。
OpenWrtには、標準でWi-Fi対応のルーター、ファイアウォール、DHCPサーバー、DNSキャッシュサーバーといった機能(DNSとDHCP機能は、小規模環境向けの「Dnsmasq」が使われています。)が搭載されており、さらにパッケージを追加することでさまざまな機能を追加してカスタマイズすることできます。
たとえば、日本国内でのインターネット接続で利用されているIPv4 over IPv6接続のMAP-EやDS-Liteにもパッケージ追加で対応できます。(IPv4/PPPoEやIPv6/IPoE・IPv6/PPPoEなど基本的な接続方式には標準で対応しています。)
また、プロキシーサーバーやVPNサーバーといったさまざまなサーバー機能を追加することもできます。
OpenWrtの構築手順
ここからは、Hyper-V上にOpenWrtの仮想マシンを作成する基本的な手順を解説します。
ディスクイメージの入手
まず、公式のダウンロードページから、Hyper-Vの仮想マシンで動作するOpenWrtのディスクイメージファイル(generic-ext4-combined-efi.img.gz)をダウンロードします。
以下のページは、記事執筆時点の最新バージョンのダウンロードリンクとなります。
Index of /releases/24.10.0/targets/x86/64/
OpenWrtで入手できるイメージファイルは、一般的なLinuxディストリビューションで配布されているようなインストーラーではなくディスクイメージ(ファームウェア)なので、下記で紹介しているディスクイメージをディスクに書き込むという手順が必要になります。
ディスクイメージのサイズ拡張と形式変換
ファイルをダウンロードしたら、まずgzファイルを解凍します。gzファイルは最新のWindows 11なら標準機能で解凍できます。(Windows 10では、gzファイルの解凍に対応した圧縮解凍ソフトを使用します。)
解凍したら、IMG形式のディスクイメージのサイズ変更や形式変換ができるコマンドラインツール「qemu-img for Windows」を、以下のサイトから入手します。
qemu-img for WIndows - Cloudbase Solutions
ツールを入手したら、コマンドプロンプトなどで以下のコマンドを順に実行して、ディスクイメージサイズの拡張(1GB)とIMG形式のディスクイメージファイルを容量固定のVHDX形式仮想ハードディスクファイルに変換します。
> qemu-img.exe resize -f raw E:\openwrt-24.10.0-x86-64-generic-ext4-combined-efi.img 1G
> qemu-img.exe convert E:\openwrt-24.10.0-x86-64-generic-ext4-combined-efi.img -O vhdx -o subformat=fixed E:\openwrt-24.10.0-x86-64-generic-ext4-combined-efi.vhdx
ディスクサイズの拡張は必須ではありませんが、OpeWrtにパッケージを追加する予定なら、あらかじめディスクサイズを拡張しておけば容量不足を避けることができます。
仮想マシンの作成
VHDX形式の仮想ハードディスクを準備できたら、次に、Hyper-V上にOpenWrt用の仮想マシンを作成します。
仮想マシンのスペックは、おおよそ以下の内容で作成します。
- 仮想マシンの世代:第2世代
- プロセッサ数:2
- メモリ:1GB(動的メモリオフ)
- ディスク:変換したVHDXファイルを指定
- DVDドライブを追加
- 起動順:DVDを最上位に移動
- セキュアブート:オフ
- ネットワークインターフェース(NIC):2
NICの数は、利用する機能によって増やします。たとえば、ルーターとして利用するなら最低でも2つは必要です。
パーティションの拡張
次に、パーティションを拡張します。(上記の手順でディスクサイズを拡張していない場合は、この手順は不要です。)
まず、パーティション編集ツール「GNOME Partition Editor(GParted)」のLiveイメージファイルを以下のサイトからダウンロードし、ダウンロードしたLiveイメージファイルを仮想マシンのDVDに指定してから、仮想マシンを起動します。
仮想マシンが起動して、GPartedの画面が表示させたら「/dev/sda2」を右クリックして、メニューから「リサイズ」を選択しての最大容量まで拡張します。

拡張前

拡張後
GPartedの使い方については、以下の記事をご覧ください。

パーティションを拡張したら、仮想マシンの電源をオフにしてDVDに指定していたGPartedのLiveイメージを取り外します。
OpenWrtの起動と初期設定
ここまでの作業が済んだら、仮想マシンを再度起動します。
OpenWrtは、起動してもそのままではコンソール画面にログインプロンプトは表示されず、Enterキーを押すことで、以下のようなrootのプロンプトが表示されます。
ここから専用コマンド(UCI)を使って各種の設定ができますが、OpenWrtにはLuCIというWebインターフェースが用意されており、一般的な設定ならWebインターフェースから行った方が直感的に操作できるので、以降の設定はWebインターフェースから行います。
Webインターフェースに接続するには、LAN側ネットワークの他のマシンでブラウザから「https://192.168.1.1」にアクセスし、認証画面が表示されるので、rootユーザー(管理者)でパスワードは空のままでログインします。
192.168.1.1は、LAN側のインターフェースに割り当てられるデフォルトのIPアドレスで、仮想マシンに最初に追加されたネットワークインターフェースに割り当てられます。
rootユーザーのパスワード設定
ログインしたら、まずは画面上部に表示されている「Go to password configuration」ボタンをクリックして、rootユーザーのパスワードを設定して「Save」をクリックします。
時刻設定
次に、画面上部のSystemメニューから「System」>「General Settings」でタイムゾーンを「Asia/Tokyo」に変更して「Save & Apply」をクリックします。
なお「Time Synchronization」から、同期するNTPサーバーを変更することもできます。
日本語化
Webインターフェースのデフォルトの表示言語は英語ですが、日本語に変更できます。
表示言語を日本語に変更するときは、まず画面上部のSystemメニューから「Software」を選択して、Acrions欄から「Update lists」をクリックします。
ログが表示されるので、エラーが出ていないことを確認して画面下部の「Dismiss」をクリックすると、画面下部の「Available」タブにインストール可能なパッケージが一覧が表示されるので、「Filter」に日本語パッケージの名称「luci-i18n-base-ja」を入力し絞り込み、「Available」タブに表示されている「luci-i18n-base-ja」パッケージの右端に表示されている「Install」をクリックします。
インストールするパッケージの詳細が表示されるので、画面右下の「Install」をクリックします。
インストールが完了するとインストールログが表示されるので、エラーが出ていないことを確認して画面下部の「Dismiss」をクリックし、Statusページなどに移動すれば表示言語が日本語になっているはずです。

日本語化されたOpenWrtの画面
最低限の初期設定は以上です。
なお、デフォルトでDHCPサーバーとDNSキャッシュサーバー、ファイアウォールが有効化されているので、これらのネットワーク機能が使いたい場合は、特別な設定を行うことなく最低限の初期設定で利用を開始できます。
Webインターフェース
OpenWrtのWebインターフェースからは、次のような操作ができます。
Statusメニューからは、現在のシステムの情報(ハードウェア、システムリソースの使用状況、ルーティング、ファイアウォール、システムログ、リアルタイムのリソース使用状況)を確認することができます。

OpenWrtのStatusメニュー画面
Systemメニューからは、OpenWrtの設定(ホスト名、時刻、ログ、言語)やパスワード設定、SSH設定、パッケージのインストール、バックアップ/リストア、新しいファームウェアへの更新などを行うことができます。

OpenWrtのSystemメニュー画面
Networkメニューからは、インターフェースの設定やルーティング設定、DHCP設定、DNS設定、ファイアウォール設定、ネットワークの診断を行うことができます。

OpenWrtのNetworkメニュー画面
なお、より詳細な設定や操作は、Webインターフェースからは実施できないため、そのようなときはSSH接続してコマンド操作で実施する必要があります。
あとがき
仮想環境で動かすまでに若干手間がかかりますが、ルーターとして十分な機能を備えており、カスタマイズ性や拡張性がとても高いので、ソフトウェアルーターをお探しなら試してみてはいかがでしょうか。