29 ポイント 投稿者 GN⁺ 2026-03-31 | 1件のコメント | WhatsAppで共有
  • 一般的なコンピュータやミニPCを活用して完全なルーターを構成する手順を段階的に整理
  • Debian または Alpine Linux 環境で hostapddnsmasqbridge-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 T60ExpressCard-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

必須パッケージのインストール

  • 次のコマンドで主要ユーティリティをインストール
    sudo apt install bridge-utils hostapd dnsmasq
    
  • システム全体のパッケージ数は約250個

ネットワークインターフェース名の固定

  • 最新の Linux は enp0s31f6 のような名前を使うが、従来の ethX 形式 に固定可能
  • /etc/systemd/network/10-persistent-ethX.link ファイルを作成
    [Match]
    MACAddress=AA:BB:CC:DD:00:11
    [Link]
    Name=ethX
    

無線ネットワークの作成

  • USB Wi-Fi ドングルを アクセスポイント(AP) として設定
  • /etc/hostapd/hostapd.conf の例
    interface=wlan0
    bridge=br0
    hw_mode=g
    channel=11
    ssid=My Cool and Creative Wi-Fi Name
    wpa_passphrase=mysecurepassword
    
  • hostapd サービスを有効化
    sudo systemctl unmask hostapd
    sudo systemctl enable --now hostapd
    

インターフェース設定

  • /etc/network/interfaces の構成
    allow-hotplug eth0
    allow-hotplug eth1
    auto wlan0
    auto br0
    iface eth0 inet dhcp
    iface br0 inet static
    bridge_ports eth1 wlan0
    address 192.168.1.1/24
    
  • 再起動後、brctl show br0 コマンドでブリッジ状態を確認

IP フォワーディングの有効化

  • /etc/sysctl.d/10-forward.conf ファイルに追加
    net.ipv4.ip_forward=1
    
  • 適用
    sudo systemctl restart systemd-sysctl.service
    

