世界を動かす技術を、日本語で。

あらゆるものをルーターに変える方法

概要

  • 米国政府による新規ルーター輸入禁止政策への対策として、自作ルーターの構築方法を解説
  • Linux搭載ミニPCなど、一般的なPCを使ったルーター化の実例紹介
  • 必要なハードウェア・ソフトウェア構成や設定手順を詳細に説明
  • セキュリティやネットワーク管理の基本設定もカバー
  • 追加機能や拡張のヒントも掲載

自作ルーターのすすめと背景

  • 米国政府の新政策 により、新型家庭用ルーターの輸入が実質禁止される可能性
  • 既存のPCやミニPCを利用して 自作ルーター を構築する方法の提案
  • ルーターは本質的に 汎用コンピュータ であり、特別な専用機器でなくても十分機能
  • DebianやAlpine Linuxなど、 Linuxディストリビューション を利用した安定運用の実績
  • この手法は政策への「実用的な対抗策」ではなく、 ハードウェアの活用例 として紹介

ハードウェア選定

  • パッシブ冷却ミニPC が推奨だが、デスクトップPCやSBC、旧ノートPCなども利用可能
  • Ethernetインターフェース2つ が理想、USB-Ethernetアダプタでも代用可
  • 低スペックCPU(例:Celeron 3205U 1.5GHz)でも家庭・小規模事業用途なら 十分な性能
  • 古いノートPC+ExpressCard Ethernetカード、古いスイッチ、ジャンク無線APの組み合わせ例

ネットワーク構成例

  • WAN(eth0)、有線LAN(eth1)、無線LAN(wlan0)という 3インターフェース構成
  • LAN側インターフェースは ブリッジ接続 し、有線・無線間の通信を可能に
  • USB-Ethernetアダプタを追加し LANポート拡張 も可能(速度は専用スイッチに劣る)

必要なソフトウェア

  • Debian を例に、必要なパッケージは以下
    • hostapd(Wi-Fiアクセスポイント用)
    • dnsmasq(DNS・DHCPサーバ)
    • bridge-utils(ブリッジ設定)
  • 無線LAN用の ファームウェア追加 も必要な場合あり
    • Intel用: firmware-iwlwifi
    • Realtek用: firmware-ath9k-htc
    • 古いAtheros用: firmware-atheros

インストールと初期設定

  • PXEネットワークブートの BIOS/UEFI無効化
  • 電源復帰設定やUSB/PCI電源管理の 最適化
  • ディスプレイ未接続時の起動対策として HDMIダミードングル 活用推奨
  • 非フリーリポジトリの有効化や 追加ファームウェア の導入

インターフェース名の固定

  • /etc/systemd/network/10-persistent-ethX.linkMACアドレスごとの固定名割当
  • 旧式のethX表記で管理性向上

無線LANアクセスポイントの設定

  • /etc/hostapd/hostapd.confSSIDやパスワードなどを定義
  • hostapdサービスの 有効化と起動
  • 小規模空間ならUSB Wi-Fiドングルでも実用範囲
  • 安定運用重視なら 専用AP機器 推奨

ネットワークインターフェース設定例

  • /etc/network/interfacesIPアドレスやブリッジ構成 を定義
  • 再起動後、brctl showブリッジ状態確認

IPフォワーディングとファイアウォール設定

  • /etc/sysctl.d/10-forward.confnet.ipv4.ip_forward=1を設定し IP転送有効化
  • nftablesによる 標準的なNAT・ファイアウォールルール
    • 外部からの不正アクセス遮断
    • DNS・DHCP・SSHはLAN側のみ許可
  • nftablesサービスの 自動起動

DHCP・DNSサーバ設定

  • dnsmasqによる シンプルなDHCP・DNS構成
    • /etc/dnsmasq.confでIPレンジやゲートウェイ指定
  • サービスの 自動起動

シリアルコンソールによる管理

  • /etc/default/grub編集で シリアルポートからの管理 を有効化
  • systemctl enable [email protected]Gettyサービス起動

