HN🔥 566
💬 204

【究極のハック】あらゆるデバイスを最強のルーターに変える方法

yabones
2か月前

ディスカッション (11件)

0
yabonesOP🔥 566
2か月前

手元にある古いPCや余っているシングルボードコンピュータを、自分専用の高性能ルーターに作り変えてみませんか?この記事では、Linuxなどのネットワーク機能を駆使して、あらゆるデバイスをネットワークの司令塔(ルーター)に転用するための基本的な考え方やアプローチをまとめています。市販のルーターでは満足できない、カスタマイズ好きのエンジニア必見の内容です!

1
LatticeAnimal
2か月前

OpnSense/pfsense [0] を何年も使ってるけど、マジでおすすめ。自動アップデートも優秀だし、設定のバックアップや Wireguard トンネル、Suricata でのパケットフィルタリングみたいな高度な機能も内蔵されてる。週末にネットワーク管理をするとき、Linux のターミナルにこもって内部構造を勉強するんじゃなく、WebUI でパパッとルーターの設定ができるのは本当に助かる。

2
smashed
2か月前

「Xを使えばいい」というコメントが多いけど、この記事のポイントは最小構成を見せることと、ルーティングの核心部分がいかに簡単かを示すことにあるんだよ。

それに、DockerやNATルーティング(デフォルト設定なことが多いよね)を使った仮想マシンを触ったことがあるなら、すでに同じことをやっているようなものだ。

AndroidのWi-Fiテザリングを有効にしたことがあるなら、この記事に書かれていることとほとんど同じことを自分のスマホでやっているのと同じことさ。

これらはすべて、裏では同じLinuxカーネルの機能を使っている。実際、あなたが今見ているこのメッセージも、いくつものLinuxソフトウェアルーターを経由して届いている可能性が高いよ。

3
lucasay
2か月前

「OPNsenseを使えばいい」っていうのはプロダクション環境なら最高のアドバイスだけど、学習用としては最悪だね。
この記事には、ルーティングにどれだけ魔法のような要素がないかを示しているという点にこそ価値があるんだ。

4
bluedino
2か月前

すごく懐かしい気分になるな。俺が初めてLinuxを「実用」したのは、余り物のコンピュータをルーターに改造することだったよ。

当時、完璧だったマシンはスリムケースに入った100MHzのPentiumだ。当時はPentium IIIが最新デスクトップ向けチップだったから、初期のPentium世代のマシンなんて山ほどあったんだ。10mbのISAネットワークカード(できれば3Com製)ですら、当時のインターネット接続には十分なパワーがあった。100mbのPCIカードだってかなり安くなっていたしね。

NICを2枚挿して、好みのLinuxディストリビューションを入れて、『IP-Masquerading HOWTO』に従えば、アパートの全室やオフィス、LANパーティー全体でインターネット接続が使えるようになる。

最終的には、Robert Ziegler著の『Linux Firewalls』をベースにして構築を進めるようになったな。

その後は、スパムフィルターやSquidキャッシュみたいな他のサービスもどんどん追加していった。捨てられる運命だったハードウェアをあれほど有効活用できるのは最高だったよ。

5
hmaxwell
2か月前

ルーターの輸入を禁止する政策的な理由が気になるな。もし政府がそんな法案を検討しているとしたら、一番の懸念は何なんだろう?今のインターネットトラフィックの多くはTLS/SSLなどで暗号化されているのに、バックドアがあるかもしれないルーターを市民が使っていることが、なぜ今さら問題になるのか?

主な懸念はボットネットやDDoS攻撃、ネットワーク機器の脆弱なデフォルトパスワード、あるいはセキュリティ対策が甘いルーターやNAS経由で機密データが漏洩するビジネスネットワークの侵害といったことなのかな?つまり、通信の暗号化を解くことよりも、そのルーターを監視や妨害、あるいは守りの甘い内部システムへの足がかりとして悪用されることの方が懸念されているってことだろうか?

6
StillBored
2か月前

N100と10Gbitのポートをいくつか備えたルーター端末を持ってるんだ。ルーター用ディストリビューションを動かしている限りでは悪くないデバイスだけど、ucg-fiber/route10みたいな専用デバイスに比べると効率がかなり劣る気がする。パケットのレイテンシも明らかに高い気がして、それがどうしても気になるんだ。専用機はハードウェアプログラマブルなルーターチップを積んでいるから、メインCPUを通さずに100%転送処理が行われるんだよね。つまり、パケットが届いた時にヘッダー書き換えやチェックサム検証を行う際、CPUの割り込みやポーリングによる遅延が一切ないんだ。

