急にネットにアクセスできない!! それ、DNSが原因かも?!
今まで普通にネットサーフィンやメールの送受信ができていたのに、急にアクセスできなくなったことはありませんか? DNSの不具合がひとつの原因かも知れません。DNSという言葉を何となく見聞きしたことがあるかも知れませんが、実はこれ、非常に重要な働きをしています。私たちが手軽にインターネットを利用できるのは、このDNSのおかげです。
今回はDNSがどのような働きをしているのかを説明し、インターネットが使えなくなった場合の確認方法について解説します。
まず、この記事は以下のような人を対象としています。
対象者・DNSの役割について知りたい人
・インターネットに接続できない時の原因を追究したい人
・障害が発生した時の対処方法を知りたい人
この記事を読むと、次のようなことが理解できるようになります。
この記事を読むとできること・DNSの役割や仕組みを理解できる
・インターネットに接続できない原因を追究する方法を知ることができる
・nslookupコマンドの使い方を知ることができる
先日、会社で急にインターネットにアクセスできなくなったんですが、原因を自分で見つけることはできますか?
インターネットに接続できない原因の1つにDNSの不具合があります。
DNSの仕組みをまずは理解する方が良いでしょう。
DNSですか? 何かネットワークの設定で見たことがあるような気がします・・・。
DNSはインタネット接続する際、非常に重要な働きをしています。
その役割と原因追及の方法を今回は説明します。
TCP/IPで通信する場合に必要な情報
インターネットに接続したり、メールを送信したり、といった通信は「TCP/IP」と呼ばれる通信技術が使われています。TCP/IPを利用する場合、端末にはIPアドレスという情報を設定しなければなりません。
IPアドレスについての記事は以下を参照してください。
グローバルIPアドレス
インターネットを利用する場合、端末には必ずグローバルIPアドレスが設定されています。グローバルIPアドレスが設定されていない端末はインターネットを利用することができません。ホームページを提供するWebサーバやメールの送受信をおこなうメールサーバ、映像を配信するコンテンツサーバなど、インターネットで利用できるサービスを提供しているサーバにはグローバルIPアドレスが設定されています。
グローバルIPアドレスはIPv4とIPv6の2種類がありますが、どちらも基本的には2進数(0か1)で表現されます。
例えば、Googleのサイト(https://www.google.co.jp)を提供するWebサーバにはグローバルIPアドレス「172.217.161.35」が設定されています。
ドメイン名
TCP/IPではIPアドレスを指定して通信をおこないます。インターネット上のサーバにアクセスする場合は相手のサーバに設定されているグローバルIPアドレスを指定しなければなりません。
本来、Googleのサイトにアクセスするためには、「https://172.217.161.35」と入力する必要があります。しかし、人間にとって「172.217.161.35」という単なる数字の羅列を覚えるのは実は大変なことです。数字には意味がないので、この数字が何かを単純に覚えるのは苦痛です。
そこで、数字の羅列ではなく、人間が覚えやすい意味のある文字列に置き換えて通信をおこなえるように工夫されています。この意味のある文字列のことを「ドメイン名」と呼びます。
Googleのサイトの場合、「www.google.co.jp」というドメイン名を利用すれば、人間はこのドメイン名からGoogle社のWebサーバを接続対象にしていることが容易に想像できます。
また、メールアドレス「admin@example.com」のうち、@以降の文字列もドメイン名となります。メールを送信する時もインターネット上のメールサーバに接続しなければなりません。したがって、本来は「@以降にはグローバルIPアドレスを指定する」必要があります。色々な相手にメールを送信する時に相手のメールサーバのグローバルIPアドレスを覚えておいて、指定することはほぼ不可能と言えます。
ドメイン名は意味のない数字の羅列を覚えられない人間にとって、非常にありがたいデータと言えます。
DNSの働き
ここまで、グローバルIPアドレスとドメイン名について説明してきました。2つの役割りは次のようになります。
- インターネットに接続するためには、グローバルIPアドレスが使われる
- 人間がインターネットに接続する際には、ドメイン名が使われる
人間は単純な数字の羅列であるグローバルIPアドレスは覚えられないので文字列で表現されるドメイン名を使いますが、コンピュータがTCP/IPでインターネットに接続するためにはグローバルIPアドレスを使わなければなりません。コンピュータはドメイン名を使ってインターネットに接続することはできません。したがって、ユーザが指定したドメイン名をグローバルIPアドレスに変換する作業が必要となります。
このドメイン名からグローバルIPアドレスを求めることを「名前解決」と呼びます。名前解決を専門に処理しているサーバがDNSとなります。
DNSは「Domain Name Service」と呼ばれ、「ドメイン名→グローバルIPアドレス」「グローバルIPアドレス→ドメイン名」の相互変換を行っています。
私たち人間がグローバルIPアドレスではなくドメイン名を使ってインターネットに接続したり、メールを送信できるのは、このDNSが私たちの代わりにドメイン名をグローバルIPアドレスに変換してくれているおかげなのです。
インターネットを手軽に利用できるように、DNSは非常に重要な役割を果たしています。
名前解決処理の流れ
ここでは、名前解決の処理を簡単に説明します。
インターネットに接続する端末には通常、DNSサーバのIPアドレスを事前に設定しておきます。DNSサーバは会社内に構築しているものを利用する場合と契約しているインターネットプロバイダが用意しているものを使う場合があります。
ユーザがWebブラウザを起動し、URLにドメイン名を入力した場合の流れは次のようになります。
①.URLにドメイン名が入力され、接続依頼が発生した
②.Webブラウザは設定されているDNSサーバに接続し、名前解決を依頼する
③.DNSサーバはドメイン名と一致するサーバのグローバルIPアドレスを調べるために、インターネット上の他のDNSサーバに問い合わせる
④.ドメイン名と合致するDNSサーバがグローバルIPアドレスを教えてくれる
⑤.名前解決が完了すると、URL内のドメイン名部分がグローバルIPアドレスに置き換えれらる
⑥.グローバルIPアドレスに置き換えられたら実際の通信が開始される
このように名前解決をおこなうために、実はインターネットに接続しています。但し、既にドメイン名に対応するグローバルIPアドレスを知っている場合は、インターネットに接続せず、すぐに結果をWebブラウザに返します。
人間はすぐにインターネットに接続しているように感じていますが、このような一連の処理を一瞬でDNSサーバはおこなっているのです。
DNSについて、もっと詳しく知りたい人は是非、以下の書籍で勉強してください。
DNSの設定内容の確認
自分の使用する端末に設定されているDNSサーバのIPアドレスを確認するためには、Windowsの場合は「ipconfigコマンド」、Macの場合は「ifconfigコマンド」を使います。
コマンドプロンプトを実行し、キーボードから「ipconfig /all」と入力し、改行します。すると「DNSサーバー」という項目が表示されます。この項目に設定されているのが、名前解決で利用するDNSサーバのIPアドレスとなります。
社内のDNSサーバを利用する場合、設定されているIPアドレスはプライベートIPアドレスです。一方プロバイダが用意したDNSサーバを利用する場合、設定されているIPアドレスはグローバルIPアドレスとなります。どちらのIPアドレスが設定されているかは気にする必要はありません。
インターネット接続できない原因
インターネットに接続できない場合の原因は色々なことが想定されるため、順番にチェックする必要があります。原因として考えられることは以下のものです。
①.パソコンに接続されているLANケーブルが断線している
②.LANケーブルが接続しているL2SWが故障している
③.データ転送をおこなうルータが故障している
④.DNSサーバが故障している
①②③の問題が発生している場合、インターネットだけではなく、ネットワーク自体が使えない状況となります。プリンタが使えない(印刷できない)、社内の他のパソコンと通信ができない、などの問題が発生した場合は①②③のどれかが原因として考えられます。
このような障害が発生した場合の原因追及方法は「pingコマンドを使って、実際どこまで通信ができるのか」を確認することです。
また、障害が発生しているのが一人のユーザだけなのか、他のユーザでも発生しているのか、正しく見極めてから原因追及をおこなうと、素早く原因を見つけることができます。
nslookupコマンドによるチェック
昨日までインターネットやメールが使えていたのに今朝どちらも使えなくなっていた、といった障害が発生することがあります。このような場合、まず上でも説明したように、自分だけの現象なのか、他の社員も同じような現象かを確認して下さい。自分だけの現象の場合、自分が使っている端末やLANケーブルに原因がある可能性が高いです。一方、他の社員でも同様な現象が起こっている場合は、DNSサーバが原因と考えられます。
DNSサーバに何らかの障害が発生していると、名前解決が適切におこなわれません。ユーザがインターネットを利用したり、メールを送信する際に指定されるはドメイン名です。しかし、DNSサーバに問題があるとドメイン名からグローバルIPアドレスへの変換ができません。コンピュータはグローバルIPアドレスが分からないとインターネットに接続できないので、結局ユーザはインターネットやメールが使えなくなります。
急にインターネットに接続できなくなったときは、DNSサーバが正常に起動しているかを確認する必要があります。確認するためには一般的に「nslookupコマンド」を使います。
このコマンドを実行するとDNSサーバに接続します。接続後に名前解決が行えるか確認することができます。
処理内容を順番に解説します。
①.「nslookup」コマンドを入力し、自分のパソコンに設定しているDNSサーバに接続します。
②.接続したDNSサーバのIPアドレスが表示されます。コロンで区切られたIPアドレスの場合、IPv6のアドレスを意味します。
③.調べたいドメイン名(ここでは、www.yahoo.co.jp)を入力します。
④.名前解決をおこなっているDNSサーバのIPアドレスが表示されます。これは、接続したDNSサーバのIPアドレスです。
⑤.名前解決をした結果のグローバルIPアドレスが表示されます。「www.yahoo.co.jp」に対応するグローバルIPアドレスが「182.22.28.252」であることが分かります。
⑥.別の調べたいドメイン名(ここでは、www.google.co.jp)を入力します。
⑦.④と同様に名前解決をおこなっているDNSサーバのIPアドレスが表示されます。
⑧.ドメイン名「www.google.co.jp」に対応するグローバルIPアドレス「172.217.175.67」と「2404:6800:4004:808::2003」が表示されます。Google社はIPv4とIPv6でWebサーバを実行していることが分かります。
⑨.名前解決を終了する場合、「exit」と入力します。
この一連の処理の中でDNSサーバが故障している場合、⑤と⑧の結果が正しく表示されません。⑤と⑧が正しく表示できているかをnslookupコマンドで確認します。YahooやGoogleのサーバのグローバルIPアドレスの値を覚えておく必要はありません。この⑤と⑧の結果にエラーメッセージが表示されているかどうか、だけチェックします。
また、インフラエンジニアの人がDNSサーバのチェックをおこなう場合、SSH通信を使ってDNSサーバにリモート接続し、プロセスのチェックなどをおこないます。これらの処理をする場合、別途Linuxの知識が必要となります。
まとめ
今回は、インターネット接続できない時の原因として挙げられるDNSについて説明しました。DNSはインタネット接続やメール送信時になくてはならない重要な技術です。
現在、インターネットは業務でも日常生活でも必要なものです。したがって、インターネットが利用できない場合は迅速に原因を追究し、改善しなければなりません。インターネット接続ができない時の対処として、nslookupコマンドを使えると便利です。
・インターネット接続、メール送信にはDNSが必要
・DNSはドメイン名をグローバルIPアドレスに変換している
・DNSの動作確認には「nslookup」コマンドを利用する
DNSの役割りは分かりましたか?
インターネットを利用する際に重要な処理をしていることを知りました!!
nslookupコマンドも覚えておくと便利なコマンドの1つです。
これからインターネットに接続できない時は、このコマンドを使って自分で原因追及をしてみようと思います!!