2025年11月現在、IncusのコンテナでOpenWRTを動かした情報が日本ではないので記録しておきます。
私はエンジニアではないしネットワークに詳しくないので間違ったり変なことをしている可能性が有りますがご容赦ください。
やったこと
タイトルの通りです。
環境
2025年11月
- x86の自作PC PCIeスロットに空きあり
- ホストOS Ubuntu24.04 Desktop (Ubuntu serverでも他のディストリビューションでも問題ないと思われます)
- Incus
- OpenWRT 24.10
なぜ面倒なルーター自作をしたのか?
個人的な理由ですが書いときます。
- プロバイダの営業から「10Gにできるけどいかがですか?」と電話があり、戸建てなので料金差も少ないので10G契約することになる
- 手持ちの機材(ルーター、PC)は1Gまで、Wi-Fi機器も最新規格には対応してない。壁内配線もCAT5e
- とりあえず1Gルーターのまま使ってる。当たり前だけど1Gの速度は出る
- Wi-Fiルーターを買い替えようと調べてみたけど、意外と高いし発熱もありそう。来年には消費電力の少ない新型が出るかも? もうちょい待ちたい
- でもせっかくなのでPC1台だけでも速度を上げたい
- 予算はなるべく抑えたい
常用PC
- OS:Ubuntu24.04Desktop
- CPU:Ryzen5500GT
- MEM:16G
- オンボードネットワーク:RTL8111H(1000M)
- MBの空きスロット:PCIe3.0x1 PCIe3.0x16
さて、どうしましょう?
インターネットで検索すると OpenWRT でルーターを自作という記事がヒットします。
おもにProxmox のVMに OepnWRT をインストールするのが多いようです。
ProxmoxのLxcコンテナ内でOpenWRTを動かす例もあります。
「そうだ、常用PCのOSはそのままでネットワークカードを増設してコンテナ内でOpenWRTを動かせばイケるんじゃないか?」
というわけでサーバー専用機ではなく、デスクトップとして使っているPCをルーター兼用にすることにしました。
方式選定
- ルーター用OSを使わないでUbuntu24.04にそのままルーターとしての設定をする
技術力が必要なので無理 - 仮想マシン(VM)でルーター用OS(OpenWRT)を動かす
オーバーヘッドがありそうだし、面倒くさそうなので却下 - コンテナ内でルーター用OS(OpenWRT)を動かす
一番簡単そうに思えたので採用
なぜ Incus?
なんか技術評論社の記事で面白そうだったからです。
ちなみに私はDockerもProxmoxも使ったことないので比較なんてできません。
購入機器選定
追加で必要なもの
ネットワークカード1枚とCAT6Aのケーブル
最近話題のRTL8127の10GカードはまだUbuntu24.04では対応してないみたいです。マザーボードのPCIeも3.0だし。
妥協してRTL8126の5G対応のカードにします。これならUbuntu24.04.3 で対応しているらしいです。
値段も安いので。
通販でRTL8126のネットワークカード(2700円くらい)と適当な長さのケーブルを購入。
ネットワーク構成
これを
こうします
手順
基本的にホストから設定します。
ssh でコンテナ内に入る必要はありません。
もちろんコンテナ内に入って作業しても構いません。
PC にホストOS(Linux)をインストール
今回の場合はすでにUbuntu 24.04 Desktop をインストールしたPCがあるので省略。
新たにインストールするならファイルシステムをBtrfsにしとくとIncusを動かすのに便利かもしれません。
もちろんUbuntuServerでも他のディストリビューションでもかまわないはずです。
ホストはインターネットに接続できているものとします。
Incus をインストールし初期設定
参考サイト
Dockerは使いませんが参考サイト通りにIncusをインストールします。
バックエンドにはBtrfsを指定
ユーザーを incus-admin グループに追加
OpenWRTのコンテナを作る
incusを使うと OpenWRT のインストールは超簡単です。
incus launch images:openwrt/24.10 openwrt
1行で終わりです。
あっという間に openwrt と言う名前のコンテナが作られ起動します。
ディスク容量もあるだけ使えます。
OpenWRTにソフト追加
コンテナ内に入りたければホストから
incus exec openwrt sh
でrootとして入れます。
ただし、busybox なので sh も vi も機能が少ないです。
今回はコンテナ内に入らず、すべてホストから作業します。
ホストがインターネットに接続しているならデフォルトのincusbr0 経由でコンテナもインターネットに接続できます。
openwrt に必要なソフトを先に追加します。
私の環境ではMAP-Eなので map をインストールします。
ネットワークカードの確認用に ethtool もインストールします。
incus exec openwrt opkg update
incus exec openwrt opkg install map ethtool
いったんコンテナを停止しておきます
incus stop openwrt
map.sh 入れ替え
2025年11月現在、標準の map.sh ではpingが通りません。
map.sh.new をダウンロードして入れ替えます。
wget https://raw.githubusercontent.com/fakemanhk/openwrt-jp-ipoe/refs/heads/main/map.sh.new
incus exec openwrt mv /lib/netifd/proto/map.sh map.sh.old
incus file push map.sh.new openwrt/lib/netifd/proto/map.sh --gid 0 --uid 0 --mode 755
そのうち必要なくなると思われます。
ホストに bridge 作成
デフォルトではIncus管理のbridge(incusbr0)が作られます。
今回は NATもDHCPもコンテナ内のOpenWRTが行うので「incusで管理されない」bridgeを作成します。
bridge 作成にはいろいろな方法があるようですが一番簡単そうなnetplanを用いた設定にします。
この辺はホストOSによって違うかもしれません。
router-lan と言う名前の bridge を作っていきます。
/etc/netplan/の下にファイルを作ります。
yamlなのでインデントに注意します。
sudo vi /etc/netplan/91-router-lan.yaml
network:
version: 2
renderer: networkd
bridges:
router-lan:
dhcp4: true
dhcp6: true
openwrt でdhcpを動かすので dhcp は true に設定。
もちろん固定IPにしても良いです。
renderer は ホストがubuntu24.04desktop なのでnetworkdにしてみました。
パーミッションを変更し設定反映します。
sudo chmod 600 /etc/netplan/91-router-lan.yaml
sudo netplan apply
ip a で router-lan ができていることを確認します。
Incus の profile を作成
なにも指定しないでコンテナを作るとdefault profile(incusbr0を使用) が使われるのでコンテナ内の eth0 がホストの incusbr0 になります。
eth0 が ホストの router-lan になるようにprofileを作成します。
profile名を openwrt にしたけど コンテナ名の openwrt と紛らわしいので変えたほうが良かったかも
default のプロファイルをコピーして編集します。
incus profile copy default openwrt
incus profile edit openwrt
config: {}
description: Default Incus profile
devices:
eth0:
name: eth0
nictype: bridged
parent: router-lan
type: nic
root:
path: /
pool: default
type: disk
name: openwrt
used_by:
- /1.0/instances/ow
project: default
コンテナの profile を openwrt に変更
incus profile add openwrt openwrt
incus profile remove openwrt default
これでコンテナ内の eth0 が ホストの router-lan になります。
可能ならルーターの設定画面などでIPv6 プレフィックス を調べておく
ネットに繋がっているうちに調べておくと楽です。
MAP-E計算サイトに入力して結果を記録しておく
物理ネットワークデバイスをコンテナにアタッチ
ネットワークカードをPCにセットしておく。
起動後に確認します
lspci
ip a
ethtool enp3s0 # ip a の結果からデバイス名を同定
WAN側にする増設した5Gbpsのカードを確認しコンテナに追加します。
incus config device add openwrt eth1 nic nictype=physical parent=enp3s0 name=eth1
コンテナ内の eth1 が WAN側の物理ネットワークになります。
LAN側にするオンボードのネットワークデバイスもコンテナに追加します。
incus config device add openwrt00 eth2 nic nictype=physical parent=enp4s0 name=eth2
コンテナ内の eth2 が LAN側の物理ネットワークになります。
コンテナに追加した物理ネットワークはホストから見えなくなります。
これ以降設定が進むまでネットに接続できなくなるので注意してください。
ホストからethtoolで確認することもできません。
OpenWRT 初期設定
OpenWRTの中に入って作業するとBusyBoxで編集することになるのでホストから編集したほうが楽です。
ちなみにコンテナが起動してなくてもファイルは編集できます。
incus file edit openwrt/etc/config/network
参考サイトを見ながら設定
# loopback はそのまま
config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config interface 'wan'
option device 'eth1' # WAN側の物理ネットワーク
option proto 'dhcp'
config interface 'wan6'
option device 'eth1' # WAN側の物理ネットワーク
option proto 'dhcpv6'
option reqaddress 'try'
option reqprefix 'auto'
option norelease '1'
config device
option name 'br-lan'
option type 'bridge'
list ports 'eth0' # router-lan (bridge)
#list ports 'eth2' # LAN側の物理ネットワーク
config interface 'lan'
option device 'br-lan'
option proto 'static'
option ipaddr '192.168.1.1' # 環境に応じて変えてください
option netmask '255.255.255.0'
option ip6assign '60' # わからん
option ip6assign の値が60になってますがよく理解できてません。とりあえずこのまま進めます。
物理的な接続変更
増設したLANカードがWAN側になるのでCAT6AケーブルでONUとつなぎます。
OpenWRT 設定
コンテナを起動
incus start openwrt
ホストからブラウザで設定したアドレス(今回は192.168.1.1)に接続し設定を進める
参考サイトをみながら同じように設定します。
オンボードのLAN(1000M)にWi-fiルーターをアクセスポイントモードで接続
これでWi-Fiルーターがスイッチングハブ+アクセスポイントとして動作します。
コンテナによる制限
OpenWRTの追加機能でカーネルモジュールが必要なものもあります。
その場合にはホストOSにカーネルモジュールを追加する必要があります。コンテナはホストのカーネルをそのまま使うので。
参考サイト
動作確認
上手く行けばIPv6でもIPv4でもインターネットに接続できるはずです。
ホストのブラウザから速度測定してみます。
上手く行ったところでコンテナのスナップショットを撮っておきましょう。
incus snapshot create openwrt
他のコンテナを作る
せっかくなので他のコンテナも作ってみます。
profile に openwrt を指定してコンテナを作ります
incus launch images:ubuntu/24.04 u2404 -p openwrt
コンテナにopenwrtからアドレスが割り振られるはずなので確認
incus list
上手く行けばコンテナからインターネットおよびLANに接続できるはずです。
あとはコンテナ内で samba でも Jellyfin でも好きなサービスを動かすだけです。
コンテナなのでオーバーヘッドも少ないので好きなだけ作れます。
問題点
消費電力は多いです。5500GTは消費電力の多いCPUではないけどアイドルで30Wくらいになります。まあ、SSDの他に倉庫用のHDD(8TB)やBluRayDriveなんかが入ってるせいもありますが。DesktopPCとして使ってるときは良いけど、他のWiFi機器のために電源をいれっぱなしにする必要があるので常に30W余計に使うことになります。
まとめ
- 最小の追加投資(5Gネットワークカード1枚+ケーブル)で10G回線を有効利用できた
- Incusを使うことによってOpenWRTのインストールが極めて簡単に出来た
- 消費電力を考えるとルーターを購入したほうが良いかも?
最後に
Incus 良いですよ! PCでOpenWRTを使うならぜひIncusで!