ファイアウォールと NAT の設定

  • nftables ベースの構成(/etc/nftables.conf
    • 外部トラフィックを遮断
    • 内部 DNS、DHCP、SSH を許可
    • NAT を実行
  • サービスを有効化
    sudo systemctl enable nftables.service
    

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
    

シリアルポート管理

  • 機器に シリアルコンソールポート があれば、モニターなしでも管理可能
  • /etc/default/grub を編集
    GRUB_CMDLINE_LINUX='console=tty0 console=ttyS0,115200n8'
    GRUB_TERMINAL=serial
    GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
    
  • systemctl enable [email protected] の後に sudo update-grub を実行

動作確認

  • 再起動後、sudo nft list ruleset でファイアウォール状態を確認
  • sudo nft -c -f /etc/nftables.conf で設定を検証
  • sudo systemctl reload nftables.service で無停止ルール更新が可能
  • DHCP ログの確認
    sudo less /var/lib/misc/dnsmasq.leases
    sudo journalctl -eu dnsmasq.service
    

追加機能

  • ログ記録とトラフィック分析VLAN 分離IPv6 対応VPN トンネリング動的ルーティング(BGP、IGP) などへ拡張可能
  • Prometheus ベースの監視DMZ ポートフォワーディング侵入検知と遮断 機能の追加も可能
  • ただし、ルーター自体に過剰なソフトウェアを入れるのは避け、DMZ や VLAN でトラフィックを分離するのが望ましい

結論

  • フリーソフトウェアと廃棄ハードウェア だけでも完全なルーターを構築可能
  • ルーターは結局 一般的なコンピュータにすぎず、誰でも自作できる
  • 不要な機器を再活用して 安定的で柔軟なネットワーク基盤 を構築できる

1件のコメント

 
GN⁺ 2026-03-31
Hacker Newsのコメント
  • 素晴らしい記事だ。長年メンテナンスしてきた create_ap スクリプトを紹介したい。
    GitHubリポジトリで見られる。
    これはたった1行のコマンドで、どんなLinuxコンピュータでも WiFiルーター に変えるシェルスクリプトだ。
    基本的にWiFiカードをAPモードに設定し、WPA2/3、MACフィルタリング、DHCP/DNSサーバーまで自動構成する。
    依存関係もほとんどなく、NetworkManagerも不要だ。
    古いAtomミニPCで自宅インターネットのゲートウェイとしても使ったし、IoT機器の リバースエンジニアリング用テストネットワーク を作るときにもよく使っている。
    関連事例はこの記事で見られる

    • APモードで性能のよい WiFiチップセット のおすすめがあれば知りたい
  • 多くのコメントは「とにかく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キャッシュ まで載せて、捨てられるはずだったハードウェアをかなり有効活用した

    • 私も似たような道をたどった。新聞社のオフィスのISDN回線を1台のコンピュータで共有したのが、Webサイト構築につながった。
      27年たった今でもなお、「Linuxと輪ゴムとクリップで安く解決する方法」を尋ねる人たちに呼ばれる
    • 昔、Pentium MMX 200MHzで両親の家のDSLが切れたとき、OpenBSDブリッジ で一時的なWiFi接続を作ったことがある。驚くほど十分な速度だった
    • VLAN対応スイッチさえあれば、NIC 1枚でもルーティング は可能だ
    • 私の場合は逆で、最初は OpenWRTでルーターファームウェアをフラッシュ しながらLinuxを学んだ
    • もう25年前の本なのでさすがに古すぎる。誰か 新しいLinuxルーター本 を書くべきだ。
      参考: Linux Routers - A Primer for Network Administrators
  • 私は長い間 OPNsense/pfSense を使ってきたし、強くおすすめする。
    自動更新、バックアップ、WireGuardトンネル、Suricataベースのパケットフィルタリングなど、機能が素晴らしい。
    週末にネットワーク管理をするとき、ターミナルではなく Web UI で設定できるので楽だ。
    公式サイト

    • 同意するが、GUIはLinuxの概念と噛み合わないことが多い。Barracudaルーターを使っていたが、結局 SSHで直接コマンド入力 して問題を解決した。
      pfSense、OpenWRT、Barracuda、Verizon OEMなどは機能は同じでも表現方法がばらばらだ
    • もう週末にネットワーク管理なんてしたくない。TrueNASのような完全なアプライアンス型ルーター配布版 があればいいのにと思う
    • OPNsenseをやめた理由は、自分がやりたかった設定を制限したからだ。
      「機器のほうが自分よりよく分かっている」という態度の製品は好きではない。柔軟性の欠如 が決定的だった
    • Linuxで学ぶのはよいが、ルーターは失敗すると困る。
      AtomミニPCで300Mb/sまではルーティングしていたが、ギガビット回線に変えたのを機に VMベースのOPNsense に移行した。
      Intelの4ポートカードで各ポートをVMに個別パススルーするのが楽しい
  • 私は N100 + 10Gbitルーター機材 を使っているが、専用ハードウェアルーターより レイテンシ が高い気がする。
    専用チップセットはCPU介入なしにパケットを処理するので、はるかに効率的だ。
    実際にこうした差を測定した人がいるのか気になる。たいていは帯域幅テストしかやらない

    • その通り、Linux bridge は専用スイッチASICほど高速にはなれない。
      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はこういう用途に非常に向いている

    • WiFi meshのレイテンシ性能 がどこまで改善できるのか気になる。コンシューマー向けルーターと比べると、どれくらい違うのだろう?
    • 私のISP提供APも ギガビットWiFi をサポートしている。ただしDNSを強制設定して監視目的があるようなので交換したい。
      同等性能のAPを買おうとすると180ドルほどかかるのが惜しい
  • ルーター輸入禁止政策の 政策的理由 が気になる。
    すでに大半のトラフィックはTLSで暗号化されているのに、なぜまだ危険だと見なされるのか疑問だ。
    もしかして ボットネット、DDoS、弱いデフォルトパスワード、あるいは内部ネットワーク侵入のような理由だろうか?

    • セキュリティ業界ではこれを APT(Advanced Persistent Threat) と呼ぶ。
      Volt Typhoon、Flax Typhoonのような事例は今も活動中だ。
      外国製機器の禁止だけで完全に解決はしないが、セキュリティは製品ではなくプロセス なので、サプライチェーンを制御することは必要だ
    • あなたの挙げた理由はすべて当たっている。加えて「遠隔で機器を停止できる能力」も大きなリスクだ。
      昔Amazonで Bot Mitigation を担当していたとき、世界中の消費者向け機器から発生するトラフィックを見ていた。
      半分にも満たない稼働機器だけでも、防ぎきれない規模のトラフィックが発生していた
    • 実際、FCCが本気でセキュリティを気にしていたなら、固有パスワードの義務化パッチ未対応メーカーへの責任制度 を導入していたはずだ。
      HuaweiであろうとNetgearであろうと、DDoSの発生源という意味では同じだ
    • 理由は複数ある。
      DNS/トラフィックのメタデータへのアクセス、内部ネットワーク攻撃、DDoS、インターネット遮断などだ。
      結局のところ 監視と統制の手段 として悪用されうる
    • 技術的にはその通りだ。TLSで暗号化されていても、メタデータ だけで十分監視できる。
      外国製機器がバックドアを持つ可能性は、現実的な想定だ
  • 「とにかくOPNsenseを使え」というのは 運用環境 ではよい助言だが、学習用 としては最悪だ。
    この記事の価値は、ルーティングがどれほど 単純な原理 で動いているかを示している点にある

    • SOHOクラスの機器は、本当の意味での ルーティング をしていない
  • 記事で触れられていない点だが、ルーターとして使うなら /etc/sysctl.d/10_router.conf

    net.ipv4.ip_early_demux = 0  
    net.ipv4.tcp_early_demux = 0  
    net.ipv4.udp_early_demux = 0
    

    のような設定で オーバーヘッド削減 ができる。
    VoIPやゲーム向けの レイテンシとジッターを減らすチューニング に効果的だ。
    gro_flush_timeout、sch_cake、napi_defer_hard_irqsなども調整している。
    家族によりよい ゲーミング体感 を得てもらうのが目標だ

    • 私もearly_demuxは無効にしているが、実際の差はテストしたことがない。
      私の場合、fq_codel だけでも10Gbps環境で十分安定している
  • むしろ私は 光モデムの置き換え のほうが気になる。
    AT&Tから支給されたものは頻繁に遅くなるし、セキュリティ面も怪しい。
    自前の光モデムに置き換える方法 に関するガイドがあるのか知りたい