
#017 TailscaleによるVPN構築
前回の構築で自宅内の広告ブロック環境は完成したが、外出先(学校のWi-Fiやテザリング)ではテザリングをする機会が多いものの、通信料を使い放題では無いので、広告など無駄な通信料を減らしたくVPNで外出先でも広告が出ないように構築した。
今回は Tailscale を導入し、場所を問わず自宅のラズパイ経由で広告を遮断する環境へアップデートした記録をまとめる。
1. 構築の概要
目的: 学校やテザリング環境でも、自宅の AdGuard Home を通して名前解決を行う。
使用ツール: Tailscale (メッシュVPN)。
利点: ポート開放が不要であり、暗号化されたトンネル内で DNS クエリを処理できる。
2. 設定手順
① AdGuard Home のアクセス制限解除
デフォルトではローカルネットワーク以外からのアクセスを拒否するため、AdGuard 側の設定を変更する。
設定箇所: [設定] > [DNS 設定] > [アクセス設定]。
許可されたクライアント: 100.64.0.0/10(Tailscale の帯域)を追加。
② Tailscale の Nameserver 設定
Tailscale の管理画面(Admin Console)で、VPN 参加デバイスが参照する DNS サーバーを指定する。
Nameservers: ラズパイの Tailscale IP (100.72.191.84) を登録。
Override local DNS: 有効化。これにより、接続先の Wi-Fi 設定よりも VPN 側の DNS が優先される。
3. ハマったポイント:テザリング時の競合
iPhone のテザリング環境では、OS やキャリアの仕様による「裏口」が複数存在し、広告がすり抜ける事象が発生した。
iPhone の DNS 割り込み: テザリング先の DNS(172.20.10.1)が優先されるため、Mac 側で IPv6 を「リンクローカルのみ」に制限し、DNS サーバーを 100.100.100.100 へ固定して対応した。
Apple のプライバシー機能: Safari の「IP アドレスのトラッキングを制限」がオンだと、VPN を無視して Apple のプロキシへ通信が流れる。これを オフ にすることで、AdGuard 側でログが正常に記録されるようになった。
4. 動作確認
テザリング環境下の Mac ターミナルで nslookup を実行し、ブロックを確認した。
Bash
MacBook-Air ~ % nslookup doubleclick.net
Server: fd7a:115c:a1e0::53
Address: fd7a:115c:a1e0::53#53
Non-authoritative answer:
Name: doubleclick.net
Address: 0.0.0.0広告ドメインに対して 0.0.0.0 が返れば成功である。
5. 結び
VPN を通すことで、場所の制約を受けずに自作の DNS サーバーを運用可能になった。
ネットワークの優先順位や OS の独自仕様をデバッグする過程は、ネットワークの基礎を学ぶ上で非常に実践的な経験となりました。
(この記事はAIを使用しています。)