ハードウェアファーム・OS電脳

枯れたPCをDebian + AdGuard Homeで専用ホームセキュリティサーバーに

この記事は約7分で読めます。

これは余剰マシンとOSSで実現した、DNSフィルタリングサーバー化による「廃物希釈」の記録です。

これまで我が家で

円盤再生ホームシアターPCとして余生を過ごしてた ZOTAC HD-ID11。

LibreELECな古いHTPCでブルーレイが再生可能に。外付ドライブの円盤再生用「艦橋」という余生
記事タイトルは決して「環境」の誤変換ではありません。いつもは「母艦」「専用機」という言葉を当てはめそうな場面ですが、今回の場合に限り「艦橋」と呼んだ方がもっと相応しそうだったので。このたび、久しぶりにPCカスタムネタで胸熱なエウレーカ体験が出来ました。10年ほど前にヤフオクでたまたま見かけ、Arduino unoよりも安く落札できた新同品のベアボーンPC、ZOTAC HD-ID11。製品の世代としては15年前ほどのものとなります。CPUはIntel Atom D510というロースペックさから、入手してから用…

今時 Atom D510(1.66GHz / 2コア4スレッド)という、お世辞にも現代のメインPCとしては使えない極めてロースペックなマシンですが、これまで長らく使い倒して来られた理由は、その圧倒的な超省電力性と、オンボード搭載されていたGPU、NVIDIA IONのおかげでした。

このGPUメモリはDDR3の512MBに過ぎませんが、円盤再生だけであれば十分なスペックでした。
しかし残念なことに、このNVIDIA IONはHTPCとして運用していた軽量Linux OS「LibreELEC」の最新版サポートから漏れることになります。
その理由は、NVIDIAの「プロプライエタリ(非公開)」性に起因するオープンソースドライバ「Nouveau」のサポート終了でした。
このNouveauってリバースエンジニアリングの産物なんですよね…

このようなLinux界隈の涙ぐましさに対するNVIDIAのプロプライエタリ性から端を発し、サブマシンのGPU交換、そして最終的にメインマシンをDebian Linuxへ移行するに至った経緯は、以前書いた通りです。

とうとうDebian LinuxをメインPCに。Windowsからの卒業
別の用件で、ふとGeminiさんに「アーリーアダプターの対義語」として次の事を訊ねてみたことがあります。不利益に対しては慣熟を超えてでも脱出を図るような早期離脱者を表す表現ってありますか?例えば、XのGrokがユーザー投稿をラーニング対象にしたことで離脱する絵師とか、メイン支払いに使ってたクレジットカードを、ポイント制度が改悪されたことですべての支払いを別のクレジットカードに移すことを厭わない人とか。具体的には、サービスプラットフォームにユーザーに不利益で一方的な改変を加えられた場合、即座に離脱反応する層で…

Debianにより格安で堅牢なメインマシンを組んだことで、それまで5年間にわたりメインPCを務めてきたDeskMini X300は、Windowsのままサブ機としてHTPCの役割を引き継ぐことになりました。

メインマシンの座をLinuxPCに譲ったDeskMini X300で仮想化を試す。最後はVLCでHTPCに
メインPCを別のDebianマシンに代替しました。これまでメイン機だったX300は、息子の同じX300 Windows11マシンのほうを高性能化しようとCPUのRyzen3 3200Gを、息子のX300に入ってるAthlon 3000Gと交換しています。同時にメモリも32G⇔16Gと息子のマシンのほうを増量してます。そしてこのX300にも、いったんDebian LinuxをWindows11に上書き導入してみました。WindowsはDebianの中での仮想化を図るためです。X300にDebianを導入した後…

X300がHTPCの役割をカバーするようになったことで、LibreELEC最新版のサポートから外れたHD-ID11は、いよいよ完全退役の時を迎えたかに思われました。

