Powered by SmartDoc

20031107 (2003/11/07)
Ver. 1.1

2003年11月7日
栗野 俊一
kurino@math.cst.nihon-u.ac.jp
http://edu-gw2.math.cst.nihon-u.ac.jp/~kurino/2003/ccna-ex/ccna-ex.html
情報通信ネットワーク論(演習)2003/11/07 の資料

目次

目的

この演習の目的は通りです。

ftpの利用(新規)
必要なファイルをNetwork経由で取り寄せるためのftpコマンドの使用法を学びます。
LinuxのNetwork設定の保存(新規)
Network設定をviを利用して作成し、起動時に自動的に設定する方法を学びます。
viコマンド( Editor )の簡単な利用法(新規)
Unix系OS ( Linuxを含む)で利用されているviというeditorの基本的な利用法を学びます。
rpmの利用法(新規)
(RedHat系) LinuxでのSoftのInstall方法として、rpmの利用法について触れます。

Linux での設定方法の保存

これまでは、Linuxの設定を毎回、手動で新規に行なって来ましたが、これらの設定は、特定な設定ファイルに保存することによって、電源on時等に、自動的に行なうことができます。

unix 流の設定方法

unix ( linuxもunixの一つです.. )での設定方法の特徴は、設定ファイルがあり、それが人間にも読める(と、普通は書くこともできます)ことです。

したがって、問題があれば、「見て直す」ことができますし、また、他の設定を「見る」ことにより、仮に、あまり内容が解らなくても、自分用に「めのこ」で直すこともできます。

一つのアプリケーションに関しては、原則として、一つのファイルが対応しているので、一つのファイルを変更しただけで、他のシステムが変になることもない(これをモジュラリティと呼びます.. )ので、安心して試すことも可能です。

唯一、難点を言えば、「必要な設定ファイルがどこにあるかが解らない」点でしょうか。最近は、ある程度、ルール化されてきているのですが、なかなか統一とは行かないようです。

今回の実習では、この様な設定ファイルの変更を行なうことにより、設定を保存することができることを学びます。

実験1: 設定ファイルの確認

まず、Linux PCの電源をいれましょう。そして、実験結果を明確にするために、まず、既存の設定ファイルの存在を確認します。

次のように、lsコマンドを実行しましょう。

Linux-X の Network 設定ファイルの存在確認
[root@Linux-X /root]# ls -al \
    /etc/sysconfig/network-scripts/ifcfg-eth0
-rwxr-xr-x 1 root root 38 Dec 27 2001 /etc/sysconfig/network-s
cripts/ifcfg-eth0
[root@Linux-X /root]# 

このような表示(1)がされる場合は、既に、設定ファイル( /etc/sysconfig/network-scripts/ifcfg-eth0 )が存在するので、次のようなcatコマンドで、この内容を確認してみましょう

Linux-X の Network 設定の内容の確認
[root@Linux-X /root]# cat \
    /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
IPADDR=192.168.99.1
NETMASK=255.255.255.0
NETWORK=192.168.99.0
BROADCAST=192.168.99.255
ONBOOT=yes
[root@Linux-X /root]# 

この例では、次のような設定になっていることを表しています。

IP Address
192.168.99.1
Netmask
255.255.255.0
Network
192.168.99.0
Broadcast address
192.168.99.25

内容を確認したら、思い切って、次のrmコマンドで、この設定ファイルを削除しましょう。

Linux-X の Network 設定ファイルの削除
[root@Linux-X /root]# rm \
    /etc/sysconfig/network-scripts/ifcfg-eth0
[root@Linux-X /root]# 

削除が終ったら、lsコマンドを使って、本当になくなったかどうかを確認しましょう。

Linux-X の Network 設定ファイルの削除確認
[root@Linux-X /root]# ls -al \
    /etc/sysconfig/network-scripts/ifcfg-eth0
ls: /etc/sysconfig/network-scripts/ifcfg-eth0: No such file or \
    directory
[root@Linux-X /root]# 

もちろん、最初から設定ファイルが無かった場合も、この結果と同じになります。

次にNetwork CardをPCMCIA Slotに挿入し(2)、ifconfigを利用して、Network interface eth0に何も設定されていないことを確認(3)してください(4)