動作確認と運用

  • 再起動テストで 安定動作を確認
  • nft list rulesetjournalctlファイアウォール・DHCPログ確認
  • nft -c -f設定ファイルの事前検証
  • systemctl reload nftables.service無停止ルール更新

拡張機能の例

  • ログ取得や トラフィックモニタリング
  • VLAN・セグメント分割、IPv6対応
  • DMZやVPN、ポートフォワーディング
  • ダイナミックルーティングや 侵入検知・遮断
  • ルーター自体には 最小限のソフトのみ 推奨、追加機能はDMZ/VLAN側に分離推奨

まとめ

  • 自作Linuxルーター は、安価なハードウェアと最小限の設定で十分な機能・安定性を実現可能
  • 政策や市販機器の制約に左右されず、 柔軟で拡張性の高いネットワーク構築 が可能
  • ネットワークの本質理解と ハードウェア資源の有効活用 に役立つ技術

Hackerたちの意見

OpnSense/pfsenseを何年も使ってるけど、めっちゃおすすめだよ。自動更新がすごく便利で、設定のバックアップもできるし、WireGuardトンネルも内蔵されてるし、Suricataを使ったパケットフィルタリングのオプションみたいな高度な機能もある。週末にネットワーク管理をしてるとき、Linuxのターミナルでネットワーキングの内部を学ぶ必要がなくて、Web UIにアクセスしてルーターを設定できるのが本当に嬉しい。

そうそう、これが正しい道だよ。Linuxを使うことでたくさん学べるけど、間違えたくないよね。私は低電力のIntel AtomミニPCに追加のNICをつけてルーターとして使ってたんだけど、テストしたら300Mb/sくらいルーティングできて、十分だった。でも、その後ギガビットインターネットに変えたから、eBayでIntelの4ポートGigEカードを買って、今はOPNSenseをVMで動かしてる。正しいIntelカードを使えば、ポートを個別にVMにパススルーできるから、遊ぶのに便利だよ(詳しいことは知らないけど、仮想化サポートのあるカードを探してみて、私のは82575GBだったと思う)。正直、私のセットアップはVMのせいでまだ問題が起きやすいかもしれないけど、専用ハードウェアを手に入れる時間がなくて、ここ数年は問題なく動いてる。

原則的には同意だけど、GUIの抽象化がLinuxのツールや用語、概念に必ずしも対応してないことが多くて、「これがLinuxだ、できるってわかってるし手動でできるのに、このGUIは何を考えてるんだ?!」って壁に頭をぶつけることがよくある。最近、Barracudaルーターを使ってみたんだけど、壁に頭をぶつけることになったのは、SSHインターフェースとLinuxユーザーランドがあって、必要なコマンドを直接入力することで問題を解決できたから。もちろん、GUIを使って設定を再適用したら手動での設定が消えちゃったけど… pfsense、OpenWRT、Barracuda、VerizonのOEMルーター(Actiontec)を使ったことがあるけど、どれも同じ機能を全然違う形で表現してるよね。

今は週末にネットワーク管理をしたくない段階なんだ。Ubiquitiのルーターを使ってて、結構いい感じなんだけど、ルーターにはTrueNASみたいな、ハードウェアを完全にアプライアンスに変えて、一度設定したら忘れられるようなディストリビューションが欲しいんだ。そんなのある?

最近opnsenseをやめたんだけど、いくつかやりたかったことに対して立場を取ったから(例、WANポートのwebUIだったかな)。高レベルでは理解できるけど、私より賢いと思ってるデバイスが大嫌い。LAN上でWAN側を実際のローカルLANに設定しようとして、1時間もハッキングして「こんなこともできないなら、もういいや」と思った。技術の世界には、自分の使い方を理解してると思ってる人が、狭い視野で決定を下すことが多い。彼らの製品を使おうとしてるのが、ただのバカな家庭用ユーザーだけじゃないってことを理解できないから。