そう思ったまさにそのタイミングで、昨今のPHP脆弱性に代表される情報セキュリティ関連のニュースが世間を騒がせました。

家庭内ネットワークの情報セキュリティを再点検

せっかくの機会なので、自宅の「ネットワークの安全」について改めて見直してみることに。
家中のルーターやアクセスポイントを改めて点検したところ、1台のアクセスポイントのファームウェアサポートが終了していることが判明したため、こちらは即座に最新のWi-Fi機器へ買い替えました。
また、クライアント端末(Windows / Android)へのESET導入確認や、Linuxマシンのufw(ファイアウォール)再設定など、ネットワーク全体の防衛策を一通り完了させました。

一通りの対策を終えたあと、ふとAI(Gemini)に「他になにか穴がないか」、そして「10年前に試みたUTM化のようなことが、今回余ることになったHD-ID11で可能かどうか」を尋ねてみました。

HP Proliant ML115 G1にSophos UTM Home Editionを導入してみた
ご無沙汰しています。このブログではこれまで、古いものをカスタムして本来の機能を超えた能力が発揮できる、という喜びを何よりのモチベーションにしてきました。だからといって古いものを捨てないでいると、さすがにどんな改造をしてももう使い物にならないものも多くなってきて、物置が一杯になってきました。そこでこのご無沙汰している間、このブログに登場したものも含めたくさんのガジェットを処分してました。昔お世話になったToshibaやIBM含め、32bitのPCはすでにもう1台もありません。この度はオフハウス様に本当にお世話…

するとGeminiからの提案は、「ネットワークカードが1枚しかなく、非力なAtomのHD-ID11には、フル機能のUTM-OSを入れるのではなく、

軽量Linux上で「DNSレベルのセキュリティフィルタリングサーバー」を構築する

のがベスト」というものでした。
ホームネットワーク内に専用のDNSサーバーを置き、悪意あるドメインや不要な広告をネットワークの入口でブロックする仕組みです。

Geminiとの対話で決めた「DNSとDHCPの一本化」

家庭内ネットワーク構成を具体的に相談している中で、非常に興味深いアドバイスをもらいました。

「AdGuard Homeを入れるなら、ルーターのDHCP機能を切り、AdGuard側にDHCPサーバーの役割も持たせて一元化すると良いですよ」

ルーターがIPアドレスを配布している状態だと、AdGuardの管理画面にはすべての問い合わせが「ルーターからのアクセス」として一括集計されてしまいます。
しかし、DHCPサーバーの役割もAdGuard Home自身に担当させれば、宅内の各デバイス(スマホ、PC、IoT機器)に直接IPを割り当てつつ、個々のホスト名とDNSリクエストを完全に紐付けて可視化できるようになります。

どの端末がどんな通信を行っているのかがひと目で分かり、インシデント発生時のトレーサビリティが劇的に向上する—。
この着想を得たことで、古いHD-ID11を単なるDNSプロキシではなく、我が家のネットワークの「交通整理係」として完全独立させることに決めました。

構築とセキュリティ施策の要点

実際の構築作業は、Debian trixieを最小構成でインストールするところからスタートしました。
インストールの手順は省略しますが、tasksel では「SSHサーバー」と「標準システムユーティリティ」のみを選択し、GUI環境は完全に削ぎ落として軽量化を図っています。

ネットワークの固定IP化

メインPCのターミナル(Konsole)からHD-ID11へSSH接続して作業を行います。
私は母艦PCがLinux-KDE Plasmaなので、Konsoleからの接続ですが、WinなかたはSSHクライアントになるかと。

まず、

ip a

で有線LANのインターフェース名を確認し、

sudo nano /etc/network/interfaces

を編集して、固定IPを設定します。

# ネットワークインターフェースの設定例
allow-hotplug enp3s0
iface enp3s0 inet static
    address 192.168.X.Y   # HD-ID11の固定IPアドレス
    netmask 255.255.255.0
    gateway 192.168.X.Z   # 最上流ルーターのIPアドレス