Linux-X の eth0 の設定
[root@Linux-X /root]# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:D0:68:00:02:32  
          UP BROADCAST RUNNING  MTU:1500  Metric:1
          RX packets:137743 errors:0 dropped:0 overruns:0 frame:1
TX packets:110621 errors:5 dropped:0 overruns:0 carrier:1
          collisions:19704 txqueuelen:100 
          Interrupt:5 Base address:0xd000 
[root@Linux-X /root]# 

そして、最後に、ケーブルを既存のNetworkに接続し、dhcpcd (または、dhcpclient )コマンドを実行し、DHCP経由で、IP Addressが取得されることを確認してください。

Linux-X の Network 接続
[root@Linux-X /root]# dhcpcd
[root@Linux-X /root]# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:D0:68:00:02:32  
inet addr:192.168.3.43 Bcast:192.168.3.63 Mask:255.255.255.192
          UP BROADCAST RUNNING  MTU:1500  Metric:1
          RX packets:140922 errors:0 dropped:0 overruns:0 frame:1
TX packets:112763 errors:5 dropped:0 overruns:0 carrier:1
          collisions:19836 txqueuelen:100 
          Interrupt:5 Base address:0xd000 
[root@Linux-X /root]# 

上記の例では、192.168.3.43というip addressが取得できています。

  1. もちろん、サイズや日時はこれとは異なるかもしれません。逆に、存在しない場合の表示は、この後に述べられます。
  2. 既に、Cardを挿してあった場合は、cardctl ejectで抜いておきます。
  3. Network Cardが認識されていなかった場合は、cardctl insertとしましょう。
  4. 設定ファイルが起動時に利用されることを確認するために、再起動してみるという手もあります。その場合はrebootコマンドを利用します。

実験2: anonymous ftp を利用する

次に、設定ファイルを利用して、Linux PCの設定を行ないますが、いきなり設定ファイルを作成するのは大変なので、既存の設定ファイルを転用します。

その設定ファイルをftpコマンドを利用して、取得します。

まず、ftpコマンドを利用して、ftpサーバと接続します。

するとNameとPasswordを要求されますので、Nameには、ftpを、Passwordは、礼儀のため(5)に、自分のe-mail addressを入力しましょう(6)

ftp 接続
[root@Linux-X /root]# ftp 192.168.3.49
Connected to 192.168.3.49 (192.168.3.49).
220 h31.private.media.cst.nihon-u.ac.jp FTP server (Version \
    wu-2.6.1-18) ready.
Name (192.168.3.49:root): ftp
331 Guest login ok, send your complete e-mail address as \
    password.
Password:
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

接続に失敗したら、一旦、quitコマンドで、ftpを終了し、もう一度、やり直して下さい。

ftp接続に成功したら、早速、設定ファイルを取り寄せましょう。

まず、おまじないのbinコマンドを実行します。そして、ファイルのある場所に移動するためにcdコマンドを実行します。次に、最初の設定ファイルであるifcfg-eth0.DHCPというファイルがあるかどうかlsコマンドで確認します。

設定ファイルの確認
ftp> bin
200 Type set to I.
ftp> cd pub
250 CWD command successful.
ftp> ls ifcfg*
227 Entering Passive Mode (127,0,0,1,52,113)
150 Opening ASCII mode data connection for directory listing.
-rwxr-xr-x   1 root     50             38 Nov 28 18:53 ifcfg-eth0
-rw-r--r-- 1 root 50 111 Nov 28 18:57 ifcfg-eth0.192.168.99.1
-rwxr-xr-x 1 root 50 38 Nov 28 18:56 ifcfg-eth0.DHCP
226 Transfer complete.
ftp>

みつかったら、早速getコマンドを利用して取り寄せます。

設定ファイルの取り寄せ
ftp> get ifcfg-eth0.DHCP
local: ifcfg-eth0.DHCP remote: ifcfg-eth0.DHCP
227 Entering Passive Mode (127,0,0,1,182,28)
150 Opening BINARY mode data connection for ifcfg-eth0.DHCP (38 \
    bytes).
226 Transfer complete.
38 bytes received in 0.00857 secs (4.3 Kbytes/sec)
ftp>

取り寄せに、成功したら、quitで、ftpを終了し、再度、本当にとれているかをlsコマンドで確認しましょう。

