目次

FreeBSDでRARPサーバを立てる

2006年11月22日 01時03分17秒

RARPサーバを作る手順をとりあえず書いておく。これでよいよね?>某

これは何?

FreeBSD6.1でRARPサーバを立てる手順をまとめたもの。

自分用のメモであるので間違いが含まれている可能性が'非常'にある。

もし、こんな駄文でも、間違いを指摘をしていただけるのであれば webmaster@hgotoh.jp まで連絡いただきたく。

まず、RARPって何?

Reverse Address Resolution Protocol

MACアドレスからIPアドレスを付与するためのプロトコル。 筆者はこれを知らなかったが、YAMAHA RTX1000 の作業でこれを初めて知る。ちゃんとRFCにある。
RFC 903: Reverse Address Resolution Protocol

DHCPとの差は、クライアントに通知される情報量の差と、プロトコル自体の難解度であろうか。DHCP自身も充分軽量なプロトコルではあると思う。

Webを探してみると、やはり他の方達が情報を提供してくれている。だが、FreeBSD6.xになると、ちょっと当てはまらないものが多い。ここで書いてしまうことにする。

設定するファイル

まず、新規作成・更新するのは以下の4ファイル。

/etc/ethers

MACアドレスと、そのMACアドレスのクライアントに付与するホスト名をここに記述する。

00:50:14:AE:DD:7E hogehoge

これは、MACアドレスが 00:50:14:ae:dd:7e であると主張するクライアントに hogehoge とホスト名を付与することを定義している。 man 5 ethers を参照。

/etc/hosts

たぶん身近なファイルのひとつと思われるhostsファイル。 ここに ethers で記述したホスト名に対応するIPアドレスを記述する。

192.168.100.200 hogehoge

これは、ホスト hogehoge はIPアドレス 192.168.100.200であることを示している。…この資料を読む様な人であればこのような説明は無用であろうが一応。

/etc/rc.conf

まず、/etc/defaults のファイルを調べてみる。

 $ cd /etc/defaults
 $ grep rarp *
 rc.conf:rarpd_enable="NO"               # Run rarpd (or NO).
 rc.conf:rarpd_flags=""                  # Flags to rarpd.
 $

つまり、rc.conf には “rarpd_enable”と“rarpd_flags”が記述されている必要がある、という事だ。 早速、rc.confに以下を追加する。

 rarpd_enable="YES"               # Run rarpd (or NO).
 rarpd_flags="-a"                  # Flags to rarpd.

“-a”オプションはmanで確認されたし…ま、いいか。

     -a      Listen on all the Ethernets attached to the system.  If -a is
             omitted, an interface must be specified.

ちゃんとしたい人は、サービスを行うI/Fの指定を行えばいい。

/tftpboot/*

ちょっと戸惑うのがこれかもしれない。 まず、/tftpboot ディレクトリが無ければ作っておく。 次に、このディレクトリの下に、hostsで記述したIPアドレスを16進数にした名称のファイルを作る。ファイルがあればよいので、touch 辺りで作ればいい。

 # touch C0A864C8
 # ls -l
 total 0
 -rw-r--r--  1 root  wheel  0 11 13 00:27 C0A864C8
 #

C0 A8 64 C8 → 192 168 100 200 である。MACアドレスではなくIPアドレスであることに注意せよ。

なぜこのファイルが必要なのか、筆者にはよく解らない。 もしかするとtftpbootと言う辺り、本来はtftpで配布する boot用のイメージファイルをここに収めるのかもしれない。 …するってぇと、tftpd とかのコードと兼用?

rarpd起動

rarpのサービス起動は、/etc/rc.d/rarpd が行う。

 # cd /etc/rc.d
 # ./rarpd start

でOK。/usr/local/etc/rc.d 内のスクリプト起動と同じ。 なので、rc.conf に起動許可(rarpd_enable=“YES”)があるなら、以降サーバを再起動しても自動でrarpdが立ち上がる。

注意

FreeBSDの rarpd はちょっとばかり軟弱な様である。環境に些細なミスがあればすぐさまエラーメッセージとともに停止してしまう。 /var/log/messages を監視すること。 あるいは、別途 rarpd 監視の仕組みを作り、定期的に再起動させるなどの運用が必要になる。