今までの解説でネットワークの設定方法は理解出来たと思います。 しかし設定は完了したし、LANケーブルは繋がっている、もしくはWi-Fiの接続は出来ているけれど、 外部のネットワークに繋がらない。ローカルのサーバにはどうやらアクセス出来るようだといった事がよくあります。 そんな時は、接続先のLANケーブルが抜けていたり、外部のインターネットに接続されている途中の機器に障害があるかもしれません。 では、どうやってその障害となっているポイントを見つければ良いか解説していきます。 先ほど設定したIPアドレスは、IPネットワークの経路を辿り接続先に到達します。 現在、自分のIPアドレスがいくつなのか、ネットワークの経路設定が何処ようになっているのかipコマンドで確認出来ます。
自分のIPアドレスを確認します。
$ ip address ip a と短縮して実行も可能です。
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: wlp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 0c:8b:fd:11:22:33 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.2/24 brd 192.168.0.255 scope global dynamic wlp4s0 <- デバイスwlp4s0にIPアドレス192.168.0.2が割当られていることが分かります。
valid_lft 84483sec preferred_lft 84483sec
:
ネットワークの経路設定を確認します。
$ ip route ip r と短縮して実行も可能です。
default via 192.168.0.1 dev wlp4s0 proto static metric 600 <- デフォルトゲートウェイのIPアドレスが192.168.0.1と分かります。
192.168.0.0/24 dev wlp4s0 proto kernel scope link src 192.168.0.2 metric 600
※ デフォルトゲートウェイ: 送信相手までの経路がわからない場合に、データを送信する中継機器。
コマンドの実行結果を見ると外部に接続するためのデフォルトゲートウェイが192.168.0.1となっているので、 ネットワークの経路が以下のようになっていることが分かります。
PC ハブ ルータ ----- ----- ----- ----- | |192.168.0.2 | | 192.168.0.1| |124.36.221.5 外部のネットワークへ 112.40.233.15| | | |---------------| |-----------------| |----------------------------------------------------| |----- | | | | | | | | ----- ----- ----- -----
ハブは環境により存在しない場合もあります。
192.168.0.1に対して経路が正しく設定されているのか、192.168.0.1に応答確認を行うコマンドがpingです。 もし実行してみて応答が無いと表示されたのであれば、 接続先であるルータやWi-Fiのアクセスポイントや中継用のハブの電源を入れなおすか、LANケーブルが抜けていないのか 確認する必要があります。
$ ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
From 192.168.0.2 icmp_seq=1 Destination Host Unreachable
From 192.168.0.2 icmp_seq=2 Destination Host Unreachable
From 192.168.0.2 icmp_seq=3 Destination Host Unreachable
正常に復旧すると応答ありと表示されます。
$ ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=1.52 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=1.62 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=1.58 ms
pingコマンドは、ICMPというプロトコルを使って応答確認を行っています。しかし、デフォルトゲートウェイ上でファイヤーウォールの設定がなされていて、
ICMPの通信が遮断されている場合、デフォルトゲートウェイからの応答を得る事が出来ません。 そんな時に利用するコマンドが”ip n”コマンドです。 IPネットワーク(トランスポート層,ネットワーク層)では、IPアドレスによって通信相手を識別していますが、 下位層のイーサネット・レベル(データリンク層)ではMACアドレスによって通信相手を識別しています。 IP通信を行う前に、ARP要求をブロードキャスト送信し通信先のIPアドレスに割り当てられている MACアドレスを探します。ファイヤーウォールは、ネットワーク層以上のプロトコルしか遮断出来ないので データリンク層レベルでは、ゲートウェイのIPアドレスを持ったPCがネットワーク上に存在するのか否かを 確認することが出来るのです。
$ ip address
2: wlp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 0c:8b:fd:11:22:33 brd ff:ff:ff:ff:ff:ff <- 0c:8b:fd:11:22:33 がMACアドレス
inet 192.168.0.2/24 brd 192.168.0.255 scope global dynamic wlp4s0
:
192.168.0.1に対してpingコマンドを送信して応答が無かったにも関わらず、イーサネット・レベルで MACアドレスを認識しているなら、ゲートウェイ上でファイヤーウォールの設定がなされている可能性が高いです。
$ ip neigh
もしくは、
$ ip n
192.168.0.1 dev wlp4s0 lladdr 00:3a:9d:11:22:33 REACHABLE <- アドレス解決。
192.168.0.2 dev wlp4s0 lladdr 08:00:27:22:33:44 STALE <- アドレス解決後、しばらく通信が行われてない状態。
192.168.0.3 dev wlp4s0 lladdr 08:00:27:33:44:55 DELAY <- STALE より更に通信が行われてない状態。
192.168.0.4 dev wlp4s0 FAILED <- アドレス解決に失敗
:
さらにその先のネットワークに障害がある場合は、tracepathコマンドで確認を行います。 tracepathは、指定したホストまでどのような経路を通って接続されているのかを確認する コマンドです。ネットワークのどのエリアで問題が発生しているのか確認する事が出来ます。 -nオプションは、DNS逆引きを行いません。ネットワークに障害がある場合、DNSによる名前解決が 出来ない場合がよくあるので障害時は-nオプションをつけて実行してください。
$ tracepath -n www.nikkeibp.co.jp
1?: [LOCALHOST] pmtu 1500
1: 192.168.0.1 1.438ms
1: 192.168.0.1 1.464ms
2: 124.36.221.5 3.214ms
3: 112.40.233.15 2.548ms
:
14: 210.138.12.93 3.863ms
15: 210.138.12.93 3.751ms asymm 14
16: 210.138.12.93 3.958ms !H
Resume: pmtu 1500
もし途中の経路に障害がある場合、障害があるルータ、ゲートウェイから応答が無いので障害ポイントがわかります。
:
14: no reply
障害がある箇所が自分の管理するネットワーク外であれば、 他のネットワーク管理者へ、契約先のプロバイダーである場合は、プロバイダーに連絡する必要がある。
tracepathを -n オプション無しで実行すると経路のプロバイダーが分かる。
$ tracepath www.nikkeibp.co.jp
1?: [LOCALHOST] pmtu 1500
1: airport.airport 1.322ms
1: airport.airport 1.283ms
2: 124x36x221x5.ap124.a.provider.ne.jp 2.680ms
3: 112x40x233x15.ap113.b.provider.ne.jp 2.241ms
:
racepath コマンド実行時に、以下のようなメッセージが表示された場合、 DNS設定に問題があるか、DNSサーバに障害がある可能性があります。
$ tracepath -n www.nikkeibp.co.jp
gethostbyname2: 不明なホストです
DNS サーバの設定が記述されている/etc/resolv.confファイルを参照し DNSサーバのアドレスにpingコマンドを実行したり、DNSサーバの再設定を行う必要があります。
$ cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.0.1
※なおpingコマンドは、ICMPをtracepathコマンドは、UDPを使用して通信を行います。 pingでは応答があるのにtracepathでは応答がない場合、 途中のルータでファイヤーウォールの設定がなされている可能性があります。