背景
ネットに接続できなくなった時にどこで問題が発生しているのかを特定する方法について記載します。それもこれも最近そのようなことが発生した際に、少し困ってしまったので、どのような手順で原因調査すべきだったかを改めてまとめておいて、次からはシンプルに原因にたどり着きたいな、と思ったことがこのまとめを作成するに至った背景です。このような原因調査は闇雲に進めてもなかなか原因にはたどり着けないため、クライアント側に近いところから順に進めていくべきです。僕は以下のように進めていくべきだと考えています。
1. 家庭用 or 社内用ルーターからPCにIPアドレスが付与されていることを確認する
2. 家庭用 or 社内用ルーターのIPアドレスを確認する
3. 家庭用 or 社内用ルーターまでの接続を確認する
4. DNSの名前解決に問題ないことを確認する
5. 接続先までのネットワーク経路を確認する
調査手順はこれに限りませんので、参考程度にしていただけると嬉しいです。この手順で見ていくと、どこで問題が発生しているかをざっと特定することができます。ここからは具体的に、コマンドを利用した調査方法を記載していきます。
コマンドを使った具体的な調査方法
1. 家庭用 or 社内用ルーターからPCにIPアドレスが付与されていることを確認する
ifconfig
を実行して、PCにIPアドレスが付与されていることを確認する。以下が実行結果になります。
※ ifconfigコマンドの使い方
MacBook-Pro:hoge hogehoge$ ifconfig
....
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether < MACアドレス >
inet < IPアドレス > netmask 0xfffffff0 broadcast xxx.xxx.xxx.xxx
nd6 options=201<PERFORMNUD,DAD>
media: autoselect <full-duplex>
status: active
....
IPアドレスを取得できない場合、以下を確認する。
- セキュリティソフトを無効化する
- 不要なネットワークアダプタを無効化する
- IPアドレスが自動取得になっていることを確認する
- ルーターのつなぎ込みを確認する
- ルーターの設定に問題がないことを確認する
2. 家庭用 or 社内用ルーターのIPアドレスを確認する
netstat -rn
を実行することで、ルーティングテーブルを表示します。
以下の default Gateway
に記載されているのが、ルーターのIPアドレスです。
※ netstatコマンドの使い方
MacBook-Pro:hoge hogehoge$ netstat -rn
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default < ルーターのIPアドレス > UGSc 93 0 en0
127 127.0.0.1 UCS 0 0 lo0
127.0.0.1 127.0.0.1 UH 5 17699 lo0
....
3. 家庭用 or 社内用ルーターまでの接続を確認する
ping < ルーターのIPアドレス >
を実行することで家庭用 or 社内用のルーターまで接続できていることを確認できます。以下が実行結果になります。
※ pingコマンドの使い方
MacBook-Pro:hoge hogehoge$ ping hogehoge.com
PING hogehoge.com (xxx.xxx.xxx.xxx): 56 data bytes
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=0 ttl=53 time=52.242 ms
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=1 ttl=53 time=146.980 ms
....
以下のように Request timeout
になった場合、 PCに設定しているIPアドレスやサブネットマスクの値に問題ないかを確認してください。
MacBook-Pro:hoge hogehoge$ ping hogehoge.com
PING hogehoge.com (xxx.xxx.xxx.xxx): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 0
....
4. DNSクライアントの名前解決に問題ないことを確認する
nslookup hogehoge.com
を実行することで、DNSサーバーに名前解決を問い合わせます。以下が実行結果になります。
※ nslookupコマンドの使い方
MacBook-Pro:hoge hogehoge$ nslookup hogehoge.com
Server: xxx.xxx.xxx.xxx
Address: xxx.xxx.xxx.xxx#xx
Non-authoritative answer:
Name: hogehoge.com
Address: xxx.xxx.xxx.xxx
失敗すると、以下のようになります。ドメイン名が間違えている可能性がありますので、確認してください。
MacBook-Pro:hoge hogehoge$ nslookup hogehoge.com
Server: xxx.xxx.xxx.xxx
Address: xxx.xxx.xxx.xxx#xx
** server can't find hogehoge.com: NXDOMAIN
5. 相手先までのネットワーク経路を確認する
traceroute hogehoge.com
を実行することで、相手先までたどり着くまでにどのルーティングを通っていくかを確認することができます。また、どこでルーティングが途切れているかも確認することができます。実行結果は以下のようになります。
※ tracerouteコマンドの使い方
MacBook-Pro:api hogehoge$ traceroute hogehoge.com
traceroute to hogehoge.com (xxx.xxx.xxx.xxx), 64 hops max, 52 byte packets
1 xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx) 0.988 ms 0.678 ms 0.608 ms
2 pw126211240146.5.panda-world.ne.jp (126.211.240.146) 65.435 ms 19.193 ms 19.947 ms
3 pw126211240169.5.panda-world.ne.jp (126.211.240.169) 20.006 ms 25.297 ms 20.029 ms
4 101.110.27.245 (101.110.27.245) 20.015 ms 20.376 ms 32.363 ms
5 209.85.149.253 (209.85.149.253) 20.514 ms 16.825 ms 19.778 ms
6 216.239.62.28 (216.239.62.28) 42.637 ms
108.170.233.16 (108.170.233.16) 21.071 ms
72.14.234.198 (72.14.234.198) 53.575 ms
7 216.239.41.71 (216.239.41.71) 30.019 ms
108.170.242.208 (108.170.242.208) 20.234 ms
216.239.41.71 (216.239.41.71) 37.812 ms
8 hogehoge.net (xxx.xxx.xxx.xxx) 28.866 ms 22.112 ms
このコマンドを実施した結果、 reports: Destination host unreachable.
と表示され、途中でルーティングが途切れた場合、相手先にたどり着く間のルーターで障害が発生している、もしくはルートテーブルの設定ミスなどの可能性があります。
最後に
最後まで目を通してくださり、ありがとうございました。色々わかりにくい記事になってしまいましたが、ご容赦ください。w ネットワークについて色々調べながら、記事を書いていたのですが、その際に以下のサイトはネットワークの知識の全体感を理解するのに、すごく参考になりましたのでおすすめです。参考までに。