Cloudflare と CNAME の挙動を確認する

# ドメイン設定

- khayama.ml
  - Cloudflare を Authoritative DNS に設定

>  [Cloudflare でカスタムネームサーバーを設定する - Qiita](https://qiita.com/khayama/items/e216822a54995e2821da)

```shell
% dig khayama.ml NS +short
ns1.khayama.ml.
ns2.khayama.ml.
ns3.khayama.ml.
ns4.khayama.ml.
ns5.khayama.ml.
```

- kyouhei.cf 
  - Freenom を Authoritative DNS に設定 (外部ドメイン)

```shell
% dig kyouhei.cf NS +short
ns02.freenom.com.
ns01.freenom.com.
ns03.freenom.com.
ns04.freenom.com.
```

# Cloudflare から外部ドメインに CNAME をポイント

www.khayama.ml (Cloudflare) を www.kyouhei.cf (外部ドメイン) にポイントした場合のウェブアクセスの結果です。

|      | www.khayama.ml | www.kyouhei.cf | ウェブアクセス結果      |
| ---- | -------------- | -------------- | ----------------------- |
| 1    | Proxy OFF      | -              | OK (No CF-xxx header)   |
| 2    | Proxy ON       | -              | OK (With CF-xxx header) |

## Proxy なし

通常通り、アクセスできます。

![image-20210617165904402](https://cdn.jsdelivr.net/gh/kyouheicf/image@master/uPic/image-20210617165904402.png)

```shell
% dig www.khayama.ml +short
www.kyouhei.cf.
34.xx.xx.xx
```

![image-20210617162140310](https://cdn.jsdelivr.net/gh/kyouheicf/image@master/uPic/image-20210617162140310.png)

## Proxy あり

通常通り、アクセスできます。（A / AAAA の他に CNAME レコードも Proxy されます。）

> [Cloudflareのプロキシと互換性のあるサブドメインを特定する – Cloudflareヘルプセンター](https://support.cloudflare.com/hc/ja/articles/200169626-Cloudflare%E3%81%AE%E3%83%97%E3%83%AD%E3%82%AD%E3%82%B7%E3%81%A8%E4%BA%92%E6%8F%9B%E6%80%A7%E3%81%AE%E3%81%82%E3%82%8B%E3%82%B5%E3%83%96%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E3%82%92%E7%89%B9%E5%AE%9A%E3%81%99%E3%82%8B)

![image-20210617165435820](https://cdn.jsdelivr.net/gh/kyouheicf/image@master/uPic/image-20210617165435820.png)

```shell
% dig www.khayama.ml +short
104.18.6.233
104.18.7.233
```

![image-20210617165515354](https://cdn.jsdelivr.net/gh/kyouheicf/image@master/uPic/image-20210617165515354.png)

# 外部ドメインから Cloudflare に CNAME をポイント

www.kyouhei.cf (外部ドメイン) を www.khayama.ml (Cloudflare) にポイントした場合のウェブアクセスの結果です。

|      | www.kyouhei.cf | www.khayama.ml | ウェブアクセス結果    |
| ---- | -------------- | -------------- | --------------------- |
| 1    | -              | Proxy OFF      | OK (No CF-xxx header) |
| 2    | -              | Proxy ON       | Error 1016            |

![image-20210617145019900](https://cdn.jsdelivr.net/gh/kyouheicf/image@master/uPic/image-20210617145019900.png)

## Proxy なし

通常通り、アクセスできます。

![image-20210617145502102](https://cdn.jsdelivr.net/gh/kyouheicf/image@master/uPic/image-20210617145502102.png)

```shell
% dig www.kyouhei.cf +short
www.khayama.ml.
34.xx.xx.xx
```

![image-20210617150311881](https://cdn.jsdelivr.net/gh/kyouheicf/image@master/uPic/image-20210617150311881.png)

## Proxy あり

1016 エラーが出てアクセスできません。

> [Error 1016: Origin DNS error](https://support.cloudflare.com/hc/en-us/articles/360029779472-Troubleshooting-Cloudflare-1XXX-errors#error1016)

CloudflareがオリジンサーバーのIPアドレスを見つけることができないことが理由です。

> [Cloudflare上にないドメインをCloudflare上にあるドメインにCNAMEを追加できますか？](https://support.cloudflare.com/hc/ja/articles/360017421192-Cloudflare-DNS%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8BFAQ#CloudflareDNSFAQ-CanICNAMEadomainnotonCloudflaretoadomainthatisonCloudflare)CNAMEを使用してCloudflare上にないドメインのトラフィックをCloudflare上にあるドメインにリダイレクトすると、DNS解決エラーが発生します。Cloudflareは、Cloudflare上にあるドメインのリバースプロキシであるため、（Cloudflare上にない）ドメインのCNAMEリダイレクトはトラフィックをどこに転送すべきかわかりません。それでもCloudflare上にないサイトのリダイレクトを行いたい場合は、従来の301リダイレクトまたは302リダイレクトをWebサーバー（オリジンサーバー）上で確立してください。

![image-20210617150406970](https://cdn.jsdelivr.net/gh/kyouheicf/image@master/uPic/image-20210617150406970.png)

```shell
% dig www.kyouhei.cf +short
www.khayama.ml.
104.18.7.233
104.18.6.233
```

![image-20210617150525004](https://cdn.jsdelivr.net/gh/kyouheicf/image@master/uPic/image-20210617150525004.png)

## 追加：Proxy あり
こちらの [Error 1001: DNS resolution error](https://support.cloudflare.com/hc/en-us/articles/360029779472-Troubleshooting-Cloudflare-1XXX-errors#error1001) になる場合もあります。

```
% dig a.kyouhei.cf @1.1.1.1       

; <<>> DiG 9.16.21 <<>> a.kyouhei.cf @1.1.1.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30119
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;a.kyouhei.cf.			IN	A

;; ANSWER SECTION:
a.kyouhei.cf.		3600	IN	CNAME	a.khayama.ml.
a.khayama.ml.	300	IN	A	104.18.14.139
a.khayama.ml.	300	IN	A	104.18.15.139

;; Query time: 140 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: Thu Dec 02 13:14:50 JST 2021
;; MSG SIZE  rcvd: 106
```

```
% curl -v a.kyouhei.cf
*   Trying 104.18.14.139...
* TCP_NODELAY set
* Connected to a.kyouhei.cf (104.18.14.139) port 80 (#0)
> GET / HTTP/1.1
> Host: a.kyouhei.cf
> User-Agent: curl/7.64.1
> Accept: */*
> 
< HTTP/1.1 409 Conflict
< Date: Thu, 02 Dec 2021 04:11:25 GMT
< Content-Type: text/plain; charset=UTF-8
< Content-Length: 16
< Connection: close
< X-Frame-Options: SAMEORIGIN
< Referrer-Policy: same-origin
< Cache-Control: private, max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0
< Expires: Thu, 01 Jan 1970 00:00:01 GMT
< Server: cloudflare
< CF-RAY: 6b71b60f590ff8f3-NRT
< 
* Closing connection 0
error code: 1001
```

# おまけ：Cloudflare から Cloudflare に CNAME をポイント

www.khayama.ml (Cloudflare) を www.kyouhei.cf (Cloudflare) にポイントした場合のウェブアクセスの結果です。
外部ドメインの場合とは異なり、1014 エラーとなります。
ただし、このエラーは CNAME ポイント先のドメイン管理者から Cloudflare Support に要求をあげることで回避できるようです。

> [Error 1014: CNAME Cross-User Banned](https://support.cloudflare.com/hc/en-us/articles/360029779472-Troubleshooting-Cloudflare-1XXX-errors#error1014)

|      | www.khayama.ml | www.kyouhei.cf | ウェブアクセス結果      |
| ---- | -------------- | -------------- | ----------------------- |
| 1    | Proxy OFF      | Proxy OFF      | OK (No CF-xxx header)   |
| 2    | Proxy ON       | Proxy OFF      | OK (With CF-xxx header) |
| 3    | Proxy OFF      | Proxy ON       | Error 1014              |
| 4    | Proxy ON       | Proxy ON       | Error 1014              |

![image-20210617233840634](https://cdn.jsdelivr.net/gh/kyouheicf/image@master/uPic/image-20210617233840634.png)

# 参考

- [CloudFlareで「Error 1016」が表示される場合の原因と対処法 | WEBデザインのTIPSまとめサイト「ウェブアンテナ」](https://www.webantena.net/cloudflare/error-1016-origin-dns-error/)