最低限 internet


[1]「つながらない!」そんなときには

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


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

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

チェック項目 チェック方法
ケーブルがつながっていない 自分の PC につながっているケーブルがハブにつながっているか調べる.
ケーブル内部での断線 ケーブルを他のものに取り換えてみる. 特に自作したケーブルでは起こりやすい現象.
ハブの電源 ハブの電源が切れていないか確認.
ハブまわり ハブの「リンク」ランプが付いているか確認. 正常に動作している場合, このランプは点灯する.
ネットワークカードが挿さっていない ネットワークカードを挿し直す
ネットワークカードのドライバがインストールされていない ドライバがインストールされているか確認する([1.1.1]参照).


写真 説明
ハブ.
前面下段の点灯している灯りが「リンク」ランプ


ネットワークカードのドライバがインストールされているか/ ネットワークカードが PC から認識されているかを確認するには, Windows では「コントロールパネル/システム」, Linux ではifconfig コマンドを使用します.

[1.1.1]Windows での確認

  • [スタート] をクリックして, [コントロールパネル] を開く
  • [コントロールパネル] の [パフォーマンスとメンテナンス] をクリック
  • [システム] をクリック
  • [ハードウェア] タブにある[デバイスマネージャ]をクリック
  • [ネットワークアダプタ] にネットワークカードが存在するか確認
  • ネットワークカードが PC から認識されていない場合は ? (ハテナ)印が付く
  • ? 印が付いていたら, ネットワークカード付属のドライバディスクからネッ トワークカードのドライバをインストールすること

[1.1.2]Linux での確認

Linux で確認する場合は /proc内のファイルを確認します.

[1.1.2.1]ネットワークカードが指してあるかの確認

$ 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 が存在しない場合は, ネットワークカードが抜けかかっていることが 考えられます.

[1.1.2.2]ドライバソフトが動作しているかの確認

ネットワークカードが指してあっても, それをうごかすための ドライバソフトがインストールされて いなければ動作しません.

$ 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/ioports

そうすると, 例えば以下のような情報が表示されます.

0000-001f : dma1
0020-003f : pic1
0040-005f : timer
0060-006f : keyboard
0080-008f : dma page reg
00a0-00bf : pic2
00c0-00df : dma2
00f0-00ff : fpu
01f0-01f7 : ide0
0213-0213 : isapnp read
02f8-02ff : serial(set)
03c0-03df : vga+
03f6-03f6 : ide0
03f8-03ff : serial(set)
0a79-0a79 : isapnp write
0cf8-0cff : PCI conf1
b800-b8ff : ATI Technologies Inc 3D Rage Pro 215GP
d000-d0ff : Linksys Fast Ethernet 10/100             <--- ネットワークカード
d000-d0ff : tulip
d400-d41f : Intel Corp. 82371AB/EB/MB PIIX4 USB
d800-d80f : Intel Corp. 82371AB/EB/MB PIIX4 IDE
d800-d807 : ide0
d808-d80f : ide1
e400-e43f : Intel Corp. 82371AB/EB/MB PIIX4 ACPI
e800-e81f : Intel Corp. 82371AB/EB/MB PIIX4 ACPI

もしもドライバソフトがインストールされていない場合は, カーネルを再構築する必要があります(ここでは詳細は省略).

項目 説明
Interrupt CPU に対する割り込み番号. IRQ とも呼ぶ. この番号を持っていないと, CPU に対して処理をお願いすることができない.
ioport (Base Address) 計算機の入出力(I/O: Input and output)アドレス. CPU が周辺機器に対して 入出力を行う際に, 入出力の出入り口を区別するために使う.



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

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


[1.2.1]Windows での確認

  • [スタート] をクリックし, [ファイル名を指定して実行] をクリック
  • cmd と打鍵し, コマンドプロンプトを起動.
  • コマンドプロンプト上で以下のコマンドを打鍵

    $ ipconfig -all

    左図のような情報が表示される

実行した結果, IP アドレスが表示されない場合は以下のことをする.

  • [スタート] から [コントロールパネル] を開く
  • [コントロールパネル] から [ネットワークとインターネット接続] をクリック
  • [ローカルエリア接続] を右クリックし, [プロパティ] を選択
  • [全体] タブにある [インターネットプロトコル(TCP/IP)] を選択
  • [プロパティ] をクリック
  • IP アドレス, ゲートウェイが正しく設定されているか確認
  • 正確に設定されていない場合は設定し直す

[1.2.2]Linux での確認

Linux で IP アドレス, ネットマスクを確認する場合には ifconfig コマンドを 使います. ゲートウェイアドレスを確認する場合は netstat コマンドを使います. ifconfig コマンドは大抵 /sbin ディレクトリに格納されているので, 一般ユーザが ifconfig と打鍵してもパスの関係で実行できません. 一般ユー ザで実行する場合は絶対パスで打鍵しましょう. )

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

まず 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 のアドレス.


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

次にゲートウェイアドレスの確認ですが, これは 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

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

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

