NextDNSを導入した
Table of Contents
Introduction
かねてから興味があった NextDNS が Terraform Provider と nix-darwin/nixos で設定できることを知り、せっかくなので導入してみた。
What is NextDNS?
流行のDeep Reasearchの結果は以下Gist。
https://gist.github.com/takeokunn/aa9bc9ef2c7d670b71bfd962c8a1a80e
日本人でも使っている人がちらほらいる。
作業手順
1. アカウント作成してAPI Key発行
公式サイトからメールアドレスとパスワードで登録する。 https://nextdns.io/
管理画面からMFAを設定してAPI keyを発行する。 https://my.nextdns.io/account
2. Terraform設定
ドキュメントを参考に画面上で設定できるものを宣言的に設定する。 https://registry.terraform.io/providers/carbans/nextdns/latest/docs
2.1 providerを設定
sops にAPI Tokenを保存して terraform-provider-sops 経由で入れる。
terraform {
required_providers {
sops = {
source = "carlpett/sops"
version = "~> 0.5"
}
nextdns = {
source = "carbans/nextdns"
version = "~> 0.2"
}
}
}
provider "sops" {}
data "sops_file" "secret" {
source_file = "./secrets.yaml"
}
provider "nextdns" {
api_key = data.sops_file.secret.data.nextdns
}
2.2 各種設定
とりあえず有効にできるものは有効にした。
resource "nextdns_profile" "main" {
name = "Main Network"
}
resource "nextdns_security" "main" {
profile_id = nextdns_profile.main.id
ai_threat_detection = true
crypto_jacking = true
csam = true
ddns = true
dga = true
dns_rebinding = true
google_safe_browsing = true
idn_homographs = true
nrd = false
parking = true
threat_intelligence_feeds = true
typo_squatting = true
}
resource "nextdns_privacy" "main" {
profile_id = nextdns_profile.main.id
disguised_trackers = true
allow_affiliate = true
}
resource "nextdns_settings" "main" {
profile_id = nextdns_profile.main.id
web3 = true
logs {
enabled = true
retention = "1 day"
location = "us"
privacy {
log_clients_ip = true
log_domains = true
}
}
block_page {
enabled = true
}
performance {
ecs = true
cache_boost = true
cname_flattening = true
}
}
3. Nix設定
3.1 nix-darwin設定
nix-darwinはserviceで提供してくれているので有効にするだけ。 https://mynixos.com/nix-darwin/options/services.nextdns
{
services.nextdns = {
enable = true;
arguments = [ "-profile" "xxxx" ];
};
}
3.2 NixOS設定
NixOS公式が提供してくれているので同様に有効するだけ。 https://search.nixos.org/options?channel=24.11&from=0&size=50&sort=relevance&type=packages&query=nextdns
4. 接続確認
あまりよくわかっていないが、以下を明示的にたたく必要があった。(要調査)
$ nix run nixpkgs#nextdns activate
管理画面で有効になっていることを確認できればよい。

ついでにAndroidも設定をした。
プライベート DNS
Android 9 以降
1. 設定 → ネットワークとインターネット → 詳細設定 → プライベート DNS に移動します。
2.「プライベート DNS プロバイダのホスト名」オプションを選択します。
3. xxxx.dns.nextdns.io を入力し、「保存」を押します。
作業結果
Webサイトへのアクセスが体感速くなったがあくまで体感。 もう少し運用してみて様子を見たい。