[gusuku] 「.io」ドメイン - DNSによる名前解決が不安定になった話(復旧済み確認)


更新報告

io | DNSViz

12時間前にはdownしてましたが、その3時間後のupdateでは復旧してるっぽ
(単純にresponseで見てるだけだから、当時ちゃんとクエリも復旧してたかまではわかんないけど…)

実害発生してから約12時間くらいは継続してたことになるのかな。

これオープンソースなのか!使いやすそう。
http://dnsviz.net/
DNSViz - Github

@MasahitoShinoda さんも同様の記事を書かれてます。
こちらのほうが情報の更新が早いです。
.io ドメインがおかしくなったので dig で調べてみた(2016/10/28)

間違いとかご指摘あったらコメントくださいー。

はじめに

ちょっとタイムリーな話。
10/28(金)AM10:20頃、うちが提供しているサービスで名前解決のエラーが発生したのでそのトラブルシュートの様子を書こうと思う。

gusuku - kintoneアプリケーション開発をサポートするプラットフォーム

gusukuのドメインは「.io」ドメイン

今巷で流行りの ccTLD。
ccTLDの説明は以下を参照。
ccTLDとは - JPNIC

何が発生したのか? 「.io」の名前解決ができない!

社内のDNSで名前解決しようと思うと名前解決できない。
Google Public DNS(8.8.8.8)を指定して名前解決すると、出来たり出来なかったり。

うちの環境の場合はCloudFrontがある関係で、ちょっとDNSの設定が特殊。

初期の段階では、名前解決が出来なかったレコードが、hoge.gusuku.ioでAレコードでエイリアスレコードを設定してあったサブドメインだったため、問題切り分けのためにAレコードのエイリアスレコードではなく、CNAMEでエイリアスを直書きしてみた。

; ANSWER SECTION:
app.gusuku.io.      59  IN  CNAME   ********.cloudfront.net.

しかしそれでも名前解決が出来たり出来なかったり。

traceしてみる

社内DNSに入ってhoge.gusuku.ioをトレースしてみた。

…おや?

$ dig app.gusuku.io +trace

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.32.amzn1 <<>> app.gusuku.io +trace
;; global options: +cmd
.           518400  IN  NS  C.ROOT-SERVERS.NET.
.           518400  IN  NS  D.ROOT-SERVERS.NET.
.           518400  IN  NS  E.ROOT-SERVERS.NET.
.           518400  IN  NS  F.ROOT-SERVERS.NET.
.           518400  IN  NS  G.ROOT-SERVERS.NET.
.           518400  IN  NS  H.ROOT-SERVERS.NET.
.           518400  IN  NS  I.ROOT-SERVERS.NET.
.           518400  IN  NS  J.ROOT-SERVERS.NET.
.           518400  IN  NS  K.ROOT-SERVERS.NET.
.           518400  IN  NS  L.ROOT-SERVERS.NET.
.           518400  IN  NS  M.ROOT-SERVERS.NET.
.           518400  IN  NS  A.ROOT-SERVERS.NET.
.           518400  IN  NS  B.ROOT-SERVERS.NET.
;; Received 508 bytes from 10.0.0.2#53(10.0.0.2) in 8 ms

io.         172800  IN  NS  ns-a1.io.
io.         172800  IN  NS  ns-a4.io.
io.         172800  IN  NS  ns-a3.io.
io.         172800  IN  NS  ns-a2.io.
io.         172800  IN  NS  ns-l1.io.
io.         172800  IN  NS  ns-d1.io.
io.         172800  IN  NS  ns-y1.io.
;; Received 423 bytes from 202.12.27.33#53(202.12.27.33) in 42 ms

io.         3600    IN  SOA ns1.communitydns.net. nicadmin.nic.io. 1477627507 3600 1800 3600000 3600
;; Received 104 bytes from 74.116.179.1#53(74.116.179.1) in 2 ms

cf.正常に名前解決出来る場合

$ dig yahoo.co.jp +trace

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.32.amzn1 <<>> yahoo.co.jp +trace
;; global options: +cmd
.           518400  IN  NS  B.ROOT-SERVERS.NET.
.           518400  IN  NS  C.ROOT-SERVERS.NET.
.           518400  IN  NS  D.ROOT-SERVERS.NET.
.           518400  IN  NS  E.ROOT-SERVERS.NET.
.           518400  IN  NS  F.ROOT-SERVERS.NET.
.           518400  IN  NS  G.ROOT-SERVERS.NET.
.           518400  IN  NS  H.ROOT-SERVERS.NET.
.           518400  IN  NS  I.ROOT-SERVERS.NET.
.           518400  IN  NS  J.ROOT-SERVERS.NET.
.           518400  IN  NS  K.ROOT-SERVERS.NET.
.           518400  IN  NS  L.ROOT-SERVERS.NET.
.           518400  IN  NS  M.ROOT-SERVERS.NET.
.           518400  IN  NS  A.ROOT-SERVERS.NET.
;; Received 508 bytes from 10.0.0.2#53(10.0.0.2) in 8 ms

jp.         172800  IN  NS  f.dns.jp.
jp.         172800  IN  NS  g.dns.jp.
jp.         172800  IN  NS  e.dns.jp.
jp.         172800  IN  NS  c.dns.jp.
jp.         172800  IN  NS  d.dns.jp.
jp.         172800  IN  NS  a.dns.jp.
jp.         172800  IN  NS  b.dns.jp.
;; Received 425 bytes from 192.228.79.201#53(192.228.79.201) in 167 ms

