どうも社内ニートです。
現在は復旧していますが、
2020年5月4日の22:00頃~23:26でソフトバンク光をはじめとした、
ソフトバンクが提供する回線サービスで障害が発生しました。
この障害中にTwitterを見ていて思ったことがあり、
DNSの仕組みについて記事にしようと思い書いています。
障害の原因はDNSサーバの障害
公式の障害情報では、サービスの障害とありますが、
Twitterの反応や個人的な切り分けの結果DNSサーバの障害だと考えています。
DNSサーバをプロバイダ(ISP:Internet Service Provider)提供のDNSサーバから、
パブリックDNS等に変更することで、
インターネットを閲覧することができるようになっていたためです。
今回はソフトバンクの障害でしたが、
過去にはOCN(NTT)や他のプロバイダでもDNSサーバの障害が発生したこともあります。
DNSの仕組み
DNSとはDomain Name Systemの略称です。
一言でDNSといっても様々な機能・役割があるのですが、
一般家庭でインターネットを閲覧することに特化した場合のDNSの仕組みをご紹介します。
簡潔に書くため細かい説明は省略していますのでご了承ください。
PCやスマホがインターネット上のサイトを閲覧するときに用いるのが、
『https//yahoo.co.jp』のようなURLです。
WebブラウザにURLを直接入力したり、URLをお気に入り登録しておいて、
インターネット上のページにアクセスするかと思います。
我々はURLを入力しますが、ネットワーク上ではURLを使用して通信するのではなく、
IPアドレスを使用して通信を行います。
URLの中のドメインの部分には対応するIPアドレスが決められています。
URL内のドメインを対応するIPアドレスに変換することこそがDNSの仕組みです。
この動作を名前解決すると呼びます。
実際の通信の流れ
実際のインターネット上のページを閲覧する際の通信流れをご紹介します。
①PCやスマホのWebブラウザにアクセスしたいURLを入力します。
②PCやスマホがURLのドメインの部分を、
IPアドレスに変換するDNSクエリ(要求)を行います。
一般家庭で多くの場合はDNSサーバ(要求先)に、
Baffaloなどの無線ルータが指定されている場合が多いかと思います。
③無線ルータにはプロバイダ提供のDNSサーバが指定されているので、
無線ルータがプロバイダ提供のDNSサーバへDNSクエリを行います。
④プロバイダ提供のDNSサーバが『example.com』は『X.X.X.X』と、
ドメイン名を対応するIPアドレスに変換してくれます。
⑤無線ルータはDNSクエリの結果をPCやスマホに送信ます。
⑥PCやスマホは対応するIPアドレスを知ることができましたので、
このIPアドレスを使用して通信を開始します。
ソフトバンク光の障害の原因
今回のソフトバンク光の障害の原因はDNSサーバの障害です。
無線ルータがプロバイダ提供のDNSサーバへDNSクエリを行いましたが、
DNSサーバの障害のため応答を受けることができなく、
IPアドレスに変換することができなかったため、
インターネット上のページを閲覧することができませんでした。
Twitterで、
『DNSサーバを8.8.8.8に変えましょう!!』と頻繁にツイートされていましたが、
PCやスマホのDNSサーバを障害が発生していないDNSサーバに変更することで、
正しく名前解決できるので、
インターネット上のページが閲覧できるようになったということです。
パブリックDNSについて
では、『8.8.8.8』とか『1.1.1.1』というのは、何なのでしょうか。
これらはパブリックDNSと呼ばれるサービスとなります。
パブリックつまり公共のDNSという意味で、
誰でも使用することができるDNSサーバとなっています。
パブリックDNSには色々種類がありますが、特に有名なものはこの3サービスです。
GoogleDNSの『8.8.8.8』と『8.8.4.4』だけ覚えておけば十分かと思います。
通常はインターネットを契約する際に一緒に契約する、
プロバイダから提供されるDNSサーバを指定するのが一般的です。
私のようなネットワークエンジニアは日々の検証でDNSサーバを使用しますが、
プロバイダ提供のDNSサーバは
- プロバイダとの契約がないと使用できない
- プロバイダごとにIPアドレスが異なる
- プロバイダ提供のDNSサーバはIPアドレスが覚えにくい
ということから、検証の際はこれらのパブリックDNSを多用しますので、
非常に馴染み深いものです。
パブリックDNSを使用するのはあくまで検証だけで、
本番環境の場合はプロバイダ指定のDNSサーバもしくは、
お客様側で用意しているDNSサーバを指定します。
パブリックDNSのメリット・デメリット
パブリックDNSにはメリット・デメリットがあります。
指定する場合はメリット・デメリットをよく理解した上で自己責任で設定してください。
メリット
- 誰でも使用することができる
- IPアドレスのゴロがよく覚えやすい
- プロバイダ提供のDNSサーバの遅延や障害時に使用することで遅延・障害を回避できる
- 無料Wi-Fiにつないだときに使用することでセキュリティを確保できる場合がある
デメリット
- フィルタリングを行っている場合がある(アダルトサイト・犯罪サイトなど)
- 履歴・ログを収集される(しないと公表しているパブリックDNSもあります)
今回の障害時の切り分けの方法・考え方
個人的な切り分けの方法はツイートも行いましたが、
下記のような方法で切り分けと対処を行いました。
ソフトバンク光の障害
①ネット見れない
②8.8.8.8にping届く
③『https://t.co/xmwJrCVpUx』にpingすると名前解決できないエラー
④DNSを変更
⑤ネット見れる
ネットワークエンジニアやっていて、
日常生活で役立つことがあるとは。。— NWW@ネットワークエンジニア (@shanai_neet_com) May 4, 2020
- インターネットが閲覧できない
- 『8.8.8.8』にpingを実施して届くことを確認
- 『yahoo.co.jp』にpingを実施して名前解決できないエラーが表示されることを確認
- DNSを『8.8.8.8』に変更
- インターネットを閲覧できるようになる
なぜこういう切り分け方法と対処に至ったのかを記載していきます。
事象確認:インターネットが閲覧ができない
まずは、インターネットが閲覧できないという事象を確認しました。
もう少し正確に記載すると
- すでにタブを開いていたページは一部閲覧できる
- 新しいページを開く場合は閲覧できない
という事象です。
この事象からDNSサーバの障害だということがおおよそ検討がつきます。
スマホ・PCや無線ルータのようなDNSの問い合わせを行う側には、
DNSをキャッシュ(保管)しておく機能があります。
毎回DNSサーバへ問い合わせしていると応答までに時間がかかったり負荷が高まります。
そこで、一度問い合わせを行った問い合わせ結果を一定時間キャッシュ(保管)しておき、
保管している間は問い合わせをすることなく、保管している結果を使用します。
すでにタブを開いていたページは一部見れるということは、
このDNSキャッシュが残っているため閲覧できたということです。
閲覧できるということはインターネットの回線自体に障害がなく、
新規で開く場合には閲覧できないことからDNSの障害だということが検討つきます。
疎通確認:『8.8.8.8』にpingを実施
事象からDNSサーバの障害であることは検討ついていますが、
念のため、『8.8.8.8』に対してpingを実行しました。
pingの応答があったことから、やはりインターネットへアクセスできているので、
回線自体に障害がないことが確認できました。
名前解決の確認:『yahoo.co.jp』にpingを実施
名前解決の確認としてIPアドレスではなくドメイン名を指定してpingを実施しました。
ドメイン名を指定してpingを実施した場合、
- 『yahoo.co.jp』の名前解決
- 名前解決したIPアドレスへping
という動きになります。
ping実施した際に『yahoo.co.jp』が名前解決できないというエラーが表示されたので、
DNSサーバの障害で確定だと思いました。
DNSを『8.8.8.8』に変更
PCのDNSサーバを『8.8.8.8』に変更して、
インターネットが閲覧できることを確認しました。
切り分けを通して
職業病からか1分ぐらいで切り分けることができたと思います。
DNSサーバを変更してインターネットが閲覧できるようになってから、
Twitterを見たところ障害が発生しているということを知りました。
ネットワークエンジニアをやっていて、
初めてのレベルで日常生活に役立ったかなと思います。。
PCでインターネットが見れない、Wi-Fiがつながらないから、
スマートフォンのLTE回線でTwitterで調べてみようと思うのも、
立派な切り分けだと思います。
思うこと
本題の思ったことですが、
Twitter上では、
『DNSサーバを8.8.8.8に変えましょう!!』といった内容のツイートが頻繁にツイートされていました。
この記事を書くにあたって少し調べたところ、
企業や個人ブログでも、
『インターネットの速度が上がるから8.8.8.8を設定しよう』という記事があります。
DNSサーバのパブリックDNSである『8.8.8.8』GoogleDNSに変更することで、
ソフトバンク光のDNSサーバの障害時でもインターネットを閲覧できるようになったことや、
場合によってはインターネットの速度も向上するので、間違ったことは言っていません。
パブリックDNSを使用するデメリットや注意点もありますので、
これらも合わせて紹介すべきなのではと思いました。
企業や個人ブログの半分くらいの記事には変更は自己責任でだったり、
パブリックDNSの注意点が記載されているものもありましたが、
Twitterの方には文字数の制限もあるかと思いますが、
記載されているツイートはありませんでした。
安易にパブリックDNSに変更しましょうというのは、
ネットワークエンジニアからするとあまりオススメはできないなと思いました。
また一番注意して頂きたいのが、『8.8.8.8に変えましょう!!』というツイートや記事を見て、
DNSというものが何か、『8.8.8.8』がどんなものなのかということを知らずに、
インターネットが見れるようになったり、
速度が向上するという言葉につられて変更してしまうという方です。
例えば悪意ある人が『X.X.X.Xに変えましょう!!』と特定のDNSサーバを指定することで、
正規のサイトではなくフィッシングサイトに飛ばされたりする可能性があります。
また、不特定多数の方がDNSクエリを発生させることにより、
DNSサーバの負荷が高まりDNSサーバをダウンさせるDDoS攻撃に加担しかねません。
インターネットが見れなくなるということは死活問題だとは思いますが、
リスクが潜んでいるということを忘れないでください。
特にコロナウィルスの影響で、
フィッシングサイトをはじめとした詐欺サイトが増加していますので、
注意して欲しいと思います。