ネットワーク管理者をやっていると, 「ネットワークにつながらなくなった」, 「つながらないからどうにかして」という要望・悲鳴をよく聞きます. レクチャーで話した通り, 通信処理は階層構造を成しているので, ネットワークにつながらない場合は, それぞれの階層が正常に動いているかどうかチェックする必要があります. 今回の実習では「つながらなくなった場合の対処方法」を実際にやってみます.
「インターネットにつながらない」という悲鳴は, 大抵このネットワークインターフェース層で物理的に何らかの障害が起きている場合におこりがちです. 急にインターネットにつながらなくなったら, まずネットワークインターフェース層をチェックすると良いでしょう. ケーブルやハブ, ネットワークカードといったハードウェアが正常に動いているかどうか確認しましょう.
| チェック項目 | チェック方法 | 
|---|---|
| 配線の確認 | 自分の PC につながっているケーブルがハブにつながっているか調べる. | 
| ケーブルの確認 | ケーブルが内部で断線している可能性があるので ケーブルを他のものに取り換えてみる. 特に自作したケーブルでは起こりやすい現象. | 
| ハブの電源 | ハブの電源が切れていないか確認. | 
| ハブまわり | ハブの「リンク」ランプが付いているか確認. 正常に動作している場合, このランプは点灯する. | 
| I/O パネルの LAN ケーブル挿し口 | リンクランプが点灯しているかを確認する. このランプが点灯/点滅していれば, そこまでは信号が届いていると確認できる. | 
| ネットワークカードの接続確認 | ネットワークカードを挿し直す. | 
ネットワークカードが計算機に認識されていることを確認します.
$ /usr/bin/lspci -vb
そうすると, 例えば以下のような情報が表示されます. 必要な部分の抜粋.
| 
0000:02:05.0 Ethernet controller: Marvell Technology Group Ltd. 88E8001 Gigabit Ethernet Controller (rev 13)
        Subsystem: ASUSTeK Computer Inc. Marvell 88E8001 Gigabit
	Ethernet Controller (Asus) Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 5
        Memory at fbffc000 (32-bit, non-prefetchable)
        I/O ports at e800
        Capabilities: <available only to root>
0000:02:0b.0 Ethernet controller: Linksys 21x4x DEC-Tulip compatible 10/100 Ethernet (rev 31)
        Subsystem: Accton Technology Corporation: Unknown device 1216
        Flags: bus master, medium devsel, latency 64, IRQ 5
	I/O ports at e400
	Memory at fbffbc00 (32-bit, non-prefetchable)
        Capabilities: <available only to root>
 | 
出力されたメッセージの中に, Ethernet controller が存在しない場合は, ネットワークカードが計算機上で認識されていないということになり, 故障あるいは破損の可能性があります 情報実験機には 2 つのネットワークカード (いずれもマザーボードと一体化してます)があるはずなので, 上記のように 2 つ存在していなければなりません.
ネットワークカードが複数ある場合はどのネットワークカードがどのインターフェースに割り当てられているかを確認しなければなりません.
インターフェースの認識のためにLAN ケーブルをネットワークカードから一度抜いて, もう一度指し直してください. このときカーネルのメッセージバッファを確認することで認識したインターフェースがどれかがわかります.
$ dmesg | grep eth
| [137571.192005] sky2 eth0: Link is up at 1000 Mbps, full duplex, flow control both | 
認識したインターフェイスが eth1 の場合は赤色の部分が eth1 となります.
インターネット層では IP アドレスによって PC を識別します. そのためこの層でチェックする項目としては, IP アドレス等の TCP/IP 通信で必須となる設定項目が正しく設定されているかのチェックとなります.
まず IP アドレス, サブネットマスクを確認ですが, ifconfig コマンドを使います. IP アドレス, サブネットマスクが正しく設定されているか確認します.
$ /sbin/ifconfig -a
| 
例:
eth0      Link encap:イーサネット ハードウェアアドレス 00:1e:8c:ca:c4:75 
          inetアドレス:133.87.45.91 ブロードキャスト:133.87.45.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 によって一意に決まる. | 
次にゲートウェイアドレスの確認ですが, これはnetstat コマンドを使います. ここで Destination 0.0.0.0 のエントリにゲートウェイアドレス(ルータの IP アドレス)が設定されているか確認します.
$ netstat -rn
| Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 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 | 
実際の通信では以下のことを行っています.
例として 133.87.45.72 と通信したいとする. その場合,
である. また例えば, 157.82.18.12 と通信したいとする. その場合,
もしも 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 の編集 ... # ifdown eth0 # ifup eth0
ifdown, ifup はそれぞれ引数(今回は eth0)のインターフェースを停止, 起動するコマンドです. interfaces の変更を反映させるために再起動しています.
基本的にインターネットでは計算機の区別を 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 | 
自分の 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 サーバ | 
 | 
再び無事にネットワークへの接続が確認できれば, 本日必修の内容は終了です. お時間の余った方は付録へどうぞ.
| 最終更新日: 2012/05/09 (荻原 弘尭) | Copyright © 2012 inex |