TailscaleにおけるDNS
最終検証日:
翻訳: 竹洞 陽一郎
Tailscaleは、tailnet上の各デバイスに固有のIPアドレスを割り当てます。
このアドレスは場所が変わっても一定ですが、人が覚えるには適していません。
DNSによるマッピングを使うことで、TailscaleのIPアドレスを人間が読める名前に変換できます。
TailscaleでのDNSの管理
DNSの設定を反映させるには、クライアント側でTailscaleのDNS設定を使用する構成になっている必要があります。
TailscaleでDNSを管理する方法には、次のものがあります。
- MagicDNS
- tailnetのDNS設定
- パブリックDNSレコード
tailscale dnsコマンド
MagicDNS
MagicDNSは既定で有効になっており、tailnet内のデバイスにDNS名を自動的に割り当てます。
MagicDNSに任意のレコードを追加することはできません。
詳細は、MagicDNSを参照してください。
TailscaleのDNS設定
DNSの設定は、管理コンソールのDNSページで管理します。
ここでは、MagicDNSの設定、ネームサーバー、検索ドメインを構成できます。
ネームサーバーは、tailnetに接続しているデバイスが使用するDNSサーバーのIPv4またはIPv6アドレスです。
ネームサーバーには、制限付きネームサーバーとグローバルネームサーバーの2種類があります。
制限付きネームサーバー(Split DNS)
制限付きネームサーバーは、特定の検索ドメインに一致するDNSクエリにのみ適用されます。
たとえば、example.comドメインに対して1.1.1.1をネームサーバーとして設定すると、デバイスはfoo.example.comやbar.example.comのような*.example.comに一致するクエリに限り、そのネームサーバーを使用します。
グローバルネームサーバー
グローバルネームサーバーは、任意のドメインに対するDNSクエリを処理します。
パブリックなDNSネームサーバーを使うことも、追加のマッピングを持つプライベートDNSサーバーを使うこともできます。
CloudflareやGoogleなどのパブリックなグローバルネームサーバーを使う場合、Tailscaleはインターネットへ送信する前に、DNS over HTTPS(DoH)による暗号化を自動的に適用します。
| プロバイダー | IPv4アドレス | IPv6アドレス |
|---|---|---|
| Quad9 | 9.9.9.9、149.112.112.112 |
2620:fe::fe、2620:fe::9 |
8.8.8.8、8.8.4.4 |
2001:4860:4860::8888、2001:4860:4860::8844 |
|
| Cloudflare | 1.1.1.1、1.0.0.1 |
2606:4700:4700::1111、2606:4700:4700::1001 |
管理コンソールからは、NextDNSやControl Dのような、利用者ごとにカスタマイズできるサービスも選択できます。
Tailscaleは、各グローバルDNSネームサーバーが持つアドレスの一覧を1つのまとまりとして扱います。
そのため、Googleのネームサーバーを1つ追加すると、Googleのネームサーバーのアドレスがすべて含まれます。
冗長性の確保のため、グローバルネームサーバーは複数(同じプロバイダーでも構いません)設定することを推奨します。
ただし、ネームサーバーごとにコンテンツ制限の内容が異なる場合、複数設定することで意図した制限が回避されてしまう可能性がある点には注意してください。
Override DNS serversを有効にすると、クライアントはローカルの設定ではなく、tailnetで定義したネームサーバーのみを使用します。
ネームサーバーがパブリックなものであるか、TailscaleのIPアドレスを使っている場合を除き、デバイスがプライベートDNSサーバーへ到達するには、サブネットルーティングの設定が必要になることが一般的です。
ネームサーバーとExit Node
既定では、デバイスがExit Nodeを使用している場合、グローバルネームサーバーや制限付きネームサーバーの設定に関わらず、すべてのドメインの名前解決にExit Nodeをリゾルバーとして使用します。
ネームサーバーごとの設定により、Exit Node使用時にもそのネームサーバーを名前解決に使うよう変更できます。
- 管理コンソールのDNSページを開きます。
- Nameserversセクションで、対象のネームサーバーの三点メニューを選択します。
- Edit nameserverを開きます。
- Use with exit nodeを有効にします。
- Saveを選択します。
Add nameserverダイアログでネームサーバーを追加する際にも、この設定を有効にできます。
検索ドメイン
検索ドメインに対応しているのは、Tailscale v1.34以降を実行しているデバイスのみです。
検索ドメインを使うと、完全修飾ドメイン名(FQDN)を指定しなくても、ローカルネットワークのリソースへ簡単にアクセスできます。
FQDNではない名前に対して自動的に付加されるドメインサフィックスの一覧を指定する仕組みです。
たとえば、検索ドメインとしてexample.comとtest.comを設定したtailnetで、ユーザーがserverと入力したとします。
Tailscaleはまず、設定済みのネームサーバー(8.8.8.8や1.1.1.1など)に対してserver.example.comを問い合わせます。
一致しなければ、同じネームサーバーに対してserver.test.comを問い合わせます。
MagicDNSが有効な場合、MagicDNSのドメインが常に検索ドメインの先頭に置かれます。この順序は変更できません。
検索ドメインは、追加、並べ替え、変更、削除ができます。
パブリックDNSレコード
管理コンソールで管理する代わりに、外部公開しているDNSサーバーにレコードを公開する方法もあります。
このDNS名はインターネット上の誰でも参照でき、プライベートIPアドレスに変換できますが、TailscaleのIPアドレスは自社ネットワークの利用者しかアクセスできないため、実害は比較的小さいと説明されています。
多くの組織は、メールやWebサイトのためにすでにパブリックDNSサーバーを運用しているため、社内にプライベートDNSサーバーを新設せずに済むという利点があります。
なお、TailscaleはDNSサーバーのサービスを提供していないため、自社で運用するサーバー、またはクラウドプロバイダー、ドメイン管理事業者、DNS事業者が提供するサーバーを使う必要があります。
パブリックDNS名は、追加してから伝播するまでに時間がかかる場合があります。
DNS設定をテストする
プラットフォームによっては、nslookupのような従来のツールがOSから提供されるDNS情報を使わず、誤った結果を返すことがあります。
この問題は、Split DNSやMagicDNSを使っている場合に特に生じます。
macOSの場合:
dscacheutil -q host -a name <domain-or-magic-dns-hostname>
たとえば、次のように実行します。
dscacheutil -q host -a name my-server
実行結果の例です。
name: my-server.example.ts.net ip_address: 100.15.193.72
WindowsとLinuxでの確認手順は、原文の該当セクション(英語)で、それぞれのタブを参照してください。
DNSサーバーを上書きする
既定では、デバイスはローカルのDNS設定を優先し、必要な場合にのみtailnetのDNSサーバーを使用します。
次のような場合には、上書きの設定を検討してください。
- デバイスがプライベートDNSレコードを確実に参照できるようにしたい場合。
- 信頼できないネームサーバーをデバイスに使わせたくない場合。
- すべての通信を、フィルタリングを適用する特定のDNSサーバー経由にしたい場合。
この設定を有効にすると、tailnetに接続しているデバイスはローカルのDNS設定を無視し、常にtailnetで定義したグローバルネームサーバーを使用します。
- 管理コンソールのDNSページを開きます。
- Global nameserversでOverride DNS serversを有効にします。
上書きを強制する前に、すべてのデバイスがグローバルネームサーバーへ到達できることを確認してください。
ACLやグラントによってデバイスからグローバルネームサーバーへのアクセスが遮断されていると、そのデバイスは名前解決ができなくなります。
DNSリゾルバーの順序
DNSネームサーバーは指定した順に問い合わされる、と考えられがちですが、最近のOSは応答時間を最適化するために複雑な規則で動作します。
- わずかな遅延を挟みながら、順番に問い合わせる。
- すべてのネームサーバーへ並列に問い合わせる。
- 過去の応答性能に基づいて順序を入れ替える。
- 地理的な近さに基づいて順序を入れ替える。
- 複数のネームサーバーへ負荷分散する。
そのため、管理コンソールのDNSページに追加したDNSリゾルバーが、指定した順序どおりに問い合わされることをTailscaleは保証できません。
DNS設定とOSに応じて、TailscaleはすべてのDNSリクエストをプロキシして各ネームサーバーへ並列に問い合わせ、最も速い応答を使用するか、あるいはOSの動作に委ねます。
順序に依存する構成が必要な場合は、Split DNSを使うか、プライベートDNSサービス側で条件付きフォワーディングを設定し、DNS設定にはそのリゾルバーのみを指定してください。