- 一般的なコンピュータやミニPCを活用して完全なルーターを構成する手順を段階的に整理
- Debian または Alpine Linux 環境で
hostapd、dnsmasq、bridge-utils など最小限のパッケージで有線・無線ネットワークを構成
- イーサネットインターフェースが2つあれば、デスクトップ、ノートPC、SBC などどんな機器でもルーターに転用可能
- ファイアウォール(nftables)、DHCP/DNS サービス、IP フォワーディングの設定により、市販ルーター級の機能を実現
- 廃棄ハードウェアとオープンソースだけで 安定的で柔軟なネットワーク基盤 を構築可能
どんな機器でもルーターにする方法
- 米国政府の 消費者向けルーター輸入禁止措置 以後、既存ハードウェアを活用して自作ルーターを構成する方法を紹介
- Linux ベースのミニPC を使って何年も安定してルーターを運用してきた経験をもとに、必要な構成と設定手順を段階的に整理
- ルーターは本質的に 一般的なコンピュータと同じ構造 なので、デスクトップ・ノートPC・SBC などさまざまな機器で実現可能
- Debian または Alpine Linux 環境で hostapd、dnsmasq、bridge-utils など最小限のパッケージで構成
- 目的は政策対応ではなく、既存ハードウェアの再活用とネットワーク理解の向上 にある
ハードウェアの選定
- パッシブクーリングのミニPC が理想的だが、イーサネットインターフェースが2つあればどんな機器でも使用可能
- USB-Ethernet ドングルで補うこともでき、信頼性はやや落ちるが十分動作する
- 例として Celeron 3205U デュアルコア(1.5GHz) 搭載機では、有線 820〜850Mbps、無線 約300Mbps を処理可能
- 過去には ThinkPad T60、ExpressCard-PCIe ブリッジ、Cisco 2960 スイッチ、D-Link ルーター(AP 専用) など廃棄部品で構成
ネットワーク構成
- インターフェース構成
eth0: WAN
eth1: LAN(有線)
wlan0: LAN(無線)
- 有線・無線 LAN は ブリッジ(bridge) で束ねて同一ネットワークとして動作
- 追加の LAN ポートが必要なら USB-Ethernet ドングルを追加してブリッジへ接続可能
- OS は Debian Linux、必須コンポーネントは以下の通り
hostapd: Wi-Fi ネットワークの作成
dnsmasq: DNS および DHCP サービス
bridge-utils: ポートブリッジ
インストールと初期設定
- BIOS/UEFI 設定
- PXE ネットワークブートを無効化
- USB/PCI 電源管理を無効化
- 「AC 電源復旧後に自動起動」オプションを有効化
- ディスプレイ未接続時の起動問題対策として HDMI ダミードングル を使用
- 一部ハードウェアでは non-free-firmware リポジトリ の有効化が必要
- 無線チップセットごとのファームウェアをインストール
- Intel:
firmware-iwlwifi
- Realtek:
firmware-ath9k-htc
- 旧型 Atheros:
firmware-atheros
必須パッケージのインストール
ネットワークインターフェース名の固定
無線ネットワークの作成
インターフェース設定
IP フォワーディングの有効化
ファイアウォールと NAT の設定
DHCP と DNS の設定
dnsmasq を使用(/etc/dnsmasq.conf)
interface=br0
dhcp-range=192.168.1.50,192.168.1.250,255.255.255.0,6h
dhcp-option=option:router,192.168.1.1
dhcp-option=option:dns-server,192.168.1.1
cache-size=10000
- サービスを有効化
sudo systemctl enable dnsmasq
シリアルポート管理
動作確認
追加機能
- ログ記録とトラフィック分析、VLAN 分離、IPv6 対応、VPN トンネリング、動的ルーティング(BGP、IGP) などへ拡張可能
- Prometheus ベースの監視、DMZ ポートフォワーディング、侵入検知と遮断 機能の追加も可能
- ただし、ルーター自体に過剰なソフトウェアを入れるのは避け、DMZ や VLAN でトラフィックを分離するのが望ましい
結論
- フリーソフトウェアと廃棄ハードウェア だけでも完全なルーターを構築可能
- ルーターは結局 一般的なコンピュータにすぎず、誰でも自作できる
- 不要な機器を再活用して 安定的で柔軟なネットワーク基盤 を構築できる
1件のコメント
Hacker Newsのコメント
素晴らしい記事だ。長年メンテナンスしてきた create_ap スクリプトを紹介したい。
GitHubリポジトリで見られる。
これはたった1行のコマンドで、どんなLinuxコンピュータでも WiFiルーター に変えるシェルスクリプトだ。
基本的にWiFiカードをAPモードに設定し、WPA2/3、MACフィルタリング、DHCP/DNSサーバーまで自動構成する。
依存関係もほとんどなく、NetworkManagerも不要だ。
古いAtomミニPCで自宅インターネットのゲートウェイとしても使ったし、IoT機器の リバースエンジニアリング用テストネットワーク を作るときにもよく使っている。
関連事例はこの記事で見られる
多くのコメントは「とにかくXを使え」と言うが、この記事の核心は ルーティングの最小構成 とその単純さを示すことにある。
DockerやVMでNATを使ったことがあるなら、すでに同じことをやったことになる。
Androidの WiFiホットスポット 機能も結局は同じLinuxカーネル機能を使っている。
今このメッセージも、おそらく複数の ソフトウェアルーター を経由して届いているはずだ
こういうアプローチは良い ソフトウェア設計原則 だと思う
Windowsの Internet Connection Sharing も結局はNATを有効にするチェックボックスだった。
ファイアウォール、スイッチ、ファイルサーバーなどを1台にまとめて「ルーター」と呼ぶのが、人々を混乱させている気がする
この記事を見て昔を思い出した。私が最初にLinuxを使った目的は 余ったコンピュータでルーターを作ること だった。
100MHzのPentiumに3ComのISA NICを2枚挿し、IP-Masquerading HOWTOに従って設定した。
その後、Robert Zieglerの Linux Firewalls を土台に発展させ、スパムフィルター や Squidキャッシュ まで載せて、捨てられるはずだったハードウェアをかなり有効活用した
27年たった今でもなお、「Linuxと輪ゴムとクリップで安く解決する方法」を尋ねる人たちに呼ばれる
参考: Linux Routers - A Primer for Network Administrators
私は長い間 OPNsense/pfSense を使ってきたし、強くおすすめする。
自動更新、バックアップ、WireGuardトンネル、Suricataベースのパケットフィルタリングなど、機能が素晴らしい。
週末にネットワーク管理をするとき、ターミナルではなく Web UI で設定できるので楽だ。
公式サイト
pfSense、OpenWRT、Barracuda、Verizon OEMなどは機能は同じでも表現方法がばらばらだ
「機器のほうが自分よりよく分かっている」という態度の製品は好きではない。柔軟性の欠如 が決定的だった
AtomミニPCで300Mb/sまではルーティングしていたが、ギガビット回線に変えたのを機に VMベースのOPNsense に移行した。
Intelの4ポートカードで各ポートをVMに個別パススルーするのが楽しい
私は N100 + 10Gbitルーター機材 を使っているが、専用ハードウェアルーターより レイテンシ が高い気がする。
専用チップセットはCPU介入なしにパケットを処理するので、はるかに効率的だ。
実際にこうした差を測定した人がいるのか気になる。たいていは帯域幅テストしかやらない
OpenWRTはいくつかのハードウェアスイッチAPIをサポートしているが、PCIeカード形状のものはほとんどない。
Mikrotikの CCR2004-1G-2XS-PCIe は興味深い例だ。
RouterOSが動く完全なルーターボードをPCIeで接続する方式だ。
25Gbpsポートを活用できるなら価値はあるが、そうでなければ RB5009 と大差ない
管理型スイッチがあれば、NIC 1枚でもルーター構成 は可能だ。
802.1qトランクポートに設定すれば、スイッチをインターフェース拡張器として使える。
私の家はこの「router-on-a-stick」構成だ。
PoEスイッチと中古のAruba IAPを組み合わせれば、コンシューマー向けよりはるかに高品質なWiFiを構築できる。
昔はThinkPadをルーターにしていたが、今はDell Optiplexに替えて VMも一緒に動かすホームラブルーター として使っている。
Alpine Linuxはこういう用途に非常に向いている
同等性能のAPを買おうとすると180ドルほどかかるのが惜しい
ルーター輸入禁止政策の 政策的理由 が気になる。
すでに大半のトラフィックはTLSで暗号化されているのに、なぜまだ危険だと見なされるのか疑問だ。
もしかして ボットネット、DDoS、弱いデフォルトパスワード、あるいは内部ネットワーク侵入のような理由だろうか?
Volt Typhoon、Flax Typhoonのような事例は今も活動中だ。
外国製機器の禁止だけで完全に解決はしないが、セキュリティは製品ではなくプロセス なので、サプライチェーンを制御することは必要だ
昔Amazonで Bot Mitigation を担当していたとき、世界中の消費者向け機器から発生するトラフィックを見ていた。
半分にも満たない稼働機器だけでも、防ぎきれない規模のトラフィックが発生していた
HuaweiであろうとNetgearであろうと、DDoSの発生源という意味では同じだ
DNS/トラフィックのメタデータへのアクセス、内部ネットワーク攻撃、DDoS、インターネット遮断などだ。
結局のところ 監視と統制の手段 として悪用されうる
外国製機器がバックドアを持つ可能性は、現実的な想定だ
「とにかくOPNsenseを使え」というのは 運用環境 ではよい助言だが、学習用 としては最悪だ。
この記事の価値は、ルーティングがどれほど 単純な原理 で動いているかを示している点にある
記事で触れられていない点だが、ルーターとして使うなら
/etc/sysctl.d/10_router.confにのような設定で オーバーヘッド削減 ができる。
VoIPやゲーム向けの レイテンシとジッターを減らすチューニング に効果的だ。
gro_flush_timeout、sch_cake、napi_defer_hard_irqsなども調整している。
家族によりよい ゲーミング体感 を得てもらうのが目標だ
私の場合、fq_codel だけでも10Gbps環境で十分安定している
むしろ私は 光モデムの置き換え のほうが気になる。
AT&Tから支給されたものは頻繁に遅くなるし、セキュリティ面も怪しい。
自前の光モデムに置き換える方法 に関するガイドがあるのか知りたい