設定ファイルの取り寄せの確認
ftp> quit
221-You have transferred 38 bytes in 1 files.
221-Total traffic for this session was 1292 bytes in 1 transfers.
221 Thank you for using the FTP service on \
    h31.private.media.cst.nihon-u.ac.jp.
[root@Linux-X /root]# ls -l ifcfg-eth0.DHCP
-rw-r--r-- 1 root root 38 11 29 05:15 ifcfg-eth0.DHCP
[root@Linux-X /root]# 

この設定ファイルは、DHCPを利用して、Network Cardを動的に自動設定を行ないます。一応、catコマンドで、内容を確認してみましょう。

DHCP での設定
[root@Linux-X /root]# cat ifcfg-eth0.DHCP
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
[root@Linux-X /root]# 

これで、内容は問題ないのですが、これがちゃんと設定ファイルとして、働くには、この内容が、実験1で触れたように/etc/sysconfig/network-scripts/ifcfg-eth0に入っていなければなりません。そこで、cpコマンドを利用して、このDHCPを利用する設定を、/etc/sysconfig/network-scripts/ifcfg-eth0に書き込みます。

設定ファイルのコピー
[root@Linux-X /root]# cp ifcfg-eth0.DHCP \
    /etc/sysconfig/network-scripts/ifcfg-eth0
[root@Linux-X /root]# 

これで、DHCP Serverを利用して、自動的にIP Addressを取る設定が可能になったので、早速、rebootして、確認してみましょう。

reboot
[root@Linux-X /root]# shutdown -r now

Linux起動後loginしなおして、確かに、ip addressを取得していることを確認してみてください。

  1. 実は、ほとんどの場合、何をいれても構いません。稀に、ちゃんとe-mail addressのように見えるものをいれないと、弾かれることもありますが...。
  2. エコーバック(自分の入力されたものが、そのまま画面に表示されること.. )されないので、間違える可能性もありますが、全注で触れた通り、本来は何をいれてもかまわないので、あまり気にする必要はありません。

実験3: 別の設定ファイルを利用してみる

今度は、実験2と同様にして、ifcfg-eth0.192.168.99.1を入手し、それを設定ファイルとして設定してみましょう。

そして、rebootする(7)と、確かにeth0に192.168.99.1が設定されることも確認してください。

  1. DHCP経由でないことを確認するためにも、また、同じip addressを持つHostが同じNetwork内に存在して、Networkを混乱させないためにも、この設定でのreboot時は、ケーブルを抜いてから、試してみてください。

実験4: ifup/ifdown コマンドの利用

実験3では、設定が、電源off後も有効である( rebootしても設定が生き残る)ことを確認するためにrebootを繰り返しましたが、実際は、rebootしなくても、設定の内容を変更した後に、その変更を反映させることが可能です。

そのためのコマンドがifup/ifdownコマンドです。

再び、設定をDHCP経由で入手できるようにするために、次のようにコマンドを実行してみてください。

なお、ifdown後にケーブルをつなぎましょう。

設定変更の反映
[root@Linux-X /root]# cp ifcfg-eth0.DHCP \
    /etc/sysconfig/network-scripts/ifcfg-eth0
[root@Linux-X /root]# ifdown eth0
[root@Linux-X /root]# ifup eth0

そして、確かに、設定が変更されていることを確認しましょう。

実験5: vi コマンド ( Editor ) の簡単な利用法

このままでは、あらかじめ決められた内容にしか変更できません。できれば、直接設定ファイルの内容が変更したいものです。

このために、利用するコマンドがファイル編集コマンドviです。

viコマンドは、起動時に、編集対象とするファイルの名前を指定します。すると、そのファイルの内容が表示されます。

この状態で、h [左], j [下], k [上], l [右]のキーを押すと、それぞれの方向にカーソルが移動します。

この状態で、x [文字削除]を押すと、カーソルのある場所の文字が消えます。

また、i [挿入]を押し、追加したい文字を入力後にESCキーを押すと、文字を追加することが可能です。

なお、最後にZZ [終了]を押せば(8)viを終了することができます。

また、同時変更内容を反映させることができます。

なお、編集内容をキャンセルして、終了するには、:q!の三文字を入力後[Enter]キーを入力します。

