最低限 Internet 実技編 : 「つながらない!」そんなときの対処法

  1. 「つながらない!」そんなときの対処法
    [1.1] ネットワークインターフェース層のチェック
    [1.2] インターネット層のチェック
    [1.3] 通信経路のチェック
    [演習] ネットワーク・トラブルシューティング実践

    --- 以降付録 ---

  2. Windows でのネットワークトラブル対処法
    [2.1] ネットワークインターフェース層のチェック
    [2.2] インターネット層のチェック

1.「つながらない!」そんなときの対処法

ネットワーク管理者をやっていると, 「ネットワークにつながらなくなった」, 「つながらないからどうにかして」という要望・悲鳴をよく聞きます. レクチャーで話した通り, 通信処理は階層構造を成しているので, ネットワークにつながらない場合は, それぞれの階層が正常に動いているかどうかチェックする必要があります. 今回の実習では「つながらなくなった場合の対処方法」を実際にやってみます.


[1.1] ネットワークインターフェース層のチェック

「インターネットにつながらない」という悲鳴は, 大抵このネットワークインターフェース層で物理的に何らかの障害が起きている場合におこりがちです. 急にインターネットにつながらなくなったら, まずネットワークインターフェース層をチェックすると良いでしょう. ケーブルやハブ, ネットワークカードといったハードウェアが正常に動いているかどうか確認しましょう.

[1.1.1] ネットワーク関連機器の目視確認

チェック項目 チェック方法
配線の確認 自分の PC につながっているLANケーブル(図.1 参照)がハブにつながっているか調べる.
ケーブルの確認 ケーブルが内部で断線している可能性があるので ケーブルを他のものに取り換えてみる. 特に自作したケーブルでは起こりやすい現象.
ハブの電源 ハブの電源が切れていないか確認.
ハブまわり ハブの「リンク」ランプが付いているか確認. 正常に動作している場合, このランプは点灯する.
I/O パネルの LAN ケーブル挿し口 リンクランプが点灯しているかを確認する. このランプが点灯/点滅していれば, そこまでは信号が届いていると確認できる.
ネットワークカードの接続確認 ネットワークカードを挿し直す.
Lanケーブル図.1 LAN ケーブル

[1.1.2] ネットワークカードの接続確認

ネットワークカードが計算機に認識されていることを確認します.

$ /usr/bin/lspci -vb

そうすると, 例えば以下のような情報が表示されます. 必要な部分の抜粋.

01:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8056 PCI-E Gigabit Ethernet Controller (rev 12)

04:02.0 Ethernet controller: Marvell Technology Group Ltd. 88E8001 Gigabit Ethernet Controller (rev 14)
	Subsystem: ASUSTeK Computer Inc. Marvell 88E8001 Gigabit Ethernet Controller (Asus)

出力されたメッセージの中に, Ethernet controller が存在しない場合は, ネットワークカードが計算機上で認識されていないということになり, 故障あるいは破損の可能性があります 情報実験機には 2 つのネットワークカード (いずれもマザーボードと一体化してます)があるはずなので, 上記のように 2 つ存在していなければなりません.

[1.1.3] インターフェースの確認

ネットワークカードが複数ある場合はどのネットワークカードがどのインターフェースに割り当てられているかを確認しなければなりません.

インターフェースの認識のためにLAN ケーブルをネットワークカードから一度抜いて, もう一度指し直してください. このときカーネルのメッセージバッファを確認することで認識したインターフェースがどれかがわかります.

$ dmesg | grep eth 
[137571.192005]eth0: Link is up at 1000 Mbps, full duplex, flow control both

認識したインターフェイスが eth1 の場合は赤色の部分が eth1 となります.

[1.2] インターネット層のチェック

インターネット層では IP アドレスによって PC を識別します. そのためこの層でチェックする項目としては, IP アドレス等の TCP/IP 通信で必須となる設定項目が正しく設定されているかのチェックとなります.

[1.2.1] IP アドレス, サブネットマスクの確認

まず IP アドレス, サブネットマスクを確認ですが, ifconfig コマンドを使います. IP アドレス, サブネットマスクが正しく設定されているか確認します.

