これは余剰マシンとOSSで実現した、DNSフィルタリングサーバー化による「廃物希釈」の記録です。
これまで我が家で
円盤再生ホームシアターPCとして余生を過ごしてた ZOTAC HD-ID11。

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

X300がHTPCの役割をカバーするようになったことで、LibreELEC最新版のサポートから外れたHD-ID11は、いよいよ完全退役の時を迎えたかに思われました。
そう思ったまさにそのタイミングで、昨今のPHP脆弱性に代表される情報セキュリティ関連のニュースが世間を騒がせました。
家庭内ネットワークの情報セキュリティを再点検
せっかくの機会なので、自宅の「ネットワークの安全」について改めて見直してみることに。
家中のルーターやアクセスポイントを改めて点検したところ、1台のアクセスポイントのファームウェアサポートが終了していることが判明したため、こちらは即座に最新のWi-Fi機器へ買い替えました。
また、クライアント端末(Windows / Android)へのESET導入確認や、Linuxマシンのufw(ファイアウォール)再設定など、ネットワーク全体の防衛策を一通り完了させました。
一通りの対策を終えたあと、ふとAI(Gemini)に「他になにか穴がないか」、そして「10年前に試みたUTM化のようなことが、今回余ることになったHD-ID11で可能かどうか」を尋ねてみました。

すると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側に肩代わりさせた副産物なのか、メインルーターが詰まったり落ちたりする頻度が明らかに減ったのも嬉しい誤算でした。

かつて捨てられそうになっていたSocket370のCPUファンを加工してメモリクーラーとして増設し、常時稼働モードへと生まれ変わったHD-ID11。
「ただ単に古いものを動かすこと」自体を目的とした不毛な徒労に終わることなく、我が家のネットワークを裏で静かに支え続ける頼もしい「セキュリティ専用マシン」として、今日も元気に稼働しています。
コメント