実際に、viを起動し、IP Addressの設定を変更し、更に、ifup/ifdownを利用して、その設定が、実際に反映されることを確認しましょう。

vi の起動
[root@Linux-X /root]# vi \
    /etc/sysconfig/network-scripts/ifcfg-eth0
  1. これは、大文字のZを続けて二回押すってことです。

実験 6: DHCP Server を作ろう

DHCP Serverは、DHCP ( Dynamic Host Configration Protocol :動的なホストの設定手順)を利用して、Client Hostに、Netowrk設定に必要な情報を提供するServiceを行なうServerです。

Network Server の構築手順

DHCP ServerのようなNetwork Serverを構築する手順は、既に、Network設定の終ったLinux PCがあれば、ほぼ、次のような感じになります。

入手

Serverは、特殊なProgram ( Server Program )が動いているHostというだけです。

これが、あらかじめHost上に用意されていれば、問題ありませんが、そうでなければ、ftp等を利用して、Network経由で、入手します。

Install

Serverは、Linux上のServer Program ( Server Software )として実現されています。したがって、そのProgram ( Soft )を、まず、Linux PCに、Installする必要があります。

RedHat系のLinuxでは、そのために、rpm形式のファイルが提供されており、rpmコマンドを実行することにより、簡単にinstallできます。

Configuration

Serverは、どれも同じ機能を持ちますが、どれも同じ振舞をさせるわけではありません。むしろ、そのServerが設置されているNetworkによって、異なる振舞が要求されるのが普通(9)です。

その振舞を変更するには、そのServer Programに対応した、設定ファイルを、望みの振舞になるように作成する必要があります。

この作業は、やはり、vi等を利用して、行ないますが、ほとんどの場合は、一から作成するのではなく、あらかじめ用意されている雛型ファイルに自分なりの変更を行なうことで、実現できます。

Statrup

InstallとConfigurationができたら、後は、Serviceを開始するだけです。

RedHat系では、開始や終了にも、一応の規則がありますので、その規則を学びましょう。

Server を立るのは大変か ?

結論から言えば、「Serverを作る」事自身は、あまり難しいことはありません。実際、この演習で学ぶように、「Serverを作る」ということは単に、「Serverとして動くプログラムを実行する」だけのことであり、これは、普通に動くプログラムを実行するとのあまり違いはないからです。

それでは、単純に「そんなの簡単さ」と言えるのでしょうか?実は、Serverの問題は、Server開始して、Serviceを始めることよりもむしろ、Serviceを始めた後のServer運用にあるのです。

確かに、Serverの作成は技術的な要素が強く、敷居が高いのは事実なのですが、この演習で学ぶように定型的な要素が強く、一旦慣れてしまえば、それほど難しいものではありません。

逆に、運用は、目的意識がハッキリしていれば、技術的な要素が薄い分、解り易いのですが、それだけに、目的意識がないと、どう手をつけてよいかわからず、途方に暮れてしまうことになやすいのです。

「Serverを運用してみたい」ならば、次のように考えてください。

  1. その意味で、routedは特殊なServerと言えるでしょう。

DHCP Server Program の入手

まずは、DHCP Server Programを入手しましょう。方法は、ifcfg-eth0と全く同じです。

違いは、入手するファイルの名前だけで、その名前は、dhcp-2.0-4.i386.rpmです。

DHCP Server Program の Install

rpmファイルが入手できれば、それのInstallはrpmコマンドで簡単に実行できます。

rpm コマンドの実行
[root@Linux-X /root]# rpm -Uhv dhcp-2.0-4.i386.rpm
#############################################
[root@Linux-X /root]# 

なお、既に、install済の場合は、Errorになりますので、あらかじめ、installされているかどうかを確認することもでいます。

install 済の package 検索
[root@Linux-X /root]# rpm -qa | grep dhcp-
dhcp-2.0-4
[root@Linux-X /root]# 

また、古い版のものが入っている場合は、(自動的に上書き[update]されますが敢えて行なうなら.. )次のようにして、削除することも可能です。

package の uninstall
[root@Linux-X /root]# rpm -e dhcp-2.0-4
[root@Linux-X /root]# 

DHCP Server Configuration

このDHCP Server Program(10)の設定ファイルは、/etc/dhcpd.confであり、また、これとは別にdhcpd.leasesというファイルも必要です。