「Xを使えばいい」ってコメントが多いけど、この記事はルーティングの基本がどれだけ簡単かを示してるんだよね。それに、もしDockerやNATルーティングの仮想マシンを使ったことがあるなら、同じことをやってるってこと。AndroidのスマホでWi-Fiホットスポットを有効にしたことがあるなら、この記事が説明してることをほぼそのままやってるよ。これらはすべて、裏では同じLinuxカーネルの機能を使ってるんだ。実際、このメッセージがあなたの画面に届くまでに、複数のLinuxソフトルーターを通過した可能性が高いよ。

「OPNsenseを使えばいい」っていうのは、運用にはいいアドバイスだけど、学ぶには最悪なアドバイスだよね。この文章は、ルーティングにどれだけ魔法が関わっていないかを示しているから、価値があるんだ。

これ、懐かしいな。Linuxを実際に使い始めたのは、余ったコンピュータでルーターを作ることだった。あの頃の完璧なマシンは100MHzのPentiumで、スリムなデスクトップケースに入ってた。Pentium IIIがデスクトップ用のチップだったから、初期のPentiumクラスのマシンがたくさんあったんだ。そして、10mbのISAネットワークカード(できれば3Com)があれば、その時代のインターネット接続には十分なパワーがあった。でも、100mbのPCIカードはまだかなり安かった。NICを2枚インストールして、お気に入りのLinuxディストリビューションをロードして、IP-MasqueradingのHOWTOに従えば、アパート全体やオフィス、LANパーティーのためのインターネットアクセスができた。最終的には、Robert ZieglerのLinux Firewallsを基にして、他のサービスも追加していったんだ。スパムフィルターやSquidキャッシュを追加して、捨てられる予定だったハードウェアがこんなに活用できるなんて、すごかったよ。

あは、私の話にもすごく近いね。166MHzのPentiumを使ってて、すべてPCIカードと100Mbitだった。その時が私のキャリアの始まりだった。

逆のケースだけど、俺のLinuxの最初の本格的な使い方は、OpenWRTでルーターをフラッシュして遊ぶことだったよ!

数年前に、両親のために隣のWiFiとつなぐためにPentium MMX 200MHzのシステムを使ったことがあるよ(もちろん、許可を得てね)。DSLが数日間ダウンしてた時にね。PCIのEthernetとWiFiカードを入れて、OpenBSDをブートしたら、驚くほど速くてダウンタイムを乗り切れたんだ。 :)

懐かしいな、同じような経験があるよ。新聞社のニュースルームとオフィスを一台のコンピュータでISDN接続を共有してオンラインにしたんだ。確か、100MHzのGateway 2000コンピュータだったと思う。それが「ウェブサイトが欲しいんだけど、作れる?」って話に発展して。まあ、作れなかったけど、Apacheが使えたから、なんとかスキルを身につけて他のところでも活用したよ。ウィスコンシンのある場所でも同じことを繰り返して、最初は56kのダイヤルアップ接続を全てのディスパッチャーと共有してたんだけど、そのデバイスが900日も再接続せずに動いてたことに感心されてた。90%の作業はオンプレミスのWyseターミナルでやってたし、ダイヤルアップはメールや住所をググるために使ってた。27、28年後、今でも時々呼ばれて、Linuxで安く何かを達成する方法を聞かれる。時代や技術は変わったけど、彼らが安く済ませたい気持ちは変わらないね!

このスレッドにいる誰かがアイデアを持ってるかもね。シンプルな「家畜、ペットじゃない」ルーティングVMを立ち上げる最も簡単な方法って何だろう?状態をいじりたくないから、バージョン管理できる設定ファイルが欲しいんだ。理想的には、バージョン適用が失敗したら自動で前の状態に戻る感じがいいな。OpenWRTは俺の説明に一番合ってる気がするけど、もっと派手でモダンなものが好きな人もいるかもね。

OPNsenseがいいよ。俺はDell OptiPlex SFFで8年間使ってるけど、ルーティングにVMを使おうとは思ったことないな。でも、みんな使ってるみたい。GUIにバージョン管理があって、必要な変更の数を自分のニーズに合わせて調整できるよ。自動でconfig.xmlのバックアップもできるしね。

