DoH / DoTが当たり前になった今、Linuxでも最低限の対策を
本記事では 2025年12月現在 Debian のStubbyが IPv6 不安定なためそれを今回は使用しません。
(2025年頭くらいまでは Stubby の IPv6 調子良かったのですがね(^_^;))
環境によっては IPv6を止めることで通信が遅く感じられる場合 があります。
ちなみにVPN使う場合はたいがい Stubby はいりません。というかないほうがいいです。
少し前まで、DNSの暗号化は「一部の人がやる設定」だった。
だが、状況は確実に変わっている。
現在の主流はこうだ。
- 主要ブラウザ(Firefox / Chrome / Edge)
→ DoH(DNS over HTTPS)がデフォルト有効 - Android
→ DoT(プライベートDNS)(DNS over TLS)がOSで標準対応 - Windows 11
→ 設定画面に DoH 項目が正式に追加
つまり、DNSを平文で投げるほうが
むしろ時代遅れになりつつある。
一方で、Linuxは何もしなければ今も平文DNSのまま。
この記事では、VPNのような重装備は使わず、
DNSの中身だけを静かに暗号化する
という、軽量で現実的な構成を紹介する。
DNS暗号化は「匿名化」ではない
最初に誤解を解いておく。
DNS over TLS(DoT)や DNS over HTTPS (DoH) は、
- IPアドレスを隠すものではない
- 匿名化ツールではない
- 検閲回避のための魔法でもない
守るのは、あくまで DNSクエリの中身 だけだ。
現実的な脅威は、もっと地味なところにある。
- 公衆Wi-Fi
- マンションの共有回線
- 社内・学内ネットワーク
- ルーターや回線途中のDNS差し替え
こうした環境では、
- 偽のIPへ誘導される
- 広告・追跡用DNSに書き換えられる
- 意図しないフィルタリングがかかる
いわゆる DNSジャック が起きやすい。
DoT / DoH は、
この「道を汚される」リスクを減らすための仕組みだ。
なぜLinuxでもやっておく意味があるのか
多くの人はすでに、
- ブラウザでは DoH
- Android スマートフォンでは DoT
という状態でネットを使っている。
その横で、
デスクトップLinuxだけ平文DNS
というのは、
全体の整合性として少し不自然になってきている。
DNS暗号化は、もはや尖ったセキュリティ対策ではない。
現代インターネットの最低限の作法 に近い。
今回の構成方針(重要)
この記事で紹介する構成は、意図的に割り切っている。
- DNSのみ暗号化(DoT)
- IPアドレスは隠さない
- 上流DNSは Cloudflare(UFW設定の理解が必要だし不便にはなりますが…)
- IPv4のみ使用(2025年12月現在DebianのStubbyバージョンではIPv6不安定なため)
- GUI ネットワークマネージャー(NetworkManager)で設定
- VPN使用時は Stubby をオフにする前提
目的はただひとつ。
軽く、壊れにくく、説明できる構成にすること
ちなみに systemd-resolved と resolv.conf ファイルの話し
あと
Debian13という前提をつけて会話しても
systemd-resolved
があるから stubby 使ってもあまり意味がないとかAIは言うのですが
Debianでは systemd-resolved は実はデフォルトで入ってませんwww
そんなもんないんです Debian
systemctl status systemd-resolved
コマンドで調べても
Unit systemd-resolved.service could not be found.
(ユニット systemd-resolved.service が見つかりませんでした。)
ですwww
だから 今回は触れませんが
アプリやOSの勝手な通信は多少はありますが resolv.conf でDNSを制御したら
Debianはほぼユーザーが通信を管理できます。
完璧に制御するならプラスUFWのファイヤーウォールでやろうとおもえばできます。
(UFW設定の理解が必要だし不便にはなりますが…)
Stubby.yml Cloudflare 1.1.1.1 & 1.0.0.1 IPv4のみ DoT暗号化の編集例
stubby.ymlファイルは一個余計なスペースとか文字混入してもエラーで動かなくてこれをして設定GUIのネットワーク設定のDNSの自動をオンに戻すネット通信不能なんで
慎重に入力してください。
Step 4:DNSをGUIで127.0.0.1に設定する
ここがこの構成の肝。
設定を開き
ネットワーク設定を開き
IPv4 DNS:127.0.0.1
DNS自動取得:オフ
設定したら必ず適用ボタンを押す
今回の設定ではIPv6はDoT暗号化されないので
通信漏れしないように
IPv6設定にも行き
IPV6メソッドをオフにしてIPv6通信をブロック
設定したら適用を忘れずに押す
設定GUI操作方法↓


こう設定して適用押す↓
これでIPv4通信は127.0.0.1の Stubbyに流れる。

IPv6はこの場合余計な平文DNS通信をするのでブロックしておく
設定したら適用を忘れずに押す↓

これをして設定GUIのネットワーク設定のDNSの自動をオンに戻す⚠ VPNを使うときの注意(重要)
この構成では、VPN使用時は Stubby をオフにすることを推奨する。
まあ別にどっちみち通信はできるんだけど理由はシンプル。
- 多くのVPNは独自DNSを使う
- VPN側のDNS保護と Stubby が競合することがある
- DNSが二重管理になると、通信不能やリークの原因になる
運用方針としては、
- 通常通信(VPNなし)
→ StubbyでDNS暗号化 - VPN使用時
→ Stubbyを停止し、VPNのDNSに任せる
という切り替えが最も安定する。
Stubby停止:(再起動で自動オン)
これをしてGUI設定のネットワーク設定のDNSの自動スイッチををオンに戻す
sudo systemctl stop stubby
再開:
sudo systemctl start stubby
⚠ IPv6を有効にしない理由(Debian + Stubbyの実情)
近年のDebian環境では、
- StubbyでIPv6を有効にすると
- 環境によって通信できなくなるケースが実際にあった
体感的には、Debian側の Stubby 実装に起因する不具合の可能性も高い。
原因は一つではない。
- Stubbyの実装状況
- systemd / NetworkManager との絡み
- 上流DNSやISP側IPv6の挙動差
結果として、
- DNSが引けない
- 一部サイトだけ繋がらない
- 突然通信が止まる
といった不具合が起きやすい。
そのため本記事では、
IPv6は使わず、IPv4に限定する
という判断をしている。
安定性と再現性を優先した、実務的な選択だ。
まとめ
DNS暗号化は、
もはや「特別な人の設定」ではない。
- ブラウザ
- スマートフォン
- Windows
それらがすでにやっていることを、
Linuxでも同じ水準まで引き上げるだけ。
ただし、
- VPN使用時は無理に併用しない
- IPv6は現状では使わない
この割り切りが、
壊れない運用 には重要になる。
過剰な防御はしない。
だが、丸裸にもならない。
DNSを静かに守る。
それだけで、
日常用途としては十分な場面は多い。


