daedalus walletがネットワーク接続中のまま進まない

ADAを保持するためdaedalus walletをinstallしたが、起動してすぐにネットワーク接続中のまま動かなくなってしまった。何の設定もしてない状態なのでとりあえず再インストールもためしてみたが効果なし。

なのでググってみるとそういう事例はたくさんあるようこんなのを見つけた。
IOHK statement: connecting to network issue - Announcements - Cardano Forum

ただ、どれも自分の状況とは一致しておらず解決せず。
ということで自分で調べてみることに。

ログの場所は以下のFAQの下部に書いてあった。
Daedalus - Cryptocurrency wallet

macならここ
~/Library/Application Support/Daedalus/Logs

以下のコマンド実行後、walletを起動するとcardano-node.logにエラーが見つかった

$ tail -f ~/Library/Application Support/Daedalus/Logs/*
...
[node.worker.subscription:ERROR:ThreadId 563] [2017-12-23 08:04:43 JST] dnsSubscriptionWorker: no relays found for index 1
[node.worker.subscription:ERROR:ThreadId 563] [2017-12-23 08:04:43 JST] dnsSubscriptionWorker: DNS failure for index 1: [OperationRefused]
...

というわけで名前解決に失敗していることがわかった。

ps aux | grep cardanoでプロセスを確認するとcardano-nodeの起動時に多くのパラメータが設定されていることがわかる。その中の一つに以下のようなものがあった。

--report-server -n http://report-server.cardano-mainnet.iohk.io:8080

ネットワーク接続中となるのは、report serverに情報を送信しますか?という画面の直後だったので、おそらく↑への接続時にdnsが引けないのではと考えられる。

digしてみると、やはりIPアドレスを引けていない。

$ dig report-server.cardano-mainnet.iohk.io 
; <<>> DiG 9.8.3-P1 <<>> report-server.cardano-mainnet.iohk.io
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 381
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;report-server.cardano-mainnet.iohk.io. IN A

;; Query time: 3 msec
;; SERVER: 2404:1a8:7f01:b::3#53(2404:1a8:7f01:b::3)
;; WHEN: Sat Dec 23 08:24:12 2017
;; MSG SIZE  rcvd: 55

ちなみにネームサーバとしてgoogleのを使うと引ける。

$ dig report-server.cardano-mainnet.iohk.io @8.8.8.8
; <<>> DiG 9.8.3-P1 <<>> report-server.cardano-mainnet.iohk.io @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9757
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;report-server.cardano-mainnet.iohk.io. IN A

;; ANSWER SECTION:
report-server.cardano-mainnet.iohk.io. 299 IN A 18.194.141.68

;; Query time: 95 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sat Dec 23 08:25:01 2017
;; MSG SIZE  rcvd: 71

よく見ると、デフォルトの設定ではネームサーバとしてipv6のものが使われている。試しにプロバイダのdns(ipv4)に向けてdigをすると正しく解決できた。

ちなみに、2404:1a8:7f01:bでググってみるとこれはNTT 東日本が設置しているデフォルトの DNS サーバーの模様(今回試した環境ではフレッツ光を使っている)。

よくある質問と回答 - OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト

というわけで、ネットワークの設定を見てみるとdnsの項目にipv6のものが設定されてることが判明。そこをipv4のものに変更してやってみると無事ネットワーク接続中から先に進むことができた。