この演習の目的は次の三つです。
Linux pcを用いた、Network実習
Linuxの場合もWindows の場合と同様IP Network設定に必要な情報は、同じく、以下の4つです。
Networkの設定方法も、同様に次の二通りがあります。
Linuxで、Network関係の作業を行うためには、root での Loginを行う必要があります。
Linux PCの電源を入れると、画面上にloginプロンプト(1)が表示(2)されています。
LASER5 Linux XXXX.. Kernel 2.2.XXXX XXXX.. ZZZZ login:
rootでのloginを行うためには、まず、キーボードからroot
と入力し、さらに[Enter]キーを押します。
すると、今度は、パスワードの入力が要求されます。
login: root Password:
ここで、正しいパスワードを入力し、[Enter]キーを押せば、loginが成功するはずです。
このパスワードは、関係者以外の人には知らせてはいけないという約束になっているので、普通は教えられないのですが、この演習用のLinux PCのパスワードに関しては、特別に演習中にお知らせします。
なお、このパスワードは、必ず記憶してください。メモってはいけません。他人に教えること(3)も厳禁です。
唯一許されるのは、僕にコソっと尋ねることだけ(4)です。
なお、パスワードを入力している途中、画面上は特に変化がなく、[Enter]キーを押して、初めて、何らかの変化があるということに注意してください。
LASER5 Linux XXXX.. Kernel 2.2.XXXX XXXX.. ZZZZ login: root Password: Last login: XXXX .. You hove mail. [root@ZZZZ /root]#
loginに成功すると、今度は、shellプロンプトが表示されます(5)。
パスワードに誤りがあった場合は、Login incorrect
というメッセージ(これは、「Loginに失敗した」という意味です)が表示され、もう一度、loginプロンプトが表示されます。
LASER5 Linux XXXX.. Kernel 2.2.XXXX XXXX.. ZZZZ login: root Password: Login incorrect login:
失敗した場合は、もう一度、rootと入力して、今度は、正しいパスワードを入れましょう(6)。
プロンプトというのは、「入力促進記号」、すなわち、何かをキーボードから入れてくださいね」と計算機が入力を促しているということを表す表示のことです。
ある表示がプロンプトかどうかを確認するための簡単な方法は、単に[Enter]キーを入力してみることです。
すると、プロンプトであれば、ほとんどの場合、単に改行が行われ、次の行以降に再度同じ文字列(つまり、これがプロンプト)が表示されます。
逆に、異なる文字列が表示された場合は、その文字列は、プロンプトではなかった可能性があります。
shell プロンプトかを確認しておこう!!
わずかな可能性ですが、そのLinux PCのrootのパスワードが、僕のお教えしたパスワードと異なる可能性もあります。
もし、何度やっても、うまく行かない場合は、僕に申し出てください。
作業が終わったら、logoutを行う必要があります。
logoutの仕方は、単に、shellプロンプトが表示されている状態でlogout
とキーボードから入力し、[Enter]キーを押すだけです。
logoutに成功すると、画面がclearされ、再び、loginプロンプトが表示されます。
[root@ZZZZ /root]# logout
Note-PCによっては、内部時計が狂っていることがあります。そこで、dateコマンドを使って、時計を確認したり、補正したりすることを考えます。
現在、設定されている時計の内容を確認するには、dateコマンドを利用します。
[root@ZZZZ /root]# date Tue Jun 7 16:36:09 JST 2005 [root@ZZZZ /root]#
これが正しければ特に、行うことはありません。
時計が狂っている場合、補正する必要があります。
時計の補正も、dateコマンドを使用します。時計を補正する場合は、dateコマンドの後ろに、月、日、時、分、をそれぞれ2桁で、年だけは、4桁の数字で、それを続けて指定します。
なお、6月のように数値が1桁の場合は、0を補って、必ず、2桁にする必要があることに注意してください。
[root@ZZZZ /root]# date 060716552005 Tue Jun 7 16:55:09 JST 2005 [root@ZZZZ /root]#
上記の例では、「6月7日16時55分2005年」と指定するために、「060716552005」を指定しています。
なお、この内容は電源を切ると、そのまま消えてしまうので、これを保存し、次回以降は、何度も、設定せずに済むようにするには、次の、setclockコマンドを実行します。
[root@ZZZZ /root]# setclock [root@ZZZZ /root]#
もう一度、dateコマンドで、時間を確認すると良いでしょう。
Note-PCの場合Networkへ接続するためには、PC Cardが必要です。
一般に、PC Cardは、単にPC Card Slot (7)に刺すだけです。
しかし、Note-PCによって(8)は、Cardを刺しただけでは、だめな場合があるので、次の作業を行ってください。
Cardを刺すと、普通は、「ピッ」、「ピッ」と比較的、澄んだ音(9)が刺した後の直後に一回、そして、その後しばらくして、一回と合計、二度鳴るはずです。
これは、Note-PCが、Cardを認識し、利用できるようになったことを示しています。
こうなれば、実は何も問題はないのですが、この「ピッ」という音が鳴らない場合があります。
これは、Note-PCが、Cardの認識に失敗した場合に起きます。
そこで、面倒を避けるために、とりあえず、Cardの認識に成功しているか失敗しているかに無関係に、Cardを一度、強制的に切り離し、再度、強制的に認識を要求させることにします。
Cardを強制的に切り離すには、cardctl eject
というコマンドを利用します。
[root@ZZZZ /root]# cardctl eject [root@ZZZZ /root]#
通常は、この場合も、「ピッ」、「ピッ」となります(10)。
もちろん、鳴らないこともありますが、それでも問題が生じているかどうかは判断できません。
なぜなら、内臓スピーカーの音量が最低限に設定されその音があまりにも小さくて、聞き取れない可能性もあるからです。
本当に問題が生じているかどうかは、次のPC Cardの認識を試してみないと、分からないということです。
今度は、Cardを認識させるコマンドを実行します。
それは、cardctl insert
です。
[root@ZZZZ /root]# cardctl insert [root@ZZZZ /root]#
通常は、この場合も、「ピッ」、「ピッ」となります。
なお、Cardが認識されている状況で、cardctl insert
を行うと、Error Messageが表示され、失敗します。
[root@ZZZZ /root]# cardctl insert ioctl(): Device or resorce busy [root@ZZZZ /root]#
Cardが認識できているかどうかの確認は、ifconfig eth0
で行います。
Cardがちゃんと認識されている場合は、MAC Address ( HWaddrの後ろに表示されている:で区切られた6つの16進2桁の数値のことです)が表示されます。
[root@ZZZZ /root]# ifconfig eth0 eth0 link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX UP .. ... [root@ZZZZ /root]#
カードの認識に失敗した場合は、Error Messageが出力されます。
[root@ZZZZ /root]# ifconfig eth0 eth0: error fetching interface information: Device not found [root@ZZZZ /root]#
DHCPによる設定を行うには、dhcpcdコマンドを実行します。
[root@ZZZZ /root]# dhcpcd [root@ZZZZ /root]#
dhcpが実行されているかどうかを確認するには、次のpsコマンドを利用すると良いでしょう。
[root@ZZZZ /root]# ps auxww | grep dhcpcd | grep -v grep root 15392 x.x x.x xxx xxx ? S xx:xx x:xx dhcpcd [root@ZZZZ /root]#
この様に、一行出ればOkeyです。
もし、dhcpcdが動いていなければ、一行も出ないでしょう。
dhcpcdにより、設定が行われていれば、次のコマンドを実行することによって、その設定内容が確認できると思います。
ip addressとsubnet maskを確認するには、先ほど紹介したifconfig
を利用します。
[root@ZZZZ /root]# ifconfig eth0 eth0 link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX inet addr: 192.168.3.xx Bcast: 192.168.3.255 Mask: 255.255.255.0 UP .. ... [root@ZZZZ /root]#
先ほどとの違いは、二行目に、ip addrで始まる行が増えていることで、これによって、次の情報が得られます。
192.168.3.xxとなっています。
255.255.255.0となっています。
default gatwayを知るには、netstat
コマンドあるいは、route
コマンドを実行します(11)。
[root@ZZZZ /root]# netstat -nr Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.3.0 * 255.255.255.0 U 0 0 0 eth0 127.0.0.0 * 255.0.0.0 U 0 0 0 lo 0.0.0.0 192.168.3.165 0.0.0.0 UG 0 0 0 eth0 [root@ZZZZ /root]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.3.0 * 255.255.255.0 U 0 0 0 eth0 127.0.0.0 * 255.0.0.0 U 0 0 0 lo 0.0.0.0 192.168.3.165 0.0.0.0 UG 0 0 0 eth0 [root@ZZZZ /root]#
ここで、通常は3行表示されますが、この中でdefault gatewayと関係するのは、3行目の0.0.0.0
で表示されている行です。特に、default gatewayのaddressは、その行の左から二番目の場所にあるもので、この例では、192.168.3.165
となっています。
最後の情報は、Name Serverのaddressです。これは、実は、/etc/resolv.conf
という名前のファイルの中に保存されています。したがって、この内容を見るには、次のcatコマンドを利用します。
[root@ZZZZ /root]# cat /etc/resolv.conf search xxx.xxx.xx nameserver 192.168.3.1 [root@ZZZZ /root]#
ここでは、二行目のnameserver
で始まる行だけが重要で、その左から二番目にある192.168.3.1
がname serverのip addressです。
上記のコマンドで、DHCPを利用して、4つの情報を入手できたわけですから、これを、ちゃんとメモして置きましょう。
linuxでのnetwork関連のコマンドには、どうゆうわけだか'-n'というオプションがついていることが多い。例えば、'netstat -nr', 'route -n', 'traceroute -n', 'arp -an'等である。
これがどんな意味があるかは、実は、'-n'を付けないで、それぞれのコマンドを実行してみれば、一目瞭然である。
つまり、'-n'がついている場合は、IP Aaddress (数字の: numeric )が、そうでない場合は、domain nameが表示されるようになっているわけだ( cf. man netstat )。
通常の場合、無味乾燥なIP Addressよりは、意味のある英単語が並ぶ、domain nameの方が理解しやすいことは事実だが、次の二つの理由により、Network管理者は、これらのコマンドに'-n'を付けることを好む。
一つ目は、Network管理者は、IP Addressを把握したがるということであり、Domain Nameより、IP Address重要な場合が多いということが挙げらえる。
二つ目は、このDomain Nameの表示は「高くつく」ということであり、それが嫌いなものも多いということである。この「高くつく」というのは、Domain Name表示が、実は、逆引というDomain Name Serverの機能を利用して実現されているのだが、まず、それだけで十分に遅くなるというのが一点、そして、管理者が、これらのコマンドが出力する情報が欲しい時は、往々にしてNetworkトラブルがある状況でのことであり、そのサービスが受けられないことが多々あるということである。そのような場合、そのサービスを受けようとして、retryを繰り返すので、表示は劇的に遅くなる。つまり、トラブル時に焦っている時に表示が遲いといる非常に嫌な状況になってしまうわけだ。
もちろん、Network管理者といえども、何時でもトラブル対策におわれているわけではないが、トラブル時のイライラを一度でも経験してしまうと..結局'-n'を付ける習慣を身に付けざるを得なくなるわけだ...。
DHCPが利用できる場合は、dhcpcdで簡単に設定可能なわけですが、手動で設定する場合は、dhcpcdは使いません。また、すでに、dhcpcdが動いていると、手動で設定した値が、dhcpcdによって、書き換えられてしまうこともあります。
そこで、dhcpcdを終了させる方法を説明します。
まず、前回紹介したpsコマンドを利用して、dhcpcdの動作を確認します。もし、psで、dhcpcdが表示されていなければ、特に止める必要もないわけです。
[root@ZZZZ /root]# ps auxww | grep dhcpcd | grep -v grep root 15392 x.x x.x xxx xxx ? S xx:xx x:xx dhcpcd [root@ZZZZ /root]#
もし、例の様に、dhcpcdが動いている場合は、これを止めるためにkill
コマンドを利用します。
ただし、killコマンドを利用して、dhcpcdを止めるためには、実は、dhcpcdのプロセス ID
を知る必要があります。
実は、このプロセスIDは、上記のpsでの出力の中の、左から二番目に表示されている数で、この例では、15392
になっています。
そこで、これを利用して、次のようにkillコマンドで、dhcpcdを停止することができます。
[root@ZZZZ /root]# kill 15392 [root@ZZZZ /root]#
ここで、killの後に書いてある15392は、psで調べた、dhcpcdのプロセスIDです。
killコマンドで、dhcpcdの停止に成功していれば、もう一度psを実行しても、dhcpcdが現れないはずです(確かめてみましょう)。
ここでは、Networkに関係する、いくつかのコマンドを説明します。
とりあえず、dhcpcdを起動し、通信できる状態にして、以下のコマンドを試してみなさい。
MS-Windowsと同様pingコマンドが利用できます。
pingコマンドの後に、通信の宛先( IP Addressまたは、Domain Name )を指定することによって、そことの通信が可能かどうかを判定する。
[root@ZZZZ /root]# ping 133.43.100.130 PING 133.43.100.130(133.43.100.130) from 192.168.3.xx : 56 data \ byte 64 bytes from 133.43.100.130: icmp_seq=0 ttl=238 time=76.9 ms 64 bytes from 133.43.100.130: icmp_seq=1 ttl=238 time=41.3 ms 64 bytes from 133.43.100.130: icmp_seq=2 ttl=238 time=86.9 ms ... [root@ZZZZ /root]#
windowsと異なり、放っておくと、何行もで続けることに注意してください。
表示を途中で止め(て、プロンプトを出し)たい場合は、Control-C ( [Ctrl]キーを押した状態で、[C]キーをポンと押す)を入力すれば止まります。
次のaddressを試してみなさい。
Windowsでは、tracertでしたが、linuxでは、tracerouteコマンドとなります。
tracerouteコマンドの後に、通信の宛先を指定することによって、そことの通信をするときに、通過するRouterのIP AddressのListを表示する。
[root@ZZZZ /root]# traceroute -n www.goo.ne.jp traceroute to www.goo.ne.jp (211.14.13.255), 30 hops max, 30 byte \ packets 1 192.168.3.165 6.22 ms 7.12 ms 5.95 ms 2 192.168.0.254 7.53 ms 6.69 ms 7.29 ms 3 43.240.175.252 8.35 ms 7.69 ms 7.91 ms 4 10.18.5.41 7.98 ms 8.22 ms 8.53 ms 5 10.18.5.17 8.83 ms 9.02 ms 8.55 ms ... [root@ZZZZ /root]#
このコマンドは、放っておけば、普通は止まりますが、長い時間がかかり、途中で、止めたいと思った場合は、pingと同様Control-Cで止めることができます。
arpも、Windowsと共通です。
これによって、IP AddressとMAC Addressの対応関係を知ることがでます。
[root@ZZZZ /root]# arp -an ? (192.168.3.165) at xx:xx:xx:xx:xx:xx ? (192.168.3.yy) at xx:xx:xx:xx:xx:xx [root@ZZZZ /root]#
ここで、左側の括弧の中が、ip addressで、右側の:で区切られた6つの16進2桁の数がMAC Addressです。
ssh :主にunix hostを、Networkを経由して操作する場合に利用される。
telnetと違って、通信が暗号化されるので、より安全。
scp :主にunix hostとのNetworkを経由したファイルのやり取りに利用される。
ftpと違って、通信が暗号化されるので、より安全。
linuxでも、手動でNetworkの設定を行う方法を説明します。
とりあえず、dhcpcdを停止し、ip addressや、default gatewayの設定が失われていることを確認しなさい。
また、name serverの設定は、dhcpcdを止めても、clearされない可能性があるので、次のコマンドを実行し、強制的に、name serverの設定をclearしなさい。
[root@ZZZZ /root]# echo > /etc/resolv.conf [root@ZZZZ /root]#
ip addressとsubnet maskの設定(これは、同時に行う)は、次の様にifconfig
を利用して行います。
[root@ZZZZ /root]# ifconfig eth0 192.168.3.xx netmask \ 255.255.255.0 [root@ZZZZ /root]#
ここでは、ip addressとして、192.168.3.xxを、subnet maskとして、255.255.255.0がそれぞれ指定されています。
もちろん、実習では、先ほど、DHCPで取得し、メモした情報を利用しましょう。
default gatewayの設定は、routeコマンドを使います。(13)。
[root@ZZZZ /root]# route add -net 0.0.0.0 gw 192.168.3.165 [root@ZZZZ /root]#
ここで、default gateway addressとして、192.168.3.165を指定しています(14)。
もちろん、実習の際は、メモを参照しましょう。
name serverの設定は、ファイル/etc/resolv.confに、そのip addressを書き込むことで行いますが、まだ、ファイルの変更方法を学んでいない(15)ので、次の方法で代用することにします。
[root@ZZZZ /root]# echo nameserver 192.168.3.165 > \ /etc/resolv.conf [root@ZZZZ /root]#
以上の様にして、4つの情報を指定することができることが理解できたと思います。
そこで、以下に、この方法を利用して、実際にip addressを設定してみましょう。
arp -aを実行し、現在のarp tableには、何もないことを確認しなさい。
arp -aを実行し、通信相手のIP Addressや、MAC Addressを確認しよう。
traceroute -n www.goo.ne.jpなどとして、自分のPCから、gooまで、どれくらいのrouterを経由するかを確認しなさい。
このときについでに、gooのip addressも確認しておくこと。
この状態で、PC同士は、pingが可能だが、外(例えば、goo )とは通信できないことを確認しよう。
pingを使ったときに、ip addressを指定した場合と、www.goo.ne.jpとした場合のメッセージの違いも確認しよう。
同様にping/tracerouteを利用して、今度は、ip addressを指定した場合にのみ、gooと通信できることを確認しよう。
domain name ( www.goo.ne.jp )をつけたらどうなるだろうか?
やはり、ping/tracerouteで、gooと通信( IP Address, Domain Nameの両方)を確認しよう。
また、tracerouteで-nをつけた場合に、どうなるかも確認すること。
PC間を結ぶには、HUBだけがあれば十分です。いくつかのグループ分かれて、Hubに自分のPCを接続し、それぞれ、IP Address (とNetmask)を手動で設定して、PC間の通信ができることを確認しなさい。
当然のことながら、Routerが接続されていないので、gooとは通信できないことも確認しよう。
二人一組になって、Cross Cableで接続し、Hubと同様な実験を行いなさい。
windows同様、linuxでも、いきなり電源を切ってはいけない。
電源を切るには、次のコマンドを実行しよう。
[root@ZZZZ /root]# shutdown -h now ......
しばらくすると、自動的に電源が切れるはずです。
電源を切ったら、次の人に代わってあげよう。