yahoo.co.jp.        86400   IN  NS  ns01.yahoo.co.jp.
yahoo.co.jp.        86400   IN  NS  ns11.yahoo.co.jp.
yahoo.co.jp.        86400   IN  NS  ns02.yahoo.co.jp.
yahoo.co.jp.        86400   IN  NS  ns12.yahoo.co.jp.
;; Received 169 bytes from 203.119.1.1#53(203.119.1.1) in 38 ms

yahoo.co.jp.        300 IN  A   183.79.135.206
yahoo.co.jp.        300 IN  A   182.22.59.229
yahoo.co.jp.        900 IN  NS  ns12.yahoo.co.jp.
yahoo.co.jp.        900 IN  NS  ns02.yahoo.co.jp.
yahoo.co.jp.        900 IN  NS  ns01.yahoo.co.jp.
yahoo.co.jp.        900 IN  NS  ns11.yahoo.co.jp.
;; Received 201 bytes from 118.151.254.149#53(118.151.254.149) in 2 ms

「.io」のネームサーバーに対してdigってみる

この時点でアウトだったのは以下の2サーバー(10/28 13:22時点)

  • ns-a2.io
  • ns-a4.io

norecurseオプション大事。
このオプションつけると再帰問い合わせを行わないので、純粋に問い合わせた先のDNSサーバーからの応答が得られる。

正常な場合

委譲先のNSサーバーの応答がある。

$ dig @ns-a1.io app.gusuku.io +norec

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.32.amzn1 <<>> @ns-a1.io app.gusuku.io +norec
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19835
;; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 0

;; QUESTION SECTION:
;app.gusuku.io.         IN  A

;; AUTHORITY SECTION:
gusuku.io.      86400   IN  NS  ns-429.awsdns-53.com.
gusuku.io.      86400   IN  NS  ns-801.awsdns-36.net.
gusuku.io.      86400   IN  NS  ns-1045.awsdns-02.org.
gusuku.io.      86400   IN  NS  ns-1723.awsdns-23.co.uk.

;; Query time: 4 msec
;; SERVER: 194.0.1.1#53(194.0.1.1)
;; WHEN: Fri Oct 28 04:22:46 2016
;; MSG SIZE  rcvd: 171

正常でない場合

応答がない。

$ dig @ns-a4.io app.gusuku.io +norec

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.32.amzn1 <<>> @ns-a4.io app.gusuku.io +norec
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 55
;; flags: qr aa; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;app.gusuku.io.         IN  A

;; AUTHORITY SECTION:
io.         3600    IN  SOA ns1.communitydns.net. nicadmin.nic.io. 1477628338 3600 1800 3600000 3600

;; Query time: 4 msec
;; SERVER: 74.116.179.1#53(74.116.179.1)
;; WHEN: Fri Oct 28 04:22:54 2016
;; MSG SIZE  rcvd: 104

参照してるサーバーによっては名前解決できない問題が発生しているっぽい。
(10/28 15:41現在)まだ事象継続中・・・

(10/28 18:40現在)根本の原因はまだ解決には至ってない模様?

NSサーバーで「.io」ドメインが持ってるゾーン情報
リアルタイムではないけどゾーン情報知るって意味ではけっこう有益な情報
DNS zone details for: io(Date of latest check: Wed, 26 Oct 2016 22:58:07 -0400)

Hacker News に掲載されてる。
IO domain DNS failure - Hacker News

ホストベースじゃなくてIPベースでも確認してみた(一応)

名前解決できないNSサーバー

ns-a2.io.       1248    IN  A   194.0.2.1
ns-a4.io.       1242    IN  A   74.116.179.1

どっちも connection timed out になる模様。
いつ復旧かなー

$ dig @194.0.2.1 gusuku.io +norec

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.32.amzn1 <<>> @194.0.2.1 gusuku.io +norec
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached

$ dig @74.116.179.1 gusuku.io +norec

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.32.amzn1 <<>> @74.116.179.1 gusuku.io +norec
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached

そもそもpingも飛ばない。意図的に落としてるかそれとも落ちてるか。。。

$ ping 194.0.2.1
PING 194.0.2.1 (194.0.2.1) 56(84) bytes of data.

--- 194.0.2.1 ping statistics ---
16 packets transmitted, 0 received, 100% packet loss, time 15527ms

$ ping 74.116.179.1
PING 74.116.179.1 (74.116.179.1) 56(84) bytes of data.

--- 74.116.179.1 ping statistics ---
55 packets transmitted, 0 received, 100% packet loss, time 54889ms

ちなみに他の正常なNSサーバーはping応答ある。

;; ANSWER SECTION:
ns-a3.io.       525 IN  A   74.116.178.1

$ ping 74.116.178.1
PING 74.116.178.1 (74.116.178.1) 56(84) bytes of data.
64 bytes from 74.116.178.1: icmp_seq=1 ttl=54 time=3.12 ms
64 bytes from 74.116.178.1: icmp_seq=2 ttl=54 time=2.94 ms
64 bytes from 74.116.178.1: icmp_seq=3 ttl=54 time=2.96 ms
64 bytes from 74.116.178.1: icmp_seq=4 ttl=54 time=2.96 ms
^C
--- 74.116.178.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3511ms
rtt min/avg/max/mdev = 2.942/2.998/3.126/0.083 ms