$ /sbin/ifconfig -a
例:
eth0      Link encap:イーサネット ハードウェアアドレス 00:1e:8c:ca:c4:75 
          inetアドレス:192.168.16.133 ブロードキャスト:192.168.16.255 マスク:255.255.255.0
          inet6アドレス: fe80::21e:8cff:feca:c475/64 範囲:リンク
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
          RXパケット:21202 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:11363 エラー:0 損失:0 オーバラン:0 キャリア:5
      衝突(Collisions):0 TXキュー長:1000 
          RXバイト:4165682 (3.9 MiB)  TXバイト:1263089 (1.2 MiB)

lo        Link encap:ローカルループバック  
          inetアドレス:127.0.0.1 マスク:255.0.0.0
          inet6アドレス: ::1/128 範囲:ホスト
          UP LOOPBACK RUNNING  MTU:16436  メトリック:1
          RXパケット:8 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:8 エラー:0 損失:0 オーバラン:0 キャリア:0
      衝突(Collisions):0 TXキュー長:0 
          RXバイト:560 (560.0 B)  TXバイト:560 (560.0 B)

pan0      Link encap:イーサネット  ハードウェアアドレス c6:ef:92:30:b1:25 
          BROADCAST MULTICAST  MTU:1500  メトリック:1
          RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0
      衝突(Collisions):0 TXキュー長:0 
          RXバイト:0 (0.0 B)  TXバイト:0 (0.0 B)


項目 説明
eth0 イーサネットに対するインターフェースを意味する. ネットワークカードが 複数挿してある場合, その枚数に応じて eth0, eth1, ... となる.
ハードウェアアドレス (HWaddr) MAC アドレスのこと. ネットワークカードが正しく認識されていれば, カードの MAC アドレスが表示される. このエントリに何も書かれていない 場合や X と書かれている場合は, 認識に失敗したことを意味する.
inetアドレス (inet addr) 自分の IP アドレス. ネットワーク管理者から割り当ててもらう番号
ブロードキャスト (Bcast) ブロードキャストアドレス. 所属する LAN によって一意に決まる.
マスク(Mask) サブネットマスク. 所属する LAN によって一意に決まる.


[1.2.2] ゲートウェイアドレスの確認

次にゲートウェイアドレスの確認ですが, これはnetstat コマンドを使います. ここで 受信先サイト(Destination) 0.0.0.0 のエントリにゲートウェイアドレス(ルータの IP アドレス)が設定されているか確認します.

$ netstat -rn
カーネルIP経路テーブル
受信サイト          ゲートウェイ        ネットマスク       フラグ      MSS Window     irtt インターフェース
0.0.0.0             192.168.16.1        0.0.0.0             UG          0  0           0   eth0
192.168.16.0        0.0.0.0             255.255.255.0       U           0  0           0   eth0

実際の通信では以下のことを行っています.

  1. 通信相手の IP アドレスと ネットマスク(Genmask) との論理積をとる.
  2. 論理積の値が 受信先サイト(Destination) と同じかどうか判定する.
  3. もしも真ならば, ゲートウェイ(Gateway) に対してIP パケットを投げる. 但し, ゲートウェイ(Gateway) が 0.0.0.0 ならば, 通信相手は自分と同じネットワーク上に いることになる.

例として 133.87.45.72 と通信したいとする. 今, カーネルIP経路テーブルは以下の様になっていたとする.
例:
カーネルIP経路テーブル
受信サイト     ゲートウェイ     ネットマスク    フラグ   MSS Window  irtt インターフェース
133.87.45.0     0.0.0.0         255.255.255.0    U       1500 0      0     eth0
127.0.0.0       0.0.0.0         255.0.0.0        U       3584 0      0     lo
0.0.0.0         133.87.45.1     0.0.0.0          UG      1500 0      0     eth0

  1. 133.87.45.72 と 255.255.255.0 との論理積をとる
  2. 論理積の値は 133.87.45.0 なので, 受信先サイト(Destination) の値(133.87.45.0)と一致する
  3. 相手は自分と同じネットワークに存在する.

である. また例えば, 157.82.18.12 と通信したいとする. その場合,

  1. 157.82.18.12 と 255.255.255.0 との論理積をとる
  2. 論理積の値は 157.82.18.0 なので, 受信先サイト(Destination) の値(133.87.45.0)と一致しない.
  3. 次の行へ移る
  4. 157.82.18.12 と 255.0.0.0 との論理積をとる
  5. 論理積の値は 157.0.0.0 なので, 受信先サイト(Destination) の値(127.0.0.0)と一致しない.
  6. 次の行へ移る
  7. 157.82.18.12 と 0.0.0.0 との論理積をとる
  8. 論理積の値は 0.0.0.0 なので, 受信先サイト(Destination) の値(0.0.0.0)と一致する.
  9. 通信するためには, ゲートウェイに仲介してもらうことになる.


