インポートとエクスポートを使うと、DNS レコードをより細かく管理でき、ドメインの移行や レコードコメント の一括編集がしやすくなります。
-
ゾーンファイルのサイズ上限は 256 KiB(262144 バイト)です。
- API のレート制限は、ユーザーあたり 1 分あたり 3 リクエストです。
ドメインの BIND ゾーンファイル ↗ を作成します。必要なら サードパーティのツール ↗ を使ってください。
特定のレコードタイプ(例: CNAME、DNAME、MX、NS、PTR、SRV レコード)を使う場合は、それらのレコードの content が、末尾ピリオド付きの完全修飾ドメイン名(example.com. など)になっていることを確認してください。詳細は RFC 1035 ↗ または Stack Exchange の投稿 ↗ を参照してください。
ダッシュボードでゾーンファイルをインポートする手順は次のとおりです。
-
Cloudflare ダッシュボードで DNS レコード ページを開きます。
Records を開く ↗ -
インポートとエクスポート を選択します。
-
DNS レコードのインポート で、整形済みファイル を選択します。
-
対象レコード をプロキシしたくない場合は、インポートした DNS レコードをプロキシする の選択を外します。
API でレコードをインポートするには、正しく 整形したファイル を添えて POST リクエスト を送ります。
Required API token permissions
At least one of the following token permissions is required:DNS Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/import" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--form "file=@your_formatted_file.txt"Cloudflare からレコードを一括エクスポートすることもできます。
ダッシュボードでレコードをエクスポートする手順は次のとおりです。
-
Cloudflare ダッシュボードで DNS レコード ページを開きます。
Records を開く ↗ -
インポートとエクスポート を選択します。
-
エクスポート を選択します。
API でレコードをエクスポートするには、GET リクエスト を送ります。
Required API token permissions
At least one of the following token permissions is required:DNS ReadDNS Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/export" \
--request GET \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"ゾーンファイルのエクスポートまたはインポート時、Cloudflare は コメントとタグ を次の構造で整形します。各レコードの直後に ; を使ったインラインコメントとして属性を付けます。これは RFC 1035 セクション 5 ↗ に従います。
| 組み合わせ | 説明 |
|---|---|
| タグのみ | タグ名に使える文字は 限られています。 また、タグ値に ", =, ,, \ が含まれる場合は、二重引用符 (") で囲む必要があります。二重引用符 (") で囲んだタグ値は JSON 文字列として扱われるため、値の中の引用符は \" でエスケープできます。空の値を持つタグは、 my-tag-name:""、my-tag-name:、my-tag-name のいずれかで表せます。 |
| コメントのみ | コメントは文字の 制限が少なく、コメントはそのまま含まれます。 コメントに文字列 cf_tags= が含まれる場合は、行末に追加の cf_tags= を付ける必要があります。 |
| コメントとタグ | ゾーンファイルのコメントは、上記のとおり ; <comment> cf_tags=<tags> の形式になります。cf_tags= の前にスペースがある点に注意してください。 |
| どちらもない | ゾーンファイルのコメントは空でも、省略しても構いません。レコードの直後に続かないゾーンファイル内のコメントも無視されます。 |
; Only tags
a.example.com. 60 IN A 1.1.1.1 ; cf_tags=awesome
b.example.com. 60 IN A 1.1.1.1 ; cf_tags=tag1,tag2:value2,tag3:"value,with,commas",tag4:"value with \"escaped\" quotation marks"
; Only a comment
c.example.com. 60 IN A 1.1.1.1 ; just a comment without tags
d.example.com. 60 IN A 1.1.1.1 ; this comment contains cf_tags= as text cf_tags=
; Comments and tags
e.example.com. 60 IN A 1.1.1.1 ; simple example cf_tags=important,ticket:THIS-12345
f.example.com. 60 IN A 1.1.1.1 ; this is the comment cf_tags=tag1:value1,tag2:value2,tag-without-value,another-tag-without-value,tag-with-quoted-value:"because of the comma, quotes are needed"
; Neither attribute
g.example.com. 60 IN A 1.1.1.1エクスポートとインポートでは、cf- で始まる特別なタグで、特定の Cloudflare 設定を制御できます。エクスポート時、これらのタグはゾーン上の各レコードの現在の設定を反映して自動で追加されます。
;; CNAME Records
a.cloudflaredocs.com. 1 IN CNAME example.com. ; cf_tags=test:1,cf-flatten-cname
b.cloudflaredocs.com. 1 IN CNAME example.com. ; cf_tags=cf-proxied:false
c.cloudflaredocs.com. 1 IN CNAME example.com. ; cf_tags=tag-without-value,cf-proxied:trueエクスポート時、プロキシ済み DNS レコード には cf-proxied:true タグが付き、DNS のみのレコードには cf-proxied:false が付きます。
ゾーンファイルのインポート時、レコードをプロキシするかどうかは cf-proxied タグの値が優先されます。つまり次のとおりです。
- タグがある場合、ダッシュボードで インポートした DNS レコードをプロキシする を選択しているか、API で
proxiedパラメーターを一般にtrueまたはfalseにしているかに関係なく、そのレコードではタグの値が使われます。 - タグがない場合、プロキシ状態は一般的なインポートオプションにフォールバックします。つまり、ダッシュボードの インポートした DNS レコードをプロキシする の選択有無、または API の
proxiedパラメーターがtrueかfalseかです。
有料ゾーンで レコード単位の CNAME flattening を使いたい場合は、ゾーンファイル内の flatten する各 CNAME レコードの横に cf-flatten-cname タグを付けます。エクスポート時、このタグはゾーン上のレコード設定を反映して自動で追加されます。
DNS ゾーンファイルは、リソースレコード(RR)に加えてディレクティブで構成できます。ディレクティブは $ で始まり、標準化されています。$ORIGIN と $INCLUDE は RFC 1035 ↗ で定義され、$TTL は RFC 2308 ↗ で定義されています。加えて BIND は、非標準 ↗ の $GENERATE ディレクティブを提供します。
Cloudflare は $ORIGIN、$TTL、$GENERATE ディレクティブをサポートします。
$INCLUDE はサポートしていません。ゾーンファイルに $INCLUDE ディレクティブが含まれると、Cloudflare はパースエラー $INCLUDE directive not allowed を返します。