誰か実際に計測した人いないかな?帯域幅のテストはたくさん見かけるけど、DPI(ディープパケットインスペクション)の有効・無効による影響や、俺が本当に知りたい指標を検証しているものは少ないんだ。『Serve the Home』が最近すごい検証用ハードを買ったみたいだけど、まだこの手のテストは走らせてないっぽいんだよね。

7
dlenski
2か月前

素晴らしい記事だ!便乗して宣伝させてもらうと、僕が長年メンテナンスしている create_ap スクリプトがあるんだ (http://github.com/dlenski/create_ap) 。

これは古いLinuxマシンをWi-Fiルーターに変えられるシェルスクリプトで、コマンド一発で動くよ。

デフォルト設定でWi-Fiカードをアクセスポイント化(WPA2/3やMACフィルタリングに対応)して、パケット転送とルーティングをセットアップし、DHCPとDNSサーバーを立ち上げてくれる。基本的には最適な設定を勝手に選んでくれるけど、カスタマイズも自在だ。もしWi-FiカードがAPモードとクライアントモードの同時利用をサポートしていれば、それも可能だよ。

要件も最小限で、Linuxと互換性のある無線カード、それに hostapdiwiproute2iptablesdnsmasq といった一般的なパッケージさえあればOK。NetworkManagerも不要さ。

僕はファンのない古いAtomミニPCに入れて、長年自宅のインターネットゲートウェイとして使っていたよ。

Wi-Fiネットワークの構築と破棄が瞬時にできるから、IoTデバイスのリバースエンジニアリングでテスト環境を作るのにも非常に便利だ。僕もよくこの目的で使っているよ (https://snowpatch.org/posts/i-can-completely-control-your-smart-thermostat/#fn:3 を参照)。

8
Bender
2か月前

この記事には載っていなかったけど、ルーター専用のチューニングとしてこういうのはどうかな。

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

/etc/sysctl.d/10_router.conf にこれを書いておくと、ルーターとして使う際のオーバーヘッドを少し抑えられるよ。他にもルーター関連のノブはたくさんあるけど、特にVoIPやゲーミング環境の遅延を減らしたいならこれは絶対に設定しておきたいところだね。他にも gro_flush_timeoutnapi_defer_hard_irqssch_cake の調整、lowat や出力制限など、数え上げればキリがない。沼にはまると長文になりそうだから割愛するけど、全体的な目的は家族が使う環境のレイテンシやジッター、スループットを改善して、QOL(もちろんゲーミングのスコアも!)を上げることさ。

もちろん、クライアント側やサーバー側でのさらなるチューニングを妨げるものではないけど、それはまた別の大きな話題だね。

9
Fwirt
2か月前

マネージドスイッチがあれば、実はNIC(インターフェース)が1枚でも全然いけるよ。NICを802.11qトランクポートとして設定して、スイッチを一種の「インターフェース拡張器」として使えばいいんだ。これは「ルーター・オン・ア・スティック」っていう構成で、うちのホームネットワークもこれで組んでいる。それに、PoE対応のマネージドスイッチを使えば、格安で出回っているエンタープライズ向けのAruba製APを家中に配置できるから、市販の消費者向けルーターやメッシュWi-Fiよりもずっと品質が高くなるよ。

僕も前は古いThinkpadをホームルーターにしていたけど、今は職場から捨てられそうになっていた少し新しいDell Optiplexに乗り換えた。i7のCPUはルーティングには完全にオーバースペックだから、その分VMを動かしてネットワークサービスを集約し、ホームラボのラックにある筐体数を減らせたのは大きなメリットだね。

この用途にはAlpine Linuxが最高だよ。

10
nostrademons
2か月前

ルーターもいいけど、AT&Tからもらった光回線のゲートウェイをどうにかしたいよ。あれが本当にゴミで……2〜3週間おきに再起動しないと極端に遅くなるし、設定画面は使いにくいし、おそらくマルウェアやセキュリティの穴だらけだろうしね。何かいいガイドはないかな?