次のページ 前のページ 目次へ

7. (訳注) RADVD Introduction

by Lars Fennberg <lf@elemental.net>

IPv6 は IPv4 よりさらに進んだ自動設定をサポートしている。 しかしそのためには、この自動設定はネットワーク上のホストで動作し、 ローカルネットワークのルータはホストの自動設定要求に 答える動作が必要にである。

Linux ではこのプログラムは radvd (Router ADVertisement Daemon :ルータ通知デーモン) とよばれる。 このデーモンはルータ要請(RS)を聞き、ルータ通知(RA)を答える。 なお、求められない要求も送られる。

これらの RA にはホストのインターフェースの設定に使用される情報を含んでいる。 この情報は、アドレスプリフックス、デフォルトルータの経路MTU と情報が 含まれている。

もちろん、ルータ自身は自動設定できないため、ルータ情報は システムの管理人によって設定されなければならない。 これは、インターフェースと経路の手動設定と、ルータ通知デーモンの設定に よっておこなわれる。

簡単な設定スクリプトは以下のようになる。

interface eth0 {
        AdvSendAdvert on;
        prefix 5f15:9100:c2dd:1400:8000::0/80
        {
                AdvOnLink on;
                AdvAutonomous on;
        };
};

これは、radvd が、eth0 で80の長さのプリフィックス 5f04:f900:c2dd:1400:8000::0 を流している。 プリフィックスは autonomous (AdvAutonomous がon) かつ、on-link (AdvOnLink が on)でる。そのほかのオプションはデフォルトの値である。

Autonomous はそのプリフィックスが自動アドレス設定につかえてることで、 on-link はそのホストが、全てのこのプリフィックスを使用するマシンが RAを受信したマシンから到達可能と仮定できることを示す。

そのプリフィックスは、この例のようにランダムに選ぶことはできなかった。 それは RFC 1897 (IPv6 のテストアドレス割当て)にもとづいて決定された。 その上、プリフィックス長も自由に選べず、ネットワークメディアによって 決定される。 イーサネット用には、プリフィックス長は80であるが、これは 48bit 長のイーサネットハードウェアアドレスと、128bit のIPv6 アドレスを 結びつけるものだ。 詳細は、RFC 1971 (IPv6 Stateless Address Autoconfiguration) および、 RFC 1972 (A Method for the Transmission of IPv6 Packets over Ethernet Networks) を参照のこと。

より詳しい radvd の設定に関する情報は radvd の配布に含まれています。

ホスト上のインターフェースが UPed とRA を受信したとき、そのホストは プリフィックスと、イーサネットハードウェアアドレスを使って、 アドレスの設定ができる。 次に1例をあげる。

Announced prefix    5f15:9100:c2dd:1400:8000:0000:0000:0000

Link-layer token                             0800:0040:1726

Configured address  5f15:9100:c2dd:1400:8000:0800:0040:1726

ホストは、デフォルトルータの選択を RA を調べて実行できる。 これは、IPv6 のみのホストは単にインターフェースに UP をおこなうだけで、 それ以外は自動でおこなわれることを意味する。

そのため、我々が radvd を設定したときは、インターフェースの設定と、 ルータでの経路の設定がまだ必要である。 簡便にするため、我々はただ一つのインターフェースがあり、 ルータがトンネリングを使って「外の世界」へ通信されることにする。

下の例は、IPv6 のルータでの設定のシェルスクリプトである。 これは、本当に私の使っているルータと同じものです。... :)

見ての通り、アドレスと経路を手で加えて、IPv6 over IPv4 のトンネルを 設定しています。

/etc/init.d/functions は、ちょっとした助けになる関数があつまっていて、 radvd を kill するのに "stop" が必要でしょう。 /usr/ipv6/sbin は、IPv6 の net-tools と、radvd の新しいバージョンが インストールされています。 これを PATH の先頭に入れて、IPv6 関連プログラムの以前のバージョンより 先に見つかるようにしています。

このスクリプトは、eth0 のような通常のインターフェースでのもので、 すでに IPv4 などで設定されているとします。

#! /bin/sh

. /etc/init.d/functions

PATH=/usr/ipv6/sbin:/usr/ipv6/bin:/bin:/usr/bin:/sbin:/usr/sbin
export PATH

case "$1" in
  start)
        # enable forwarding
        echo 1 >/proc/sys/net/ipv6/ipv6_forwarding 

        # get IPv6-over-IPv4 tunnels up (enables automatic tunneling to 0::0/96)
        ifconfig sit0 up

        # configure the local interface
        ifconfig eth0  add 5f15:9100:c2dd:1400:8000:0080:ad1c:22ca/80
        route -A inet6 add 5f15:9100:c2dd:1400:8000::0/80 dev eth0

        # if you're on the 6bone you can setup tunnels like shown below.
        # every ifconfig sit0 tunnel 0::<other-tunnel-endpoint-ip>
        # creates a new sit interface. they're named sequentially (sit1,
        # sit2, sit3 and so on)

        # setup a tunnel to NRL
        ifconfig sit0 tunnel 0::132.250.90.5
        ifconfig sit1 up
        route -A inet6 add 5f00::0/8 gw fe80::132.250.90.5 dev sit1

        # setup a tunnel to G6
        ifconfig sit0 tunnel 0::129.88.26.1
        ifconfig sit2 up
        route -A inet6 add 5f06:b500::/32 gw fe80::129.88.26.1 dev sit2

        # start router advertisement daemon
        radvd
    ;;
  stop)
        killproc radvd
        ifconfig sit0 down
    ;;
  *)
    echo "Usage: /etc/init.d/ipv6 {start|stop}"
    exit 1
esac

exit 0

Last changed: Sat Mar  1 19:17:33 MET 1997
Copyright ©1997 Lars Fennberg <lf@elemental.net


次のページ 前のページ 目次へ