最低限 internet 「つながらない!」そんなときには

  1. 「つながらない!」そんなときには
    [1.1] ネットワークインターフェース層のチェック
    [1.2] インターネット層のチェック
    [1.3] その他のネットワークの状態をチェックするコマンド
    [1.4] ネットワーク・トラブルシューティング実習

    --- 以降付録 ---

  2. Windows でネットワークの状態をチェックするには
    [2.1] ネットワークカードのチェック
    [2.2] Windows の TCP/IP の設定の確認

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

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


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

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

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


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


[1.1.1] ネットワークカードのドライバ確認

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

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

$ /sbin/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 つのネットワークカード (1 つはマザーボードと一体化してます) が挿さっているはずなので, 上記のように 2 つ存在していなければなりません.

[1.1.1.2] ドライバソフトの動作確認

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

$ cat /proc/interrupts 

そうすると, 例えば以下のような情報が表示されます(例ではeth2ですが, eth0だったりeth1だった りするかもしれません. また行頭にある割り込み番号が異なる場合もあります. ).

           CPU0       CPU1
  0:  174852166          0    IO-APIC-edge  timer
  1:      48184          0    IO-APIC-edge  i8042
  7:          0          0    IO-APIC-edge  parport0
  8:          1          0    IO-APIC-edge  rtc
  9:          2          0   IO-APIC-level  acpi
 10:          0          0    IO-APIC-edge  MPU401 UART
 12:     411665          0    IO-APIC-edge  i8042
 14:     891134          0    IO-APIC-edge  ide0
 15:         91          0    IO-APIC-edge  ide1
 16:          0          0   IO-APIC-level  uhci_hcd:usb3
 17:          0          0   IO-APIC-level  uhci_hcd:usb1, uhci_hcd:usb5
 18:          0          0   IO-APIC-level  uhci_hcd:usb2
 19:     528274          0   IO-APIC-level  ehci_hcd:usb4, eth2    <---- ネットワークカードのドライバ
 20:          0          0   IO-APIC-level  skge
 21:          0          0   IO-APIC-level  Intel ICH5
NMI:          0          0
LOC:  174850361  174850374
ERR:          0
MIS:          0
$ cat /proc/ioports

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

  :
d000-efff : PCI Bus #02
  d000-d0ff : 0000:02:0d.0
  e400-e4ff : 0000:02:0b.0
    e400-e4ff : tulip   <--- ネットワークカードのドライバ
  e800-e8ff : 0000:02:05.0
    e800-e8ff : skge
fc00-fc0f : 0000:00:1f.1
  fc00-fc07 : ide0
  fc08-fc0f : ide1

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

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



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

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

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

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

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

$ /sbin/ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:11:2F:5C:F1:F2  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interrupt:22 Memory:fbffc000-0 

eth1      Link encap:Ethernet  HWaddr 00:90:CC:A2:F7:CF  
          inet addr:192.168.16.107  Bcast:192.168.16.255  Mask:255.255.255.0
          inet6 addr: fe80::290:ccff:fea2:f7cf/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:625409 errors:0 dropped:0 overruns:0 frame:0
          TX packets:230021 errors:4 dropped:0 overruns:0 carrier:4
          collisions:91599 txqueuelen:1000 
          RX bytes:602347129 (574.4 MiB)  TX bytes:42072542 (40.1 MiB)
          Interrupt:23 Base address:0xe400 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:1244 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1244 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:100994 (98.6 KiB)  TX bytes:100994 (98.6 KiB)

項目 説明
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] ゲートウェイアドレスの確認

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

auto eth1
iface eth1 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


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

ドメイン名 (例: 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 の編集 ...




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

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

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

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

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 はそれを検知するためのツールです. [(注) 北大から外へは ping, traceroute は通りません. HINES の方針.]

$ traceroute -I www.hokudai.ac.jp

※ オプションは小文字の L (エル) ではなく, 大文字の i (アイ) です.

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


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

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

$ host www.ep.sci.hokudai.ac.jp
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.4] ネットワーク・トラブルシューティング実習

ここまでの内容を理解したら, 実際にトラブルシューティングを行ってもらいます. その下準備として /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<情報実験機番号>
(例: 情報 04 → 192.168.16.104)
サブネットマスク 255.255.255.0
ネットワークアドレス 192.168.16.0
ブロードキャストアドレス 192.168.16.255
ゲートウェイアドレス 192.168.16.1
イーサネットに対する
インターフェース
eth1
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)

[付録] 2. Windows でネットワークの状態をチェックするには

[2.1] Windows でネットワークカードの状態をチェックするには

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

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

[2.2] Windows の TCP/IP の設定の確認

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

    $ ipconfig -all

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

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

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

最終更新日: 2005/11/04 (森川靖大) Copyright © 2005 inex