本来ならば、/etc/dhcpd.confの作成方法を説明するところですが、今回は、ftp server上にあるdhcpd.confをそのまま利用しましょう。

rpmファイルと同様ftpで入手し、cpコマンドで上書きします。

dhcpd.conf の Copy Install
[root@Linux-X /root]# cp dhcpd.conf /etc
[root@Linux-X /root]# 
  1. つまり、DHCP Server Programにも色々あり、そのProgramによって、設定方法等も異なるということに注意しよう。

dhcpd.leases の作成

dhcpd.leasesは、DHCP Serverが、どのIP Addressを割り当てているかの記録を残すためのファイルです。DHCP Serverが何らかの理由で、再始動するときに、過去の履歴を、このdhcpd.leasesによって確認することができます。

始めて、dhcpdを起動する場合は、当然、過去の履歴はないので、このファイルは空っぽで構いません。

そこで、次のtouchコマンドで、空のdhcpd.leasesを作成します。

空の dhcpd.leases の作成
[root@Linux-X /root]# touch /var/state/dhcp/dhcpd.leases
[root@Linux-X /root]# 

DHCP Server の startup

dhcpのstartupは、/etc/rc.d/init.d/dhcpd startでおこないます。また、そのshutdownは、/etc/rc.d/init.d/dhcpd stopでおこないます。

dhcpd の開始
[root@Linux-X /root]#  /etc/rc.d/init.d/dhcpd start

DHCP Server の動作確認

DHCP ServerとDHCP ClinetからなるNetworkを一つ作り、DHCP Clinetが、DHCP Serverから確かに、IP Address等を得ることができることを確認しなさい。


	   DHCP	Server
		|
	>-------+---------------+------------------<
				|
			   DHCP	Client
			   (ie. Windows-PC)

また、dhcpd.leasesの内容を確認し、割り当てがうまくいっていることを確認しましょう。

dhcpd.leases の内容の確認
[root@Linux-X /root]# cat /var/state/dhcp/dhcpd.leases

DHCP Server の startup の自動化

このままでは、Linuxを起動する度に、手動で、dhcpdを起動しなければなりません。

そこで、次動的にdhcpdが起動するように設定を変更してみましょう。

実は、linux(11)はdhcpdを起動するかどうかを/etc/rc.d/rc3.d/にあるXYYdhcpdというファイルの名前で判断しています(12)

/etc/rc.d/rc3.d
[root@Linux-X /root]# cd /etc/rc.d/rc3.d
[root@Linux-X /etc/rc.d/rc3.d]# ls *dhcpd*
K35dhcpd@
[root@Linux-X /etc/rc.d/rc3.d]# 

ここで、Xの1文字は、KかSで、もしSならStart (実行を行う)で、KならばKilled (実行しない)を意味します。YYの部分には、数字がはいっており、この数字で、dhcpdを何時(他のServiceと比較して、どの順番で.. )実行するかを判断します。

ここでは、K35dhcpdという名前(つまり先頭の1文字がK )なので、自動的に実行していないわけです。

これを( boot時に.. )自動実行するようにするには単にmvコマンドを利用して名前を変更するだけです。

dhcpd の起動設定
[root@Linux-X /etc/rc.d/rc3.d]# mv K35dhcpd S35dhcpd
[root@Linux-X /etc/rc.d/rc3.d]# ls *dhcpd*
S35dhcpd@
[root@Linux-X /etc/rc.d/rc3.d]# 

この状態で、再起動し、自動的にdhcpdが起動されることを確認してみましょう。

dhcpd の起動確認
[root@Linux-X /root]# ps auxww | grep dhcpd
root 15014 0.0 0.8 2500 1076 ? S Sep30 0:28 /usr/sbin/dhcpd
root 26743 0.0 0.5 3628 644 pts/2 S 15:52 0:00 grep dhcpd
[root@Linux-X /root]# 

なお、実験が終ったら、後かたづけとして、dhcpdが自動的に起動しないようにしておきましょう。

  1. の中でも、いわゆるRedhat系のdistributionの場合です。皆さんの演習には、RedHat 6.xとよばれる古いSystemを利用しています。
  2. 中身も当然関係があるのですが、中身を変えないで起動する/しないの設定変更ができるという点がポイントなのです。