ネットワーク管理者をやっていると, 「ネットワークにつながらなくなった」, 「つながらないからどうにかして」という要望・悲鳴をよく聞きます. レク チャーで離した通り, 通信処理は階層構造を成しているので, ネットワークに つながらない場合は, それぞれの階層が正常に動いているかどうかチェックす る必要があります. 今回の実習では「つながらなくなった場合の対処方法」を 実際にやってみます.
「インターネットにつながらない」という悲鳴は, 大抵この物理層で何らかの 障害が起きている場合におこりがちです. 急にインターネットにつながらな くなったら, まずネットワーク・インターフェイス層をチェックすると良いで しょう. ケーブルやハブ, ネットワークカードといったハードウェアが 正常に動いているかどうか確認しましょう.
| チェック項目 | チェック方法 | 
|---|---|
| ケーブルがつながっていない | 自分の PC につながっているケーブルがハブにつながっているか調べる. | 
| ケーブル内部での断線 | ケーブルを他のものに取り換えてみる. 特に自作したケーブルでは起こりやすい現象. | 
| ハブの電源 | ハブの電源が切れていないか確認. | 
| ハブまわり | ハブの「リンク」ランプが付いているか確認. 正常に動作している場合, このランプは点灯する. | 
| ネットワークカードが挿さっていない | ネットワークカードを挿し直す | 
| ネットワークカードのドライバがインストールされていない | ドライバがインストールされているか確認する([1.1.1]参照). | 
| 写真 | 説明 | 
|---|---|
|  | ハブ. 前面下段の点灯している灯りが「リンク」ランプ | 
ネットワークカードのドライバがインストールされているか/ ネットワークカードが PC から認識されているかを確認するには, Windows では「コントロールパネル/システム」, Linux ではifconfig コマンドを使用します.
Linux で確認する場合は /proc内のファイルを確認します.
$ cat /proc/pci
そうすると, 例えば以下のような情報が表示されます. 必要な部分の抜粋.
| 
  Bus  0, device  12, function  0:
    Ethernet controller: Unknown vendor Unknown device (rev 49).
      Vendor id=1317. Device id=981.
      Medium devsel.  Fast back-to-back capable.  IRQ 11.  Master Capable.  Late
ncy=32.  Min Gnt=255.Max Lat=255.
      I/O at 0xa000 [0xa001].
      Non-prefetchable 32 bit memory at 0xe0000000 [0xe0000000].
 | 
出力されたメッセージの中に, Ethernet controller が存在しない場合は, ネットワークカードが抜けかかっていることが 考えられます.
ネットワークカードが指してあっても, それをうごかすための ドライバソフトがインストールされて いなければ動作しません.
$ cat /proc/interrupts
そうすると, 例えば以下のような情報が表示されます.
| 
           CPU0       
  0:  928608744          XT-PIC  timer
  1:     176989          XT-PIC  keyboard
  2:          0          XT-PIC  cascade
  8:          1          XT-PIC  rtc
  9:    1379533          XT-PIC  ide2
 11:   54932591          XT-PIC  eth0       <---- ネットワークカードのドライバ
 12:     894474          XT-PIC  PS/2 Mouse
 13:          1          XT-PIC  fpu
NMI:          0
 | 
$ cat /proc/ioport
そうすると, 例えば以下のような情報が表示されます.
| 0000-001f : dma1 0020-003f : pic1 0040-005f : timer 0060-006f : keyboard 0070-007f : rtc 0080-008f : dma page reg 00a0-00bf : pic2 00c0-00df : dma2 00f0-00ff : fpu 02f8-02ff : serial(set) 03c0-03df : vga+ 03f8-03ff : serial(set) a000-a0ff : eth0 <---- ネットワークカード a800-a807 : ide2 a808-a80f : ide3 a810-a83f : PDC20267 b802-b802 : ide2 d000-d007 : ide2 d800-d807 : ide0 d808-d80f : ide1 | 
もしもドライバソフトがインストールされていない場合は, カーネルを再構築する必要があります(ここでは詳細は省略).
| 項目 | 説明 | 
|---|---|
| Interrupt | CPU に対する割り込み番号. IRQ とも呼ぶ. この番号を持っていないと, CPU に対して処理をお願いすることができない. | 
| ioport (Base Address) | 計算機の入出力(I/O: Input and output)アドレス. CPU が周辺機器に対して 入出力を行うための窓口. | 
インターネット層では IP アドレスによって PC を識別します. そのためこの 層でチェックする項目としては, IP アドレス等の TCP/IP 通信で必須となる 設定項目が正しく設定されているかのチェックとなります.
|   | 「ファイル名を指定して実行」を選び, winipcfg と打鍵. | 
実行した結果, IP アドレスが表示されない場合は以下のことをする.
|   | マイコンピュータをクリックして, コントロールパネルを開く | 
|   | コントロールパネルから「ネットワーク」をクリックする. そして「TCP/IP → (ネットワークカード名)」を選択する. | 
|   | IP アドレス, ゲートウェイが正しく設定されているか確認する. 万が一正確に設定されていない場合は設定し直し, PC を再起動する. | 
Linux で IP アドレス, ネットマスクを確認する場合には ifconfig コマンドを 使います. ゲートウェイアドレスを確認する場合は netstat コマンドを使います. ifconfig コマンドは大抵 /sbin ディレクトリに格納されているので, 一般ユーザが ifconfig と打鍵してもパスの関係で実行できません. 一般ユー ザで実行する場合は絶対パスで打鍵しましょう. )
まず IP アドレス, ネットマスクを確認ですが, ifconfig コマンドを 使います. IP アドレス, ネットマスクが設定されているか確認します.
$ /sbin/ifconfig -a
|   | 
| 項目 | 説明 | 
|---|---|
| inet addr | 自分の IP アドレス. ネットワーク管理者から割り当ててもらう番号 | 
| Bcast | ブロードキャストアドレス. 所属する LAN によって一意に決まる. | 
| Mask | ネットマスク. 所属する LAN によって一意に決まる. | 
| eth0 | イーサネットに対するインターフェイスを意味する. ネットワークカードが 複数挿してある場合, その枚数に応じて eth1, eth2, ... となる. | 
| HWaddr | MAC アドレスのこと. ネットワークカードが正しく認識されていれば, カードの MAC アドレスが表示される. このエントリに何も書かれていない 場合や X と書かれている場合は, 認識に失敗したことを意味する. | 
| Interrupt | CPU に対する割り込み番号. IRQ とも呼ぶ. この番号を持っていないと, CPU に対して処理をお願いすることができない. | 
| Base Address | ネットワークカードの利用する I/O のアドレス. | 
次にゲートウェイアドレスの確認ですが, これは netstat コマンドを使います. ここで 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.128 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.15 と通信したいとする. その場合,
である. また例えば, 157.82.18.12 と通信したいとする. その場合,
もしも eth0 が存在しない場合には, /etc/network/intetrfaces にしかるべき ネットワークパラメタを設定しなくてはならない. このファイルの編集は root しかできません. ファイルを編集したあとに, ネットワークを起動します.
# vi /etc/network/interfaces
| 
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
# The loopback interface
iface lo inet loopback
# The first network card - this entry was created during the Debian installation
# (network, broadcast and gateway are optional)
iface eth0 inet static
        address 133.87.45.71                # IP アドレス
        netmask 255.255.255.128             # ネットマスク
        network 133.87.45.0                 # ネットワークアドレス
        broadcast 133.87.45.127             # ブロードキャストアドレス
        gateway 133.87.45.1                 # ゲートウェイアドレス
 | 