AdGuard Home の導入

AdGuard Homeは公式のワンライナーでインストールし、daemonとして登録します。

# curlの導入とインストーラーの実行
sudo apt install curl -y
curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sudo sh -s -- -v

処理が完了すると AdGuard Home is now installed and running と表示され、サービスが自動起動します。

ufw によるファイアウォール構築

サーバー自身が攻撃の踏み台になっては本末転倒です。
ufw を導入し、ローカルLANからの必要最小限の通信だけを通す「多層防御」を固めます。

sudo ufw default deny incoming
sudo ufw default allow outgoing

# ローカルLAN(192.168.X.0/24)からのDNS、Web管理、DHCP通信を許可
sudo ufw allow from 192.168.X.0/24 to any port 53
sudo ufw allow from 192.168.X.0/24 to any port 3000
sudo ufw allow proto udp from 0.0.0.0 port 68 to 255.255.255.255 port 67
sudo ufw enable
ネットワーク再編時の迷子を救った arp-scan

構築の途中で、アクセスポイントのモード切替やIPセグメントの整理を行った際、一部のインフラ機器のIPアドレスを見失うトラブルが発生しました。
ブラウザから管理画面が開けず焦りましたが、LinuxのCLIツール arp-scan を実行したことで即座に解決しました。

ここからの初期設定とDHCPの有効化は、ブラウザからアクセスしてGUI上で完結します。

運用感

AdGuard Home + DHCPサーバーとしての運用を始めてしばらく経ちますが、家庭内のブラウジング環境は極めて快適です。
各端末側には一切特別な設定を強いることなく、Wi-Fiに接続するだけで不要な広告や追跡機能、危険なフィッシングドメインへのアクセスが静かに遮断されます。
昨今のWEB検索は、目的の情報に辿り着いても無数の広告に埋め尽くされて読みづらく、検索エンジンの利便性自体が揺らぎかねない状況です。
こうしてDNSレベルで広告をブロックできることは、コンテンツ本来の読みやすさを取り戻し、WEBサイトの存在意義そのものを救うことにもつながると感じます。

※なお、アプリやゲームによっては「広告視聴で特典が得られる」タイプのものが一部見られなくなる点には注意が必要です。
また、YouTubeやAmazonプライムのように「広告を配信しているサーバーのドメインが、本編動画を配信するサーバーやCDN基盤と完全に同一」である場合は、動画本編の遮断を防ぐためブロック対象外となります。

新調したWi-Fiアクセスポイントの高速通信をAdGuardが損なうことも全くありません。
さらに、DHCPの負荷をAdGuard側に肩代わりさせた副産物なのか、メインルーターが詰まったり落ちたりする頻度が明らかに減ったのも嬉しい誤算でした。

廃棄寸前のCPUファンをHD-ID11のメモリクーラーに転用
今、急激に手元のPC構成を新しくしています。それに伴い、手持ちの古いジャンクパーツを整理してる最中に見つかったSocket370の新品CPUクーラー。四半世紀前にヤフオクで新品2個セットが1個の価格よりも安く出品されてたものです。今に至るまで結局一度も出番がなく、これからも使うことはないと思ったので、一旦は廃棄に回そうとしました。そんなとき何故かふと、今は光学ディスク動画再生専用にオフラインで隠居してるZOTAC HD-ID11に空いてる穴が目に入りました。この穴は、HD-ID11をヤフオクで入手した際には…

かつて捨てられそうになっていたSocket370のCPUファンを加工してメモリクーラーとして増設し、常時稼働モードへと生まれ変わったHD-ID11。

「ただ単に古いものを動かすこと」自体を目的とした不毛な徒労に終わることなく、我が家のネットワークを裏で静かに支え続ける頼もしい「セキュリティ専用マシン」として、今日も元気に稼働しています。

コメント

タイトルとURLをコピーしました