[1.2.3] ネットワークパラメータの設定方法

もしも eth0 が存在しない場合には, /etc/network/interfaces にしかるべき ネットワークパラメタを設定しなくてはなりません. このファイルの編集は root しかできません. ファイルを編集したあとに, ネットワークを起動します. ここでは内容を見て確認してみて下さい.

$ less /etc/network/interfaces
例:
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)

# The loopback interface
# automatically added when upgrading
auto lo
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet static
        address 192.168.16.107      # IP アドレス
        netmask 255.255.255.0       # サブネットマスク
        network 192.168.16.0        # ネットワークアドレス
        broadcast 192.168.16.255    # ブロードキャストアドレス
        gateway 192.168.16.1        # ゲートウェイアドレス

書き直す場合は以下のように vi で編集し, その後再起動します. ただし, 書き直したり再起動するのは システムの管理者権限が必要です. 今回の実習の最後に実際にネットワークに関するトラブルシューティングを 行ってもらいますので, 覚えておいてください.

# vi /etc/network/interfaces

  ... interfaces の編集 ...

# /etc/init.d/networking restart
[....] Running /etc/init.d/networking restart is deprecated because it may not re-enable some interfac[warn. (warning).
[ ok ] Reconfiguring network interfaces...done.


/etc/init.d/networking restart はインターフェースを停止し, 再起動するコマンドです. interfaces の変更を反映させるために再起動しています. これを行っても [ ok ] Reconfiguring network interfaces... done. とでない場合は直接インターフェースを再起動させてみてください.

/etc/init.d/networking restart がうまくいかないとき.

# ifdown eth0
# ifup eth0

ifdown, ifup はそれぞれ引数(今回は eth0)のインターフェースを停止, 起動するコマンドです. networking の中ではこのコマンドが呼び出されています.

[1.2.4] DNS サーバの設定方法

基本的にインターネットでは計算機の区別を IP アドレスによって行います. しかしそれでは覚えにくいので, 「ホスト名」という名前も用意されています. ホスト名 (例: www.ep.sci.hokuda.ac.jp) と IP アドレス (例: 133.50.160.51) の対応関係を知るためには, その対応表を持っている DNS サーバの IP アドレス が正しく設定されている必要があります. (何故, DNS サーバの「ホスト名」 ではダメなのか, 分かりますか?)

DNS サーバは/etc/resolv.conf に 設定されています.

$ less /etc/resolv.conf
search ep.sci.hokudai.ac.jp
nameserver 133.87.45.70
nameserver 133.87.45.66
nameserver 133.87.1.11

項目 説明
nameserver DNS サーバの IP アドレス. ドメイン名を利用する際にはまず一番上の DNS サーバに問い合わせる. 問い合わせがタイムアウトになった場合, 次の DNS サーバに問い合わせる.
search ホスト名探査のための検索リスト. 例えばここに "ep.sci.hokudai.ac.jp" と記述してある場合, "www" というドメイン名を入力するだけで, "www.ep.sci.hokudai.ac.jp" というドメイン名に補完される. 大抵はローカルドメイン名 (コンピュータ自身のドメイン名) が 書き込まれているが, 別のドメイン名を複数書き込んであって良い

書き直す場合は以下のように vi で編集します. ただし, 編集するにはシステムの管理者権限が必要です. 今回の実習の最後に実際にネットワークに関するトラブルシューティングを 行ってもらいますので, 覚えておいてください.

# vi /etc/resolv.conf

  ... resolv.conf の編集 ...

実際にホスト名と IP アドレスの対応を知るためにはhost コマンド を使います.

$ host www.ep.sci.hokudai.ac.jp

このコマンドでは, 入力されたホスト名を先に設定した DNS サーバに問い合わせ, 対応する IP アドレスを表示します.

www.ep.sci.hokudai.ac.jp is an alias for orange.ep.sci.hokudai.ac.jp.
orange.ep.sci.hokudai.ac.jp has address 133.50.160.51



[1.3] 通信経路のチェック

自分の PC がきちんと設定してあっても, 通信相手の PC の電源が入っていない場合や, 自分と相手の間のどこかで通信が途切れている場合等は, 当然のことながら通信することができません. 自分と通信相手の間で通信が可能かどうかを調べるには ping コマンド, traceroute コマンド を使います. ただし, 北大の学外へはこれらのコマンドを使用しても経路の情報を得ることはできません. これは北大のネットワークを管理している HINES がセキュリティ上の観点から認めていないためです.

ping コマンドは引数として通信相手の IP アドレス, もしくはホスト名を 指定します. 通信相手がインターネットにつながっている場合は以下のように 相手に通信が届くまでにどのくらいの時間がかかったか表示されます (終了するには Ctrl + C を押してください).

$ ping www.ep.sci.hokudai.ac.jp
例:
PING www.ep.sci.hokudai.ac.jp (133.50.160.51): 56 data bytes

64 bytes from 133.50.160.51: icmp_seq=0 ttl=61 time=0.5 ms
64 bytes from 133.50.160.51: icmp_seq=1 ttl=61 time=0.5 ms
64 bytes from 133.50.160.51: icmp_seq=2 ttl=61 time=0.5 ms
64 bytes from 133.50.160.51: icmp_seq=3 ttl=61 time=1.7 ms
64 bytes from 133.50.160.51: icmp_seq=4 ttl=61 time=0.6 ms
64 bytes from 133.50.160.51: icmp_seq=5 ttl=61 time=0.6 ms
64 bytes from 133.50.160.51: icmp_seq=6 ttl=61 time=0.4 ms

traceroute コマンドは相手に通信が届くまでにどのルータを経由したかが 表示されます. 相手に通信が届かない場合, どこかでネットワークが切れている 可能性があります. traceroute はそれを検知するためのツールです. (終了するには Ctrl + C を押してください).

# traceroute www.hokudai.ac.jp
例:
traceroute to www.hokudai.ac.jp (133.87.1.4), 30 hops max, 38 byte packets
 1  192.168.16.1                   (192.168.16.1)  0.220 ms  0.253 ms  0.176 ms
 2  ringo.ep.sci.hokudai.ac.jp     (133.87.45.1)   0.860 ms  0.827 ms  0.809 ms
 3  133.50.160.1                   (133.50.160.1)  0.555 ms  0.627 ms  0.555 ms
 4  133.87.254.65                  (133.87.254.65) 1.492 ms  0.630 ms  0.557 ms
 5  daikeir1-sec.sys.hokudai.ac.jp (133.87.254.3)  0.633 ms  0.706 ms  0.684 ms
 6  133.87.1.4                     (133.87.1.4)    0.627 ms  0.500 ms  0.685 ms




[演習] ネットワーク・トラブルシューティング実践

ここまでの内容を理解したら, 実際にトラブルシューティングを行ってもらいます. その下準備として /etc/network/interfaces と /etc/resolv.conf のバックアップを行ってください.

$ cp /etc/network/interfaces ~/interfaces.bak
$ cp /etc/resolv.conf ~/resolv.conf.bak

バックアップを行ったら VTA がネットワークに繋がらない状態にします(カンニング厳禁!). 以下に情報実験機の各ネットワークパラメータの正しい値を記しますので, これらをチェックして再びネットワークに接続してください. 管理者権限は今回のこの実習に限り VTA から借りて作業を行います.

項目
IP アドレス 192.168.16.1<情報実験機番号>
(例: joho 04 → 192.168.16.104)
サブネットマスク 255.255.255.0
ネットワークアドレス 192.168.16.0
ブロードキャストアドレス 192.168.16.255
ゲートウェイアドレス 192.168.16.1
イーサネットに対する
インターフェース
eth0 or eth1 or eth2
DNS サーバ
  1. yellow.ep.sci.hokudai.ac.jp   (IP アドレス 133.87.45.70)
  2. blue.ep.sci.hokudai.ac.jp   (IP アドレス 133.87.45.66)
  3. nameserv.sys.hokudai.ac.jp   (IP アドレス 133.87.1.11)

再び無事にネットワークへの接続が確認できれば, 本日必修の内容は終了です. お時間の余った方は付録へどうぞ.


付録:Windows でのネットワークトラブル対処法

最終更新日: 2012/05/09 (荻原 弘尭) Copyright © 2012 inex