戻る | 進む(bootparams) | 進む (tftpd) | 目次

Diskless NetBSD HOW-TO, rarpd サーバーの設定

ディスクレスブートの過程で、次に行うことは、ブートローダーにクライアントの IP アドレスを決めさせることです。このためには、 rarp、すなわち Reverse ARP (Address Resolution Protocol) を使います。 rarpd サーバーは、クライアントのイーサネットハードウェアアドレスに対して、 IP アドレスを割り当て、その情報をクライアントに返します。

rarp は TCP/IP ではないので、ルーターを越えることはできません (よって、 クライアントとサーバーは同じサブネットになければなりません) 。 さらに、サーバーは規定外のデータをイーサネットに送出することが 可能でなければなりません。

NetBSD での rarp の設定
OpenBSD での rarp の設定
FreeBSD での rarp の設定
Mac OS X と Darwin での rarp の設定
Linux での rarp の設定
SunOS での rarp の設定
Solaris での rarp の設定
NEWS-OS での rarp の設定
NEXTSTEP での rarp の設定 (動作させられませんでした)
HP-UX 9 およびそれ以前には rarpd はありません
HP-UX 10 以降での rarp の設定


NetBSDOpenBSD

カーネルを再構築している場合、 コンフィグファイルに以下の記述があることを確認してください:
pseudo-device   bpfilter        16
NetBSD の配布に含まれる GENERIC カーネルは、これを含んでいます。

  1. /etc/ethers ファイルを作り、クライアントを列挙しておきます:
    #/etc/ethers
    CC:CC:CC:CC:CC:CC     client

  2. /etc/hosts ファイルにクライアントの情報を書いておきます:
    192.168.1.10 client

  3. # ps -aux | grep rarp
    rarpd が動いていなければ、実行します:
    # /usr/sbin/rarpd -a -d

これで rarpd がデバッグモードで動きます。 rarpd サーバーが要求を受けると、 以下のようなメッセージが表示されます:

got a packet

RARP が失敗すると、クライアントは以下のようなメッセージを表示します:

No response for RARP request
le(0,0,0,0): Unknown error: code 60
boot: Unknown error: code 60
RARP が成功すると、クライアントは以下のようなメッセージを表示します:
boot: client IP address: 192.168.1.10

bootparams または tftpd の設定に進む


FreeBSD

  1. /etc/ethers ファイルを作り、クライアントを列挙しておきます:
    #/etc/ethers
    CC:CC:CC:CC:CC:CC     client

  2. /etc/hosts ファイルにクライアントの情報を書いておきます:
    192.168.1.10 client

  3. # ps -aux | grep rarp
    rarpd が動いていなければ、実行します:
    # /usr/sbin/rarpd -a -s -v -f

これで rarpd がフォアグラウンドで動きます (^C で止められます) 。 デバッグ用のコマンドラインオプションはありません。 RARP に問題がある場合は、 /etc/syslog.conf に以下のように追加する必要があるかもしれません:

!rarpd
*.*                                             /var/log/bootlog
この場合は syslog のプロセスに対して kill -HUP する必要があります。これで、以下のようなメッセージが /var/log/bootlog に残るようになります:
Jul 25 23:10:42 rarpserver rarpd[562]: fxp0 CC:CC:CC:CC:CC:CC at 192.168.1.10 REPLIED

RARP が失敗すると、クライアントは以下のようなメッセージを表示します:

No response for RARP request
le(0,0,0,0): Unknown error: code 60
boot: Unknown error: code 60
RARP が成功すると、クライアントは以下のようなメッセージを表示します:
boot: client IP address: 192.168.1.10

bootparams または tftpd の設定に進む


Mac OS X と Darwin

Mac OS X と Darwin には rarpd があり、 NetBSD や OpenBSD のものとよく似ています。 ですが、前提としている TFTP サーバー用ディレクトリーが不適切なため、 /private/tftpboot に小細工する必要があります

  1. # mkdir -p /private/tftpboot
    # ln -s /private/tftpboot /tftpboot

  2. /etc/ethers ファイルを作り、クライアントを列挙しておきます:
    #/etc/ethers
    CC:CC:CC:CC:CC:CC     client

  3. NetInfo データベースにクライアントを追加します:
    # nicl . -create /machines/client ip_address 192.168.0.10

  4. # ps -aux | grep rarp
    rarpd が動いていなければ、実行します:
    # /usr/sbin/rarpd -a -d

これで rarpd がデバッグモードで動きます。 rarpd サーバーが要求を受けると、 以下のようなメッセージが表示されます:

got a packet
RARP が失敗すると、クライアントは以下のようなメッセージを表示します:
No response for RARP request
le(0,0,0,0): Unknown error: code 60
boot: Unknown error: code 60
RARP が成功すると、クライアントは以下のようなメッセージを表示します:
boot: client IP address: 192.168.1.10

bootparams または tftpd の設定に進む


Linux

Linux で rarp を実行するには、ふたつの方法があります。 ユーザーランド rarpd と、 カーネル (<2.3) への組み込みです。

Linux ユーザーランド rarpd (どのカーネルでも使えるはずです)

ユーザーランド rarp には、少なくともふたつの実装があります。 ftp://ftp.dementia.org/pub/net-tools (ソースのみ) にある古い実装 (D.Brashear & J.Hutzelman によるもの) と、 最近の全 (?) ディストリビューションに含まれている新しい実装 (A. Kuznetsov & J.Jelinek によるもの) です。

  1. ftp://rawhide.redhat.com にある RPM か、 Debian woody で apt-get rarpd して パッケージを入手します。
    少なくとも local debian mirror では、 /pool/main/r/rarpd/ 以下にソースがあります。

  2. /etc/ethers ファイルを作り、クライアントを列挙しておきます:
    #/etc/ethers
    CC:CC:CC:CC:CC:CC     client

  3. /etc/hosts ファイルにクライアントの情報を書いておきます:
    192.168.1.10 client

  4. # /path/to/rarpd -A
    詳細は rarp(8) を参照してください。

RARP が失敗すると、クライアントは以下のようなメッセージを表示します:

No response for RARP request
le(0,0,0,0): Unknown error: code 60
boot: Unknown error: code 60
RARP が成功すると、クライアントは以下のようなメッセージを表示します:
boot: client IP address: 192.168.1.10

bootparams または tftpd の設定に進む

Linux カーネル rarp ( kernel<2.3 )

ユーザーランド rarpd を使いたくない (あるいは使えない) 場合は、 rarp 対応を組み込んだカーネルを構築するか、 (カーネルが対応していれば) ローダブルモジュールとして追加する必要があります。

  1. RARP 対応付きのカーネルを構築します。以下のいずれかを実行します:
    # make config
    # make menuconfig
    # make xconfig

  2. または、 RARP カーネルモジュールを追加します:
    # modprobe rarp
    この場合、リブートは不要ですが、 RARP を有効にするために、リブートの都度、このコマンドを実行する必要があります。

  3. /etc/hosts ファイルにクライアントの情報を書いておきます:
    192.168.1.10 client

  4. # /sbin/arp -s client CC:CC:CC:CC:CC:CC

  5. # /sbin/arp -a
    arp のキャッシュが表示されます。クライアントの情報が含まれていることを確認します:
    Address                HWtype  HWaddress           Flags Mask      Iface
    client.test.net        ether   CC:CC:CC:CC:CC:CC   CM    *         eth0

  6. # /sbin/rarp -s client CC:CC:CC:CC:CC:CC
    カーネル内に RARP がコンパイルされていない場合、以下のような 2 行のエラーメッセージが表示されます:
    SIOCSRARP: Invalid argument
    This kernel does not support RARP.

  7. # /sbin/rarp -a
    rarp のキャッシュが表示されます。クライアントの情報が含まれていることを確認します:
    IP address       HW type             HW address
    192.168.1.10     10Mbps Ethernet     CC:CC:CC:CC:CC:CC

RARP が失敗すると、クライアントは以下のようなメッセージを表示します:

No response for RARP request
le(0,0,0,0): Unknown error: code 60
boot: Unknown error: code 60
RARP が成功すると、クライアントは以下のようなメッセージを表示します:
boot: client IP address: 192.168.1.10

bootparams または tftpd の設定に進む


SunOS

SunOS マシンを NFS サーバーとして設定済みであり、かつ /tftpboot が存在すれば、 RARP デーモンはすでに動いているでしょう。

  1. /etc/ethers ファイルがまだ存在しなければ、作成します。 このファイルは、 rbootd または tftp の導入過程で作成済みのはずです。 /etc/ethers ファイルにはクライアントを列挙しておく必要があります:
    #/etc/ethers
    CC:CC:CC:CC:CC:CC     client

  2. # ps aux | grep rarpd
    もしふたつの rarp プロセスが動いていなければ、以下のようにする必要があります:
    # /usr/etc/rarpd -a -d

RARP が失敗すると、クライアントは以下のようなメッセージを表示します:

No response for RARP request
le(0,0,0,0): Unknown error: code 60
boot: Unknown error: code 60
RARP が成功すると、クライアントは以下のようなメッセージを表示します:
boot: client IP address: 192.168.1.10

bootparams または tftpd の設定に進む


Solaris

Solaris マシンを NFS サーバーとして設定済みであり、かつ /tftpboot が存在すれば、 RARP デーモンはすでに動いているでしょう。

  1. /etc/ethers ファイルがまだ存在しなければ、作成します。 このファイルは、 rbootd または tftp の導入過程で作成済みのはずです。 /etc/ethers ファイルにはクライアントを列挙しておく必要があります:
    #/etc/ethers
    CC:CC:CC:CC:CC:CC     client

  2. # /usr/bin/ps -ef | grep rarpd
    rarpd が動いていなければ、実行する必要があります:
    # /usr/sbin/in.rarpd -d -a

これで rarpd がデバッグモードで動きます。 Solaris では、 rarpd は多くの出力をします。 Solaris rarpd がクライアントの要求を処理中の 出力例を示します。

RARP が失敗すると、クライアントは以下のようなメッセージを表示します:

No response for RARP request
le(0,0,0,0): Unknown error: code 60
boot: Unknown error: code 60
RARP が成功すると、クライアントは以下のようなメッセージを表示します:
boot: client IP address: 192.168.1.10

bootparams または tftpd の設定に進む


NEWS-OS

  1. /etc/ethers ファイルがまだ存在しなければ、作成します。 このファイルは、 rbootd または tftp の導入過程で作成済みのはずです。 /etc/ethers ファイルにはクライアントを列挙しておく必要があります:
    #/etc/ethers
    CC:CC:CC:CC:CC:CC     client

  2. # /etc/rarpd

RARP が失敗すると、クライアントは以下のようなメッセージを表示します:

No response for RARP request
le(0,0,0,0): Unknown error: code 60
boot: Unknown error: code 60
RARP が成功すると、クライアントは以下のようなメッセージを表示します:
boot: client IP address: 192.168.1.10

bootparams または tftpd の設定に進む


NEXTSTEP

NEXTSTEP は sparc ハードウェアをネットブートさせられるので、 rarp 機能を持っています。 私たちは簡単に試してみましたが、動作させられませんでした。 適切な設定方法をご存知の方は、どうかお知らせください。 以下の説明は、私たちの最良の推測です。

  1. /etc/ethers ファイルがまだ存在しなければ、作成します。 ファイルにはクライアントを列挙しておく必要があります:
    #/etc/ethers
    CC:CC:CC:CC:CC:CC     client

  2. # /usr/etc/arpLoader

RARP が失敗すると、クライアントは以下のようなメッセージを表示します:

No response for RARP request
le(0,0,0,0): Unknown error: code 60
boot: Unknown error: code 60
RARP が成功すると、クライアントは以下のようなメッセージを表示します:
boot: client IP address: 192.168.1.10

このページの先頭へ戻る


HP-UX 9 およびそれ以前

残念ながら、 HP-UX 9 には rarp サービスがありません。 ソースコードを見つけてデーモンをコンパイルすることができるのかもしれませんが、筆者は見つけられませんでした。

もし見つけられたら、お知らせください。

このページの先頭へ戻る


HP-UX 10

  1. /etc/rarpd.conf ファイルを作成し、クライアントのアドレス (イーサネットおよび IP) を書いておきます:
    CC:CC:CC:CC:CC:CC 192.168.1.10

  2. # ps -ef | grep rar
    rarpd が動いていなければ、実行する必要があります:
    # /usr/sbin/rarpd -d

これで rarpd がデバッグモードで動きます。 HP-UX 10 では、 rarpd は多くの出力をします。 HP-UX 10 rarpd がクライアントの要求を処理中の 出力例を示します。

なぜか ^C では中断できず、別のシェルからこの rarpd プロセスを kill しなければなりませんでした。

RARP が失敗すると、クライアントは以下のようなメッセージを表示します:

No response for RARP request
le(0,0,0,0): Unknown error: code 60
boot: Unknown error: code 60
RARP が成功すると、クライアントは以下のようなメッセージを表示します:
boot: client IP address: 192.168.1.10

bootparams または tftpd の設定に進む


戻る | 進む(bootparams) | 進む (tftpd) | 目次
NetBSD ホームページ
NetBSD Documentation top level

(連絡先 - 英語, 日本語: www@jp.NetBSD.org)
$NetBSD: rarp.html,v 1.3 2007/08/01 15:36:02 kano Exp $
Copyright © 1998-2004 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.