ネットワーク管理者をやっていると, 「ネットワークにつながらなくなった」, 「つながらないからどうにかして」という要望・悲鳴をよく聞きます. レクチャーで話した通り, 通信処理は階層構造を成しているので, ネットワークにつながらない場合は, それぞれの階層が正常に動いているかどうかチェックする必要があります. 今回の実習では「つながらなくなった場合の対処方法」を実際にやってみます.
「インターネットにつながらない」という悲鳴は, 大抵このネットワークインターフェース層で物理的に何らかの障害が起きている場合におこりがちです. 急にインターネットにつながらなくなったら, まずネットワークインターフェース層をチェックすると良いでしょう. ケーブルやハブ, ネットワークカードといったハードウェアが正常に動いているかどうか確認しましょう.
チェック項目 | チェック方法 |
---|---|
配線の確認 | 自分の PC につながっているLANケーブル(図.1 参照)がハブにつながっているか調べる. |
ケーブルの確認 | ケーブルが内部で断線している可能性があるので ケーブルを他のものに取り換えてみる. 特に自作したケーブルでは起こりやすい現象. |
ハブの電源 | ハブの電源が切れていないか確認. |
ハブまわり | ハブの「リンク」ランプが付いているか確認. 正常に動作している場合, このランプは点灯する. |
I/O パネルの LAN ケーブル挿し口 | リンクランプが点灯しているかを確認する. このランプが点灯/点滅していれば, そこまでは信号が届いていると確認できる. |
ネットワークカードの接続確認 | ネットワークカードを挿し直す. 挿し直す場合は筐体の電源を切り,電源ケーブルを外してから行う. |
ネットワークカードが計算機に認識されていることを確認します.
$ lspci -vb | grep Ethernet
そうすると, 例えば以下のような情報が表示されます.
03:00.0 Ethernet controller: Qualcomm Atheros AR8161 Gigabit Ethernet (rev 10) Subsystem: ASUSTeK Computer Inc. AR8161 Gigabit Ethernet 06:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection |
出力されたメッセージの中に, Ethernet controller が存在しない場合は, ネットワークカードが計算機上で認識されていないということになり, 故障あるいは破損の可能性があります 情報実験機には 2 つのネットワークカードがあるはずなので, 上記のように 2 つ存在していなければなりません.
ネットワークカードが複数ある場合はどのネットワークカードがどのインターフェースに割り当てられているかを確認しなければなりません.
インターフェースの認識のためにLAN ケーブルをネットワークカードから一度抜いて, もう一度指し直してください. このときカーネルのメッセージバッファを確認することで認識したインターフェースがどれかがわかります.
$ dmesg | grep enp
[ 12.496659] e1000e: enp6s0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx |
認識したインターフェイスが enp3s0 の場合は赤色の部分が enp3s0 となります.
インターネット層では IP アドレスによって PC を識別します. そのためこの層でチェックする項目としては, IP アドレス等の TCP/IP 通信で必須となる設定項目が正しく設定されているかのチェックとなります.
まず IP アドレス, サブネットマスクを確認ですが, ip コマンドを使います. IP アドレス, サブネットマスクが正しく設定されているか確認します. [1.1.3] で確認したインターフェイスの番号を用いて以下のように入力します.
$ ip addr show enp6s0
例: joho14 の場合 3: enp6s0: |
このコマンドの結果の概要をまとめた表を以下に示します.
項目 | 説明 |
---|---|
enp6s0 | イーサネットに対するインターフェースを意味する. |
link/ether | MAC アドレスを示している.. ネットワークカード(NIC) が正しく認識されていれば, NIC の MAC アドレスが表示される. |
inet | 自分の IP アドレスを表している. ネットワーク管理者から割り当ててもらう番号.後ろについている「/24 」はサブネットマスクを表しており,数字の先頭から24 bit までがネットワーク部,それ以降はホスト部を示す.所属する LAN によって一意に決まる. |
brd | ブロードキャストアドレスを表している. 所属する LAN によって一意に決まる. |
認識した enp6s0 のインターフェースに IP アドレス 192.168.16.114 が割り振られています.
次にゲートウェイアドレスの確認を行います.[1.2.1] と同様にip コマンドを使います. ここで自分の計算機にネットワークの外と通信する時に用いられるゲートウェイアドレス(ルータの IP アドレス)が設定されているか確認します.
$ ip route
例: joho14 の場合 default via 192.168.16.1 enp6s0 onlink 192.168.16.0/24 dev enp6s0 proto kernel scope link src 192.168.16.114 |
実際の通信では以下のことを行っています.
では隣の計算機までの通信経路を考えてみよう.例えばjoho13 がjoho14 と通信したいとする.その場合,
となる.これを実際に確認してみる.
$ ip route get 192.168.16.1<隣の情報実験機番号> |
<-- (例) joho14 -> 192.168.16.114
|
例: joho13 => joho14 の場合 192.168.16.114 dev enp6s0 src 192.168.16.113 cache |
となる.これを実際に確認してみる.
$ ip route get 133.50.160.51
例: joho14 => www.ep.sci.hokudai.ac.jp の場合 133.50.160.51 via 192.168.16.1 dev enp6s0 src 192.168.16.114 cache |
ネットワークにつながるためには /etc/network/interfaces にしかるべきネットワークパラメタを設定しなくてはなりません. このファイルの編集は root しかできません. ファイルを編集したあとに, ネットワークを起動します. ここでは内容を見て確認してみて下さい.
$ less /etc/network/interfaces
例: # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug enp6s0 iface enp6s0 inet static address 192.168.16.114/24 gateway 192.168.16.1 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 133.87.45.70 133.87.45.66 133.87.1.11 dns-search ep.sci.hokudai.ac.jp |
書き直す場合は以下のように vi で編集し, その後再起動します. ただし, 書き直したり再起動するのは システムの管理者権限が必要です. 今回の実習の最後に実際にネットワークに関するトラブルシューティングを 行ってもらいますので, 覚えておいてください. 実際にinterfaces を編集する際にはネットワークインターフェースを一度停止してから編集する必要があります.
# ifdown enp6s0
ifdown はネットワークインターフェースを停止するコマンドです. 引数にインターフェースを指定します. 停止した後,実際に編集し, その後ネットワークインターフェースの再起動を行います.
# vi /etc/network/interfaces ... interfaces の編集 ... # ifup enp6s0
ifup はネットワークインターフェースを起動するコマンドです. 引数にインターフェースを指定します. これで編集した内容を読み込むことができます.
基本的にインターネットでは計算機の区別を IP アドレスによって行います. しかしそれでは覚えにくいので, 「ドメイン名」という名前も用意されています. ドメイン名 (例: www.ep.sci.hokuda.ac.jp) と IP アドレス (例: 133.50.160.51) の対応関係を知るためには, その対応表を持っている DNS サーバの IP アドレス が正しく設定されている必要があります. (何故, DNS サーバの「ドメイン名」 ではダメなのか, 分かりますか?)
DNS サーバのIPアドレスは /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 |
ここでorange.ep.sci.hokudai.ac.jp はwww.ep.sci.hokudai.ac.jp の別名です.
自分の 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 はそれを検知するためのツールです. 以下は www.hokudai.ac.jp 宛てに通信が届いた場合の結果です. (終了するには Ctrl + C を押してください).
$ traceroute www.hokudai.ac.jp
例: traceroute to www.sci.hokudai.ac.jp (133.50.175.125), 30 hops max, 60 byte packets 1 192.168.16.1 (192.168.16.1) 0.125 ms 0.118 ms 0.163 ms 2 ringo.ep.sci.hokudai.ac.jp (133.87.45.1) 0.545 ms 0.939 ms 1.139 ms 3 133.50.160.1 (133.50.160.1) 0.533 ms 0.530 ms 0.634 ms 4 133.50.162.246 (133.50.162.246) 0.581 ms 0.669 ms 0.668 ms 5 133.50.162.241 (133.50.162.241) 1.146 ms !X * * |
ここで, "192.168.16.1" は情報実験機のゲートウェイアドレス, "ringo.ep.sci.hokudai.ac.jp" は 我々の地球惑星科学分野の上位のネットワークのゲートウェイです.それ以降のIP アドレスはHINES の管理する 機器のIP アドレスになります.
ここまでの内容を理解したら, 実際にトラブルシューティングを行ってもらいます. その下準備として /etc/network/interfaces と /etc/resolv.conf のバックアップを行ってください.
$ cp /etc/network/interfaces ~/interfaces.bak $ cp /etc/resolv.conf ~/resolv.conf.bak
まず, 実際にネットワークパラメータを変更して, ネットワークに接続できるか確認してみましょう.ネットワークパラメータの編集にはroot の権限が必要なので担当のVTA にお願いしましょう.
/etc/network/interfaces の編集 # ifdown enpXsY # vi /etc/network/interfaces 編集後 # ifup enpXsY ping を打ってweb サーバと接続できるか確認 # ping www.ep.sci.hokudai.ac.jp |
<-- "X, Y" は[1.1.2] - [1.2.1] で確認したインターフェイスの番号.
資料中だと,"X=6, Y=0"
|
ネットワークパラメータを変更した場合にはうまく接続できなくなります.確認後は元のパラメータに直して置きましょう.
それでは,VTA がネットワークに繋がらない状態にします(カンニング厳禁!). 以下に情報実験機の各ネットワークパラメータの正しい値を記しますので, これらをチェックして再びネットワークに接続してください. 管理者権限は今回のこの実習に限り VTA から借りて作業を行います.
項目 | 値 |
---|---|
IP アドレス | 192.168.16.1 <情報実験機番号>(例: joho 04 -> 192.168.16.104 ) |
ゲートウェイアドレス | 192.168.16.1 |
イーサネットに対する インターフェース |
enpXsY (X,Yに数字が入る) |
DNS サーバ |
|
再び無事にネットワークへの接続が確認できれば, 本日必修の内容は終了です. お時間の余った方は付録へどうぞ.
最終更新日: 2019/05/10 (吉田 辰哉) | Copyright © 2019 inex |