概要
UnboundでプライベートなDNSリゾルバーをVPS上に動かすには?
Unboundをプライベートリゾルバーとして動かすには、unboundパッケージをインストールし、待ち受けるアドレスを列挙し、access-controlでご自身のネットワークだけを許可して、digで確認します。Gloamport Emberプラン(1 vCPU, 1 GB RAM, 20 GB NVMe, 1 TB traffic、12か月契約で月額$3.74)は、1人分の問い合わせに十分です。
プライベートにするUnboundの設定は?
| 設定 | このガイドでの値 | Unboundマニュアルの内容 |
|---|---|---|
| interface | 127.0.0.1 とご自身のトンネルのアドレス | クライアントが問い合わせできるアドレス。指定がなければ、Unboundはlocalhostで待ち受けます |
| access-control | トンネルネットワークを許可 | 最も具体的なネットブロックが優先されます。どれにも一致しないクライアントは拒否されます |
| hide-identity | はい | id.server と hostname.bind への問い合わせにはREFUSEDを返します |
| hide-version | はい | version.server と version.bind への問い合わせにはREFUSEDを返します |
| qname-minimisation | はい | 上流サーバーへは、必要とされる最小限の量の情報だけを送信します。 |
harden-dnssec-stripped | はい | トラストアンカーはあるがDNSSECデータがないゾーンは、bogusになります |
| prefetch | はい | TTLの最後の10%に入ったキャッシュヒットを更新します。トラフィックは約10%増えます |
| private-address | ご自身のプライベートな範囲 | そのような応答は公開名では削除され、DNSリバインディングを防ぎます |
価格確認日:
プライベートリゾルバーは何を変え、何を変えないのですか?
プライベートリゾルバーが変えるのは、誰がDNS問い合わせに答えるか、そしてネットワーク上で誰がそれを見られるかです。Unboundは公開DNSプロバイダーに転送する代わりに、ルートサーバーに、そして各ゾーンのサーバーに問い合わせて、名前を自分で解決します。お使いの機器は問い合わせをVPSにだけ送り、各ゾーンのサーバーが見るのはご自身のアドレスではなくVPSのアドレスです。
閲覧履歴を隠すものではありません。訪問したサイトには、そのアドレスを通じて引き続き到達します。VPSの提供事業者は、VPSへの問い合わせを運びます。機器とVPSの間の通常のDNSは暗号化されないため、最も安全な待ち受け先は、同じVPS上のWireGuardなどのトンネルの内側です。ポート53をインターネット全体に開けたままにしないでください。オープンリゾルバーは他人にも使われてしまい、以下のaccess-control行はそうした相手を拒否します。
Unboundをプライベートリゾルバーとして動かす方法
このコマンドはDebian 13とUbuntu 24.04向けです。例では、VPSのアドレスが10.8.0.1のWireGuardトンネルを想定しています。
UnboundとDNSテストツールをインストール
apt install unbound bind9-dnsutils を実行します。後者のパッケージはテスト用のdigを提供します。どちらもDebian 13とUbuntu 24.04に含まれています。
設定を書く
/etc/unbound/unbound.conf.d/ にファイルを作成し、最初のコードブロックのserverセクションを書きます。10.8.0.1と10.8.0.0/24は、ご自身のトンネルのアドレスとネットワークに置き換えてください。VPS自身から問い合わせる場合は、127.0.0.1だけでも構いません。
ファイルを確認
unbound-checkconf を実行します。マニュアルによると、使用前に unbound.conf を確認し、誤りがあればファイルと行番号を報告します。
再起動して待ち受けを確認
サービスを再起動し、ss -lunt を実行して :53 で絞り込みます。表示されるのは列挙したアドレスだけで、0.0.0.0 ではないはずです。
問い合わせる
VPSから dig @127.0.0.1 example.org を実行します。トンネル内の機器からは dig @10.8.0.1 example.org を実行します。許可されたネットワークの外からの拒否応答が正しい結果です。
機器でこのDNSを使う
機器のトンネル設定で、DNSサーバーをVPSのトンネルアドレスに設定します。公開インターフェースではポート53を閉じたままにしてください。
server:
interface: 127.0.0.1
interface: 10.8.0.1
access-control: 127.0.0.0/8 allow
access-control: 10.8.0.0/24 allow
hide-identity: yes
hide-version: yes
qname-minimisation: yes
harden-glue: yes
harden-dnssec-stripped: yes
prefetch: yes
private-address: 10.0.0.0/8
private-address: 172.16.0.0/12
private-address: 192.168.0.0/16sudo apt install unbound bind9-dnsutils
sudo unbound-checkconf
sudo systemctl restart unbound
sudo ss -lunt | grep :53
dig @127.0.0.1 example.org
dig @10.8.0.1 example.orgなぜUnboundをaccess-controlで制限する必要があるのですか?
誰にでも応答するリゾルバーは、見つけられて見知らぬ人に使われてしまうからです。Unboundマニュアルによると、access-controlでは最も具体的なネットブロックが一致して使われ、どれにも一致しないクライアントは拒否されます。所有するネットワークだけを列挙すれば、それ以外は既定で拒否されます。
2つの既定値が役立ちます。interface行がない場合、Unboundはlocalhostだけで待ち受けます。do-not-query-localhost は既定で yes なので、自身の上流への問い合わせをlocalhostアドレスに送りません。公開名が自分の内部ネットワークを指すことがないように、内部の範囲にはprivate-address行を追加してください。
DNSリゾルバーにはどのGloamportプランで足りますか?
最小のプランで個人用のリゾルバーを運用でき、同じサーバーでVPNと併用するのが一般的な構成です。Ember(1 vCPU, 1 GB RAM, 20 GB NVMe, 1 TB traffic)は12か月契約で月額$3.74、1か月契約では$7.48で、Gloamportでは数台の端末向けのWireGuard VPN向けに挙げています。リゾルバーとWireGuardは同じプランに一緒に収まります。Unboundのベンチマークは行っていません。多くの機器で使う場合は、12か月契約で月額$5.25のDuskにすると、2つ目のGBのメモリが追加されます(2 GB)。
キャッシュは調整するものです。マニュアルは、既定で無効のcache-min-ttlを約1時間より大きく設定すると問題が起きることがあると記しているので、理由がなければ触らないでください。
自前のリゾルバーは公開DNSプロバイダーより良いですか?
問い合わせログを誰に任せるかによります。自前のリゾルバーは、その相手を1つ減らします。公開DNSプロバイダーは機器が引くすべての名前を見ますが、VPS上のUnboundでは、問い合わせが集まるのはご自身で管理するサーバーだけです。問い合わせ先のゾーンの権威サーバーは、VPSのアドレスからの問い合わせを引き続き見ます。
Gloamportが2026年11月10日について行った調査によると、49件のプロバイダーのうち28件が登録時に身分証明書類を求めないため、それを動かすVPSは書類を渡さずに利用できます。トンネル全体の選択肢については自前のVPNをVPSで動かすのは、VPNサービスより優れていますか?を、サーバーの守りについては新しいVPSでSSHを強化するには?をご覧ください。
まとめ
- apt install unbound bind9-dnsutils を実行し、/etc/unbound/unbound.conf.d/ に設定を書きます。
- interfaceとaccess-controlを使い、ご自身のネットワークだけが問い合わせられるようにします。
- どのaccess-controlのネットブロックにも一致しないクライアントは拒否されます。
- hide-identity と hide-version により、identity と version の問い合わせは REFUSED になります。
- unbound-checkconf を、再起動の前に毎回実行してください。
- WireGuardトンネルの内側に置いてください。通常のDNSは暗号化されません。
- Emberは12か月契約で月額$3.74で動作します。
Unboundプライベートリゾルバー:よくある質問
UnboundはDNSSECを検証しますか?
Unboundは検証機能を持つリゾルバーで、マニュアルはトラストアンカーと harden-dnssec-stripped のオプションを説明しています。dig +dnssec で確認し、回答の ad フラグを探してください。
代わりに別のDNSプロバイダーに転送できますか?
はい。Unboundは転送に対応していますが、その場合はそのプロバイダーが問い合わせを見ます。このガイドは再帰的に解決するため、単一のプロバイダーがすべてを見ることはありません。
unbound-checkconf が失敗したのはなぜですか?
最初のエラーのファイルと行番号を報告します。よくある原因は、キーワードの誤字やコロンの欠落です。修正してから、サービスを再起動する前にもう一度コマンドを実行してください。
ファイアウォールでポート53を開ける必要がありますか?
トンネルのインターフェースでだけ開けてください。公開インターフェースでは閉じたままにし、access-controlのリストはご自身のネットワークに限定してください。
prefetch は何をしますか?
prefetch を yes にすると、エントリの有効期間の最後の10%でキャッシュヒットがあった場合にバックグラウンドで更新が行われます。マニュアルによると、トラフィックと負荷が約10%増えます。
出典 (1)
- unbound.conf(5) マニュアル:serverオプション — NLnet Labs (checked 2026-11-10)