例として 133.87.45.72 と通信したいとする. その場合,

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

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

  1. 157.82.18.12 と 255.255.255.128 との論理積をとる
  2. 論理積の値は 133.87.45.0 なので, Destination の値(133.87.45.0)と一致しない.
  3. 次の行へ移る
  4. 157.82.18.12 と 255.0.0.0 との論理積をとる
  5. 論理積の値は 157.0.0.0 なので, Destination の値(192.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.2.3] ネットワークパラメタの設定方法

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

# less /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 restart



[1.3]その他のネットワークの状態をチェックするコマンド

Linux にはネットワークの状態を知るコマンドがいくつか存在します. それを簡単に紹介したいと思います.

[1.3.1]通信相手がネットワークにつながっているか確認する方法

時に通信相手の電源が入っていなかったり, ネットワークにつながっていない場合が あります. そのような場合, 自分の PC がきちんと設定してあっても, 当然のことながら通信することができません. 通信相手がインターネットに 接続しているかどうかを調べるには ping コマンド, traceroute コマンド を使います.

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

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

64 bytes from 133.87.45.72: icmp_seq=0 ttl=253 time=81.8 ms
64 bytes from 133.87.45.72: icmp_seq=1 ttl=253 time=0.7 ms
64 bytes from 133.87.45.72: icmp_seq=2 ttl=253 time=0.7 ms
64 bytes from 133.87.45.72: icmp_seq=3 ttl=253 time=0.8 ms
64 bytes from 133.87.45.72: icmp_seq=4 ttl=253 time=0.7 ms
64 bytes from 133.87.45.72: icmp_seq=5 ttl=253 time=0.7 ms
64 bytes from 133.87.45.72: icmp_seq=6 ttl=253 time=0.6 ms

traceroute コマンドは相手に通信が届くまでにどのルータを経由したかが 表示されます. 相手に通信が届かない場合, どこかでネットワークが切れている 可能性があります. traceroute はそれを検知するためのツールです. [(注) 北大から外へは ping, traceroute は通りません. HINES の方針.]

$ traceroute -I www.isas.jaxa.jp
traceroute to www.isas.jaxa.jp (133.74.10.80), 30 hops max, 38 byte packets
 1  192.168.16.1 (192.168.16.1)  0.318 ms  0.214 ms  0.207 ms
 2  ringo.ep.sci.hokudai.ac.jp (133.87.45.1)  0.795 ms  0.729 ms  0.729 ms
 3  133.74.135.1 (133.74.135.1)  0.584 ms  0.591 ms  0.476 ms
 4  133.74.35.200 (133.74.35.200)  138.076 ms  19.654 ms  45.702 ms
 5  www.isas.jaxa.jp (133.74.10.80)  139.439 ms  20.011 ms  43.341 ms

参考例:
違う場所から traceroute してみると…
traceroute to www.isas.jaxa.jp (133.74.10.80), 30 hops max, 38 byte packets
 1  usen-221x114x100x73.ap-US01.usen.ad.jp (221.114.100.73)  4.221 ms  4.290 ms  4.152 ms
 2  61.122.120.134 (61.122.120.134)  5.736 ms  3.214 ms  3.032 ms
 3  61.122.115.38 (61.122.115.38)  4.142 ms  3.603 ms  3.991 ms
 4  61.122.127.217 (61.122.127.217)  4.038 ms  3.640 ms  3.566 ms
 5  61.122.115.77 (61.122.115.77)  16.868 ms  16.823 ms  16.843 ms
 6  61.122.115.17 (61.122.115.17)  21.323 ms  22.636 ms  23.271 ms
 7  210.173.176.27 (210.173.176.27)  23.721 ms  18.898 ms  18.192 ms
 8  nii-S1-P0-0.sinet.ad.jp (150.99.197.141)  17.709 ms  17.430 ms  17.390 ms
 9  JT-tokyo-S1-P8-0.sinet.ad.jp (150.99.197.21)  18.530 ms  19.030 ms  20.005 ms
10  isas-S1-P2-0.sinet.ad.jp (150.99.197.46)  21.712 ms  20.567 ms  21.358 ms
11  isas-lan.sinet.ad.jp (150.99.197.166)  21.780 ms  24.007 ms  21.993 ms
12  133.74.120.63 (133.74.120.63)  24.085 ms  24.117 ms  25.620 ms
13  133.74.35.200 (133.74.35.200)  142.724 ms  144.490 ms  23.919 ms
14  www.isas.jaxa.jp (133.74.10.80)  38.123 ms  101.715 ms  25.390 ms

参考資料:バックボーンネットワーク配線図
SINET ネットワーク構成図
IIJ バックボーン
OCN ネットワーク構成
ODN バックボーン

[1.3.2]ホスト名と IP アドレスの対応を知る方法

基本的にインターネットでは計算機の区別を IP アドレスという数字によって 行います. しかしそれでは覚えにくいので, 「ホスト名」という名前も 用意されています. その対応を知るために host コマンド を使います.

$ host www.ep.sci.hokudai.ac.jp
www.ep.sci.hokudai.ac.jp      CNAME  orange.ep.sci.hokudai.ac.jp
orange.ep.sci.hokudai.ac.jp   A      133.50.160.51



最終更新日: 2003/11/14 (柿並義宏) Copyright © 2003 inex