「なぜかインターネットに繋がらない!」という時に便利なコマンドを紹介します。

ping

pingは指定したアドレスからの応答があるかどうかをチェックできるコマンドです。 本当にインターネットに繋がっていないのか、特定のソフトウェアの不具合なのかを切り分ける時に使います。

$ ping www.google.co.jp -c 3
PING www.google.co.jp (216.58.197.227) 56(84) bytes of data.
64 bytes from nrt13s49-in-f227.1e100.net (216.58.197.227): icmp_seq=1 ttl=54 time=6.15 ms
64 bytes from nrt13s49-in-f227.1e100.net (216.58.197.227): icmp_seq=2 ttl=54 time=5.94 ms
64 bytes from nrt13s49-in-f227.1e100.net (216.58.197.227): icmp_seq=3 ttl=54 time=6.34 ms

--- www.google.co.jp ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 5.943/6.148/6.348/0.165 ms

cオプションで回数を指定できます。指定しない場合はpingを送信し続けるのでCtrl-cで終了する必要があります。 パケットロス(%で表示されている)が発生している場合、接続出来ていません。

セキュリティのためにpingに応答しないサーバもあるので、Googleなどの有名どころにPingするのがコツです。

まとめ

  • pingが上手く出来ている → ネットワークの問題ではない
  • pingが上手く出来ていない → ネットワークの問題!次のコマンドに進む。

ifconfig

ネットワークの設定を確認するためのコマンドです。ここではIPアドレスが割り当てられているかを確認しましょう。 (以下の例では一部がXXXの伏せ字になっています。)

$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.4  netmask 255.255.255.0  broadcast 192.168.0.255
        ether 52:54:0e:XX:XX:XX  txqueuelen 1000  (Ethernet)
        RX packets 284216981  bytes 105292149937 (98.0 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 58073843  bytes 46613813274 (43.4 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

コマンドを実行したときにinetという部分にIPアドレスが表示されていれば、IPアドレスの取得は出来ています。

新しいOSではip -aコマンドを使う必要があるかも知れません。

正しいIPアドレス

普通は、以下のようになっているはずです。

  • 192.168.(0~255).(1~254)
  • 172.(16~31).(0~255).(1~254)
  • 10.(0~255).(0~255).(1~254)

特殊な場合ですが、もしIPアドレスを取得しているならその値が設定されている必要があります。

まとめ

  • 正しいIPアドレスが設定されている → 別のネットワーク設定に問題あり!次のコマンドに進む。
  • 正しいIPアドレスが設定されていない → 別の機器でも確かめてみる
  • やっぱりおかしい → IPアドレスを割り当てるDHCPという仕組みがおかしい。普通ルータがする仕事なので、ルータを再起動してみよう。

nslookup

IPアドレスが正しく設定されているのにインターネットに接続出来ない時には、DNSの設定間違いを疑います。 とりあえず以下のコマンドを実行してみましょう。

$ nslookup www.google.co.jp
Server:         XXX.XXX.XXX.XXX
Address:        XXX.XXX.XXX.XXX#53

Non-authoritative answer:
Name:   www.google.co.jp
Address: 216.58.196.227

実行してみて、answerが表示されましたか?もしされなければ、以下のコマンドも試してみて下さい。

$ nslookup www.google.co.jp 8.8.8.8

まとめ

  • どちらの結果もおかしい → 別のネットワーク設定に問題あり!次のコマンドに進む。
  • 2つ目の結果は大丈夫 → DNSサーバの調子が悪いようです。デフォルトDNSサーバの設定を変更しましょう。(/etc/resolv.confなどを参照)
  • 1つ目の結果は大丈夫 or どちらの結果も大丈夫 → インターネットには接続出来ているはずです。

routeコマンド

この辺りまで来ると、このネットワークトラブルは一筋縄では行かないです。とりあえずコマンドだけ紹介しておきましょう。 OSによっては、ip route showが代替です。

$ route
カーネルIP経路テーブル
受信先サイト    ゲートウェイ    ネットマスク   フラグ Metric Ref 使用数 インタフェース
default         192.168.0.1     255.255.255.255 U     0      0        0 eth0

たくさん出力されるとは思いますが、大事なのは”default”です。 この行のゲートウェイにルータのアドレスが設定されているかどうかが重要です。

まとめ

  • ゲートウェイのアドレスがおかしい → ゲートウェイアドレスを設定し直そう!
  • ゲートウェイのアドレスは正しい → 別のネットワーク設定に問題あり!次のコマンドに進む。

arpコマンド

このコマンドはIPアドレスとネットワークポートの対応付けを表示します。 OSによっては、ip nが代替です。 ルータのIPアドレスが、ルータに繋がるポートに対応づけられているか確認しましょう。 以下の例では192.168.0.1(つまりgateway)がeth0に対応づけられています。

$ arp
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.0.1              ether   XX:XX:XX:XX:XX:XX   C                     eth0
gateway                  ether   XX:XX:XX:XX:XX:XX   C                     eth0

まとめ

  • 対応付けがおかしい → ネットワークサービスやPCそのものを再起動してみましょう
  • 対応付けは正しい → 手詰まりです・・・

それでも解決しない時には

典型的なネットワークトラブルの枠を越えた問題が発生してしまっているようです。 専門家に見てもらう必要があります。自分で何とかしたいときにはRedhatのマニュアルなどが役立つでしょう。