ハードウェアがFreeBSDベースのもので動くなら、PfsenseかOpnSenseをおすすめするよ。設定がめっちゃ簡単で、驚くようなこともあんまりない。前のルーターで10GbEのイーサネットカードにアップグレードしたら、FreeBSDベースのものと相性が悪くなっちゃった。ClearOSに変えたら、Pfsenseと同じくらい簡単だった…もしかしたらそれ以上かも?ぜひチェックしてみて。

VyOSが合いそうだね。自分がやりたいことを実現するのは結構簡単だったけど、結局GUIに戻っちゃった。ペットが欲しかっただけで、農場を始めたかったわけじゃなかったからね。

NixOSを使ってhttps://github.com/thequux/nix-zone-firewall/で何年も上手くいってたよ。使わなくなったのは、古い組み込みLinuxマシンに問題が出てきたからで、新しいデバイスを買ってソフトルーターとして使うより、Mikrotikにした方が良さそうだったから。

ルーターの輸入禁止の政策の理由が気になるな。もし政府がそんな法律を考えてるなら、主な懸念事項は何だろう?今や多くのインターネットトラフィックがTLS/SSLや他の暗号化で守られてるのに、バックドアがあるかもしれないルーターを市民が使ってることがまだ問題になるのはなぜ?主にボットネットやDDoS活動、ネットワーク機器のデフォルトの弱い認証情報、あるいはセキュリティが甘いルーターや接続されたNASデバイスが敏感なデータをさらすようなビジネスネットワークの懸念なのかな?つまり、トラフィックの復号化よりも、ルーターを監視や妨害、セキュリティが甘い内部システムへのアクセスの足がかりとして使うことが懸念されてるってこと?

それは二段落目で言ってること全部だし、さらにそれをオフにする能力も含まれてるよ。みんなのルーターが同時に無効になったらどうなるか想像してみて。携帯ネットワークがその急増する標準トラフィックに対応できるか分からないし、そうなったら国全体が通信のブラックアウト状態になるかも。ルーターを「壊して永久にオフにする」ってのは、「DDoSのために利用する」こととほぼ同じくらい悪いと思う。俺はAmazonでボット対策に関わってたけど、世界中の消費者デバイスから分散した大量のトラフィックを見たことがあるんだ。驚くことにアメリカでもそうだった。家庭用ページをヘルスチェックとして使ってる侵害されたルーターがあるんじゃないかと疑ってた。たくさん調査したけど、ネットワークエンジニアと話した後の短い結論は、トラフィックの量とソースの分布が止めるのは不可能だってこと。特定のターゲットに当たったら、住宅用デバイスを止めるための帯域幅が世界に十分ないんだ。ちなみに、これはアクティブなAmazonの顧客の半分以下から来てたもので、アメリカ全体からではないよ。まあ、ルーターじゃなかったけど、消費者デバイスだったし、悪意はなくて、いつものように無能さ(コードの)だった。

トラフィックの復号化よりも、ルーターを監視や妨害、セキュリティが甘い内部システムへのアクセスの足がかりとして使うことが懸念されてるってこと?それが技術的な懸念事項だと思う。TLSで保護されたトラフィックがあっても、個々のユーザーに問題を引き起こすのに十分なメタデータは通常あるし、外国の機器が何らかのセキュリティサービスによってバックドアが仕込まれているという仮定はおそらく安全だと思う。

理由はいくつかあるよ。 - 訪問しているサイトのデータ(DNS/IP、ドメイン名(ESNIを使ってない場合)、トラフィック量など)へのアクセス - あなたのネットワークの内部へのアクセスで、そこからセキュリティが甘いマシンを攻撃できる - DDoS - インターネットをシャットダウンする能力 もっとあると思うけどね。

政策の理由は、トランプ政権がルーターの輸入を許可するために賄賂を受け取っているってこと。いろんな企業が関税免除を得たのと同じだね。

