\documentclass[a4j]{jarticle}

\usepackage{alltt}

\newcounter{program}

\newlength{\minipagetbllength}
\newcounter{minipagetblcounter}
\newcommand{\minipagetblfootnote}[1]{
\footnote{#1}\addtocounter{minipagetblcounter}{-1}}
\newcommand{\minipagetbl}[1]{
\settowidth{\minipagetbllength}{#1}
\setcounter{minipagetblcounter}{0}
\begin{center}\begin{minipage}{\minipagetbllength}
\renewcommand{\footnoterule}{}
\begin{center} #1 \vspace{-.1in} \end{center}
\end{minipage} \end{center}
\addtocounter{footnote}{\value{minipagetblcounter}}
}
\title{情報通信ネットワーク論{[}演習{]} (2005{\slash}11{\slash}01)\\  {\Large Ver. 1.1a}}
\date{2005年11月1日}
\author{栗野 俊一\\kurino@math.cst.nihon-u.ac.jp\\
http:{\slash}{\slash}edu-gw2.math.cst.nihon-u.ac.jp{\slash}{\~{}}kurino{\slash}2005{\slash}ccna-ex{\slash}ccna-ex.html
        }
\begin{document}

\pagestyle{empty}
\maketitle

\begin{abstract}
情報通信ネットワーク論(演習)\footnote{http:{\slash}{\slash}edu-gw2.math.cst.nihon-u.ac.jp{\slash}{\~{}}kurino{\slash}2005{\slash}ccna{\slash}ccna-ex{\slash}ccna-ex.html}の2005{\slash}10{\slash}21 の資料\footnote{http:{\slash}{\slash}edu-gw2.math.cst.nihon-u.ac.jp{\slash}{\~{}}kurino{\slash}2005{\slash}ccna{\slash}ccna-ex{\slash}20051021{\slash}20051021.html}\end{abstract}

\pagestyle{empty}


\tableofcontents

\clearpage

\pagenumbering{arabic}
\pagestyle{plain}


\section{目的}
\suppressfloats[t]

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


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


\section{Linux での設定の保存方法}
\suppressfloats[t]

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


\begin{figure*}[bp]
\underline{\bfseries unix 流の設定方法}
\bigskip

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

したがって、問題があれば、「見て直す」ことができますし、また、他の設定を「見る」ことにより、仮に、あまり内容が解らなくても、自分用に「目の子\footnote{http:{\slash}{\slash}dictionary.goo.ne.jp{\slash}search.php?MT={\%}A4{\%}E1{\%}A4{\%}CE{\%}A4{\%}B3{\&}kind=jn{\&}mode=0{\&}base=1{\&}row=4}」で直すこともできます。

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

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

\end{figure*}

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


\subsection{実験1: 設定ファイルの確認}

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

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


\bigskip
\begin{figure}[htbp]
\begin{verbatim}
[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]# 
\end{verbatim}
\caption{Linux-X の Network 設定ファイルの存在確認}
\label{doc3_id1971}

\end{figure}
\bigskip

このような表示\footnote{もちろん、サイズや日時はこれとは異なるかもしれません。逆に、存在しない場合の表示は、この後に述べられます。}がされる場合は、既に、設定ファイル( {\slash}etc{\slash}sysconfig{\slash}network-scripts{\slash}ifcfg-eth0 )が存在するので、次のようなcatコマンドで、この内容を確認してみましょう


\bigskip
\begin{figure}[htbp]
\begin{verbatim}
[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]# 
\end{verbatim}
\caption{Linux-X の Network 設定の内容の確認}
\label{doc3_id1977}

\end{figure}
\bigskip

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


\begin{description}
\item [IP Address] 192.168.99.1
\item [Netmask] 255.255.255.0
\item [Network] 192.168.99.0
\item [Broadcast address] 192.168.99.25
\end{description}

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


\bigskip
\begin{figure}[htbp]
\begin{verbatim}
[root@Linux-X /root]# rm \
    /etc/sysconfig/network-scripts/ifcfg-eth0
[root@Linux-X /root]# 
\end{verbatim}
\caption{Linux-X の Network 設定ファイルの削除}
\label{doc3_id2007}

\end{figure}
\bigskip

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


\bigskip
\begin{figure}[htbp]
\begin{verbatim}
[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]# 
\end{verbatim}
\caption{Linux-X の Network 設定ファイルの削除確認}
\label{doc3_id2010}

\end{figure}
\bigskip

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


\begin{figure*}[bp]
\underline{\bfseries Linux を利用して文字化けしたら..}
\bigskip

unixのコマンド( ls{\slash}cat{\slash}rmなど.. )の実行中に表示が文字化けしていることがあります。これは、Linuxが日本語のModeで動いており、メッセージを日本語で表示しているのに、画面自身は、日本語の表示機能がない場合に生じます。

これを解決するには、もちろん、linuxを英語modeにするか、画面で日本語が表示できるようにすれば良いわけです。

前者のためのコマンドは、LANG=Cで、これによって、英語modeになります。一方、日本語が表示できるようにするにはkonというコマンドを利用します。

\end{figure*}

次にNetwork CardをPCMCIA Slotに挿入し\footnote{既に、Cardを挿してあった場合は、cardctl ejectで抜いておきます。}、ifconfigを利用して、Network interface eth0に何も設定されていないことを確認\footnote{Network Cardが認識されていなかった場合は、cardctl insertとしましょう。}してください\footnote{設定ファイルが起動時に利用されることを確認するために、再起動してみるという手もあります。その場合はrebootコマンドを利用します。}。


\bigskip
\begin{figure}[htbp]
\begin{verbatim}
[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:100621 errors:5 dropped:0 overruns:0 carrier:1
          collisions:19704 txqueuelen:100 
          Interrupt:5 Base address:0xd000 
[root@Linux-X /root]# 
\end{verbatim}
\caption{Linux-X の eth0 の設定}
\label{doc3_id2025}

\end{figure}
\bigskip

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


\bigskip
\begin{figure}[htbp]
\begin{verbatim}
[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:102763 errors:5 dropped:0 overruns:0 carrier:1
          collisions:19836 txqueuelen:100 
          Interrupt:5 Base address:0xd000 
[root@Linux-X /root]# 
\end{verbatim}
\caption{Linux-X の Network 接続}
\label{doc3_id2028}

\end{figure}
\bigskip

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


\subsection{実験2: anonymous ftp を利用する}

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

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

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

するとNameとPasswordを要求されますので、Nameには、ftpを、Passwordは、礼儀のため\footnote{実は、ほとんどの場合、何をいれても構いません。稀に、ちゃんとe-mail addressのように見えるものをいれないと、弾かれることもありますが...。}に、自分のe-mail addressを入力\footnote{最近は、礼儀よりも、個人情報の保護の方が重要になってきました。ここでは、e-mail adddressを入力*しない*方が良いでしょう。もちろん、実習の時には、何もいれなくてよいと思います。}しましょう\footnote{エコーバック(自分の入力されたものが、そのまま画面に表示されること.. )されないので、間違える可能性もありますが、前の注で触れた通り、本来は何をいれてもかまわないので、あまり気にする必要はありません。}。


\bigskip
\begin{figure}[htbp]
\begin{verbatim}
[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>
\end{verbatim}
\caption{ftp 接続}
\label{doc3_id2043}

\end{figure}
\bigskip

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

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

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


\bigskip
\begin{figure}[htbp]
\begin{verbatim}
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,103)
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 101 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>
\end{verbatim}
\caption{設定ファイルの確認}
\label{doc3_id2046}

\end{figure}
\bigskip

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


\bigskip
\begin{figure}[htbp]
\begin{verbatim}
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>
\end{verbatim}
\caption{設定ファイルの取り寄せ}
\label{doc3_id2049}

\end{figure}
\bigskip

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


\bigskip
\begin{figure}[htbp]
\begin{verbatim}
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 10 29 05:15 ifcfg-eth0.DHCP
[root@Linux-X /root]# 
\end{verbatim}
\caption{設定ファイルの取り寄せの確認}
\label{doc3_id2052}

\end{figure}
\bigskip

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


\bigskip
\begin{figure}[htbp]
\begin{verbatim}
[root@Linux-X /root]# cat ifcfg-eth0.DHCP
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
[root@Linux-X /root]# 
\end{verbatim}
\caption{DHCP での設定}
\label{doc3_id2055}

\end{figure}
\bigskip

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


\bigskip
\begin{figure}[htbp]
\begin{verbatim}
[root@Linux-X /root]# cp ifcfg-eth0.DHCP \
    /etc/sysconfig/network-scripts/ifcfg-eth0
[root@Linux-X /root]# 
\end{verbatim}
\caption{設定ファイルのコピー}
\label{doc3_id2058}

\end{figure}
\bigskip

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


\bigskip
\begin{figure}[htbp]
\begin{verbatim}
[root@Linux-X /root]# shutdown -r now
\end{verbatim}
\caption{reboot}
\label{doc3_id2061}

\end{figure}
\bigskip

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


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

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

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


\subsection{実験4: ifup{\slash}ifdown コマンドの利用}

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

そのためのコマンドがifup{\slash}ifdownコマンドです。

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

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


\bigskip
\begin{figure}[htbp]
\begin{verbatim}
[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
\end{verbatim}
\caption{設定変更の反映}
\label{doc3_id2073}

\end{figure}
\bigskip

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


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

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

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

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

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

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

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

なお、最後にZZ {[}終了{]}を押せば\footnote{これは、大文字のZを続けて二回押すってことです。}viを終了することができます。

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

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

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


\bigskip
\begin{figure}[htbp]
\begin{verbatim}
[root@Linux-X /root]# vi \
    /etc/sysconfig/network-scripts/ifcfg-eth0
\end{verbatim}
\caption{vi の起動}
\label{doc3_id2082}

\end{figure}
\bigskip


\subsection{実験6: DHCP Server を作ろう}

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


\subsubsection{Network Server の構築手順}

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


\begin{description}
\item [入手] Serverは、特殊なProgram ( Server Program )が動いているHostというだけです。

これが、あらかじめHost上に用意されていれば、問題ありませんが、そうでなければ、ftp等を利用して、Network経由で、入手します。
\item [Install] Serverは、Linux上のServer Program ( Server Software )として実現されています。したがって、そのProgram ( Soft )を、まず、Linux PCに、Installする必要があります。

RedHat系のLinuxでは、そのために、rpm形式のファイルが提供されており、rpmコマンドを実行することにより、簡単にinstallできます。
\item [Configuration] Serverは、どれも同じ機能を持ちますが、どれも同じ振舞をさせるわけではありません。むしろ、そのServerが設置されているNetworkによって、異なる振舞が要求されるのが普通\footnote{その意味で、routedは特殊なServerと言えるでしょう。}です。

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

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

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


\begin{figure*}[bp]
\underline{\bfseries Server を立るのは大変か ?}
\bigskip

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

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

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

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

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


\begin{itemize}
\item Server作るのはそれほど難しくはありません。この事で悩むのは止めましょう。
\item Serverを運用し続けるには、十分な動機が必要です。是非、ハッキリとした目的意識をもってServerの運用を開始しましょう。
\end{itemize}

\end{figure*}


\subsubsection{DHCP Server Program の入手}

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

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


\subsubsection{DHCP Server Program の Install}

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


\bigskip
\begin{figure}[htbp]
\begin{verbatim}
[root@Linux-X /root]# rpm -Uhv dhcp-2.0-4.i386.rpm
#############################################
[root@Linux-X /root]# 
\end{verbatim}
\caption{rpm コマンドの実行}
\label{doc3_id2138}

\end{figure}
\bigskip

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


\bigskip
\begin{figure}[htbp]
\begin{verbatim}
[root@Linux-X /root]# rpm -qa | grep dhcp-
dhcp-2.0-4
[root@Linux-X /root]# 
\end{verbatim}
\caption{install 済の package 検索}
\label{doc3_id2141}

\end{figure}
\bigskip

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


\bigskip
\begin{figure}[htbp]
\begin{verbatim}
[root@Linux-X /root]# rpm -e dhcp-2.0-4
[root@Linux-X /root]# 
\end{verbatim}
\caption{package の uninstall}
\label{doc3_id2147}

\end{figure}
\bigskip


\subsubsection{DHCP Server Configuration}

このDHCP Server Program\footnote{つまり、DHCP Server Programにも色々あり、そのProgramによって、設定方法等も異なるということに注意しよう。}の設定ファイルは、{\slash}etc{\slash}dhcpd.confであり、また、これとは別にdhcpd.leasesというファイルも必要です。

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

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


\bigskip
\begin{figure}[htbp]
\begin{verbatim}
[root@Linux-X /root]# cp dhcpd.conf /etc
[root@Linux-X /root]# 
\end{verbatim}
\caption{dhcpd.conf の Copy Install}
\label{doc3_id2156}

\end{figure}
\bigskip


\subsubsection{dhcpd.leases の作成}

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

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

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


\bigskip
\begin{figure}[htbp]
\begin{verbatim}
[root@Linux-X /root]# touch /var/state/dhcp/dhcpd.leases
[root@Linux-X /root]# 
\end{verbatim}
\caption{空の dhcpd.leases の作成}
\label{doc3_id2162}

\end{figure}
\bigskip


\subsubsection{DHCP Server の startup}

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


\bigskip
\begin{figure}[htbp]
\begin{verbatim}
[root@Linux-X /root]#  /etc/rc.d/init.d/dhcpd start
\end{verbatim}
\caption{dhcpd の開始}
\label{doc3_id2168}

\end{figure}
\bigskip


\subsubsection{DHCP Server の動作確認}

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

なお、ftpサーバに置いてある設定ファイルは、linux Serverが次のように、Network Interfaceを二つもち、eth1側のNetworkでDHCP Serverとして振舞うように設定\footnote{{\slash}etc{\slash}rc.d{\slash}init.d{\slash}dhcpdの内容を確認しましょう。}されています\footnote{がもちろん、上のnetworkは失くても構わないのですが...}。

また、eth1側は、DHCP Serverとして振舞うNetworkのIP Adddressの内の一つをstaticに設定しなければなりません。


\begin{verbatim}

	>-------+---------------+------------------<
		| eth0
	   DHCP	Server (Linux Box)
		| eth1
	>-------+---------------+------------------<
				|
			   DHCP	Client
			   (ie. Windows-PC)

\end{verbatim}

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


\bigskip
\begin{figure}[htbp]
\begin{verbatim}
[root@Linux-X /root]# cat /var/state/dhcp/dhcpd.leases
\end{verbatim}
\caption{dhcpd.leases の内容の確認}
\label{doc3_id2183}

\end{figure}
\bigskip


\subsubsection{DHCP Server の startup の自動化}

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

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

実は、linux\footnote{の中でも、いわゆるRedhat系のdistributionの場合です。皆さんの演習には、RedHat 6.xとよばれる古いSystemを利用しています。}はdhcpdを起動するかどうかを{\slash}etc{\slash}rc.d{\slash}rc3.d{\slash}にあるXYYdhcpdというファイルの名前で判断しています\footnote{中身も当然関係があるのですが、中身を変えないで起動する{\slash}しないの設定変更ができるという点がポイントなのです。}。


\bigskip
\begin{figure}[htbp]
\begin{verbatim}
[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]# 
\end{verbatim}
\caption{{\slash}etc{\slash}rc.d{\slash}rc3.d}
\label{doc3_id2195}

\end{figure}
\bigskip

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

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

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


\bigskip
\begin{figure}[htbp]
\begin{verbatim}
[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]# 
\end{verbatim}
\caption{dhcpd の起動設定}
\label{doc3_id2198}

\end{figure}
\bigskip

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


\bigskip
\begin{figure}[htbp]
\begin{verbatim}
[root@Linux-X /root]# ps auxww | grep dhcpd
root 15014 0.0 0.8 2500 1216 ? 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]# 
\end{verbatim}
\caption{dhcpd の起動確認}
\label{doc3_id2201}

\end{figure}
\bigskip

なお、実験が終ったら、後かたづけとして、dhcpdが自動的に起動しないようにして\footnote{もちろん、{\slash}etc{\slash}rc.d{\slash}rc3.d{\slash}S35dhcpdの名前を変更するわけです..。}おきましょう。


\end{document}