# /etc/init.d/networks start
Linux にはネットワークの状態を知るコマンドがいくつか存在します. それを簡単に紹介したいと思います.
時に通信相手の電源が入っていなかったり, ネットワークにつながっていない場合が あります. そのような場合, 自分の PC がきちんと設定してあっても, 当然のことながら通信することができません. 通信相手がインターネットに 接続しているかどうかを調べるには ping コマンド, traceroute コマンド を使います.
ping コマンドは引数として通信相手の IP アドレス, もしくはホスト名を 指定します. 通信相手がインターネットにつながっている場合は以下のように 相手に通信が届くまでにどのくらいの時間がかかったか表示されます.
$ ping asura.ep.sci.hokudai.ac.jp
| PING asura.ep.sci.hokudai.ac.jp (133.87.45.15): 56 data bytes 64 bytes from 133.87.45.15: icmp_seq=0 ttl=253 time=81.8 ms 64 bytes from 133.87.45.15: icmp_seq=1 ttl=253 time=0.7 ms 64 bytes from 133.87.45.15: icmp_seq=2 ttl=253 time=0.7 ms 64 bytes from 133.87.45.15: icmp_seq=3 ttl=253 time=0.8 ms 64 bytes from 133.87.45.15: icmp_seq=4 ttl=253 time=0.7 ms 64 bytes from 133.87.45.15: icmp_seq=5 ttl=253 time=0.7 ms 64 bytes from 133.87.45.15: icmp_seq=6 ttl=253 time=0.6 ms | 
traceroute コマンドは相手に通信が届くまでにどのルータを経由したかが 表示されます. 相手に通信が届かない場合, どこかでネットワークが切れている 可能性があります. traceroute はそれを検知するためのツールです. [(注) 北大から外へは ping, traceroute は通りません. HINES の方針.]
$ traceroute rcen00.ec.hokudai.ac.jp
| 1 kurage.ep.sci.hokudai.ac.jp (133.87.45.1) 0.62 ms 0.468 ms 0.558 ms 2 * 133.50.134.1 (133.50.134.1) 15.188 ms 14.746 ms 3 daikeir1.sys.hokudai.ac.jp (133.87.4.1) 1.082 ms 1.014 ms 0.979 ms 4 133.87.10.21 (133.87.10.21) 1.22 ms 1.102 ms 1.104 ms 5 eczgw01.ec.hokudai.ac.jp (133.87.36.2) 1.59 ms 1.555 ms 1.591 ms 6 eczgw06.ec.hokudai.ac.jp (133.87.38.3) 2.245 ms 2.284 ms 2.293 ms 7 rcen00.ec.hokudai.ac.jp (133.87.38.137) 3.189 ms 3.119 ms 3.233 ms | 
基本的にインターネットでは計算機の区別を IP アドレスという数字によって 行います. しかしそれでは覚えにくいので, 「ホスト名」という名前も 用意されています. その対応を知るために nslookup コマンド を使います.
$ nslookup asura.ep.sci.hokudai.ac.jp
| Default Server: localhost Address: 127.0.0.1 Name: asura.ep.sci.hokudai.ac.jp Address: 133.87.45.15 | 
| 最終更新日: 2001/11/15(杉山耕一朗) | Copyright © 2001 inex |