ポリシーやセキュリティの人たちがよく使う言葉は「高度持続的脅威(APT)」だね。間違ってはいないけど、最近のケースがいくつかあって、今も進行中だし、君も聞いたことがあるかも:Volt、Flax、Salt Typhoon、Velvet Antとかね。君が知らないものももっとあるけど、それはオペレーターだけが存在を知ってるから。これらは制御されたデバイスのネットワークで、根絶するのが難しいことは、まだ根絶されてないってことからもわかるよね。今も活動していて、防衛や情報システムを侵害するために使われてる。さらに、紛争中の大量DDOS攻撃の脅威もある。外国製の機器を禁止すれば解決するの?いや、無理だよ。セキュリティは製品じゃなくて、プロセスなんだ。そのプロセスの中でステップを踏む必要がある。僕はこう思う:私たち(個人や機関)は、アメリカや西側諸国で通信機器を使う自由を享受してる。このことを当たり前だと思うのは間違いだよ。これを維持するために、アメリカが国内のネットワーク機器の供給を立ち上げたり、どこからその機器が来るかを慎重に調整する必要があるなら、そうしよう。そうでないと、権力者たちはその懸念を利用して、もっとひどい手段に出るだろう。

N100+10Gbitのルーターを持ってるんだけど、ポートがいくつかあるやつね。ルーターディストロが動いてて、まあまあ良いデバイスだと思うけど、ucg-fiber/route10のデバイスほど効率的じゃない気がする。それ自体は気にしないけど、パケットのレイテンシがかなり高いんじゃないかと思ってる。あのデバイスはハードウェアプログラム可能なルーターチップを持ってるから、転送はメインCPUの介入なしで100%行われるんだ。だから、パケットが到着した時の遅延がないし、ヘッダーが書き換えられて、チェックサムが確認されて、すぐに送信される。これを実際に測定した人いる?帯域幅とかのテストはよく見るけど、ディープパケットインスペクションを有効/無効にした時の実際の影響を示せるテストはあまり見ないな。Serve the homeはすごいテストハードウェアを手に入れたみたいだけど、まだこういうテストをやってないみたい。

良いエネルギー効率で安価なデュアルNICのSBCやミニPCをおすすめできる人いる?前に調べた時は、あまり良い選択肢がなかったんだよね。

いい記事だね!ちょっと宣伝させてもらうけど、僕が何年もメンテナンスしてるcreate_apスクリプトがあるんだ(http://github.com/dlenski/create_ap)。これはシェルスクリプトで、どんな古いLinuxコンピュータでも一発コマンドでWiFiルーターに変えられるんだ。デフォルトでは、WiFiカードをアクセスポイントとして設定して(WPA2/3やMACフィルタリングに対応)、パケット転送やルーティングを設定し、DHCPとDNSサーバーも動かすよ。一般的に賢いデフォルト設定を選ぶけど、カスタマイズもめっちゃできる。もしWiFiカードが同時にAPとクライアントモードをサポートしてれば、それもできるよ。必要なものはすごく少なくて、基本的にはLinuxと互換性のあるワイヤレスカード、あといくつかの一般的な設定パッケージ(hostapd、iw、iproute2、iptables、dnsmasq)だけ。NetworkManagerはいらないんだ。僕は何年もこれを自宅のインターネットゲートウェイとして使ってて、古いファンレスAtomミニPCで動かしてたよ。WiFiネットワークをすぐにセットアップしたり解除したりできるから、IoTデバイスのリバースエンジニアリングのときにテストネットワークを作るのにも役立つ。これ目的で頻繁に使ってるよ(https://snowpatch.org/posts/i-can-completely-control-your-sm...を見てね)。

記事の中で見かけなかったことが一つあるんだけど、ルーター特有の調整、例えば/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やnapi_defer_hard_irqs、sch_cakeの調整、lowatや出力制限、さらに数百個もあるけど、それを詳しく説明すると長くなるね。僕の全体的な目標は、家族にレイテンシー、ジッター、スループットの数値を提供して、彼らの生活の質やゲームのスコアを向上させることなんだ。