ヤマハRTシリーズ IPv6機能 クイックスタートガイド

このドキュメントでは、ヤマハRTシリーズでのIPv6機能の使用方法を簡単に説明します。 コマンドの詳しい仕様については、 コマンドリファレンスを参照してください。 なお、このドキュメントの説明は、主にRTA54i(Rev.4系)を対象にしています。 Rev.5系、Rev.6系以降の機種では、それぞれコマンドや表示が異なるところがありますので、ご注意ください。

1. アドレスの管理

この節では、アドレスの管理に関する事項を説明します。まず、 RTが持っているアドレスを表示させるには、 show ipv6 addressというコマンドを用います。

> show ipv6 address 
LAN[01] scopeId 1
 Received:    476099 packets 473064981 octets
 Transmitted: 271021 packets 255039824 octets

 link-local   ff02::1/64
 link-local   ff02::2/64
 link-local   fe80::2a0:deff:fe00:3/64
 link-local   ff02::1:ff00:3/64

このコマンドは、起動しているインタフェースについて、 そのインタフェースの持つIPv6アドレスを表示します。 RTの実装では、LANインタフェースは、常に起動しているものとみなし、 PPインタフェースは、回線が接続されており、IPV6CPの交渉が成功しているときに、 起動しているものと考えます。

インタフェースにアドレスを設定するときには、 ipv6 INTERFACE addressコマンドを用います。例えば、 LANインタフェースに3ffe:1::1:2:3:4/64というアドレスを設定するときには、 以下のコマンドを設定します。

> administrator
# ipv6 lan address 3ffe:1::1:2:3:4/64		# Rev.5以前
# ipv6 lan1 address 3ffe:1::1:2:3:4/64		# Rev.5以降

また、アドレスを削除するときには、 Rev.4、Rev.5系では、ipv6 INTERFACE address deleteコマンドを用います。 Rev.6系以降では、no ipv6 INTERFACE addressコマンドを用います。

> administrator
# ipv6 lan address delete 3ffe:1::1:2:3:4/64	# Rev.5以前
# ipv6 lan1 address delete 3ffe:1::1:2:3:4/64	# Rev.5
# no ipv6 lan1 address 3ffe:1::1:2:3:4/64	# Rev.6以降

IPv6アドレスが設定されるときには、 アドレス重複検出(DAD)の処理が実行されます。 この処理の結果はdebugレベルのsyslogに出力されます。

2. 診断用の機能

RTには、診断用の機能として、 ping6コマンドとtraceroute6コマンドが用意されています。 両コマンドの書式を以下に示します。

ping6 宛先IPv6アドレス [個数]
ping6 宛先IPv6アドレス LANインタフェース名 [個数]
ping6 宛先IPv6アドレス pp PP番号 [個数]
ping6 宛先IPv6アドレス tunnel TUNNEL番号 [個数]
traceroute6 宛先IPv6アドレス

例えば、LAN1インタフェースからff02::1に対して、 2個のICMP Echo Requestを送信するときのコマンドは以下のようになります。

# ping6 ff02::1 lan1 2
received from fe80::2a0:deff:fe00:1: icmp_seq=0
received from fe80::2a0:deff:fe00:2: icmp_seq=0
received from fe80::2a0:deff:fe00:1: icmp_seq=1
received from fe80::2a0:deff:fe00:2: icmp_seq=1
2 packets transmitted, 4 packets received

なお、宛先のIPv6アドレスがリンクローカルアドレスの場合には、 通常のIPv6アドレスの代わりにスコープ付きアドレス を指定することもできます。 スコープ付きアドレスの書式は以下の通りです。

スコープ付きアドレス := IPv6アドレス%スコープ識別子

ここで、'%'はIPv6アドレスとスコープ識別子を分ける区切り文字で、 スコープ識別子は送信するインタフェースと関連付けられる整数値です。 スコープ識別子は、show ipv6 addressコマンドで、 インタフェース名の右横に表示されます。

> show ipv6 address
LAN1 scopeId 1 <====== スコープ識別子
 Received:    197 packets 23252 octets
 Transmitted: 77 packets 7936 octets

 link-local   ff02::1/64
 link-local   ff02::2/64
 link-local   fe80::2a0:deff:fe00:3/64
 link-local   ff02::1:ff00:3/64

3. 近隣探索におけるアドレス解決

IPv4におけるARPに相当するアドレスの解決は、 近隣探索(RFC2461)の枠組みに基づいて実施されます。 この結果は、show ipv6 neighbor cacheコマンドで確認することができます。

> show ipv6 neighbor cache
F Neighbor                                Linklayer Address Interface State
R fe80::2a0:deff:fe00:1                   00:a0:de:00:00:01 LAN1      STALE
  fe80::2a0:deff:fe00:2                   00:a0:de:00:00:02 LAN1      STALE

4. 経路制御

RTは、RIPngを用いた動的な経路制御をサポートしています。 まず、ルータが管理している経路表を見るためには、 show ipv6 routeコマンドを実行します。

> show ipv6 route
Destination              Gateway                  Interface Type
default                  fe80::2a0:deff:fe00:1    LAN1      RIPng
2001:0:5::/48            fe80::2a0:deff:fe00:1    LAN1      RIPng
2001:0:5:808::/64        fe80::2a0:deff:fe00:1    LAN1      RIPng
3ffe:0:808:9000::/64     fe80::2a0:deff:fe00:1    LAN1      RIPng

この例では、ルータがRIPngのパケットを受信しているので、 その経路が管理されています。

ルータに静的経路を設定するためには、 ipv6 routeコマンドを用います。このコマンドの書式は、 RTシリーズに標準で実装されている ip routeコマンドとほとんど同じです。 ただし、ip routeコマンドで設定可能な「フィルタ型経路」は、 IPv6ではサポートされていません。 以下に、IPv6の経路設定の例を示します。

# ipv6 route default gateway pp 1
# ipv6 route 3ffe:0:808::/64 gateway fe80:808::1

前者はPPインタフェースに向けた経路の設定であり、 後者はLANインタフェースに向けた経路の設定です。 LANインタフェースに向けた経路を設定する場合には、ゲートウェイとして、 リンクローカルアドレスを設定します。 複数のLANインタフェースを持つ機種では、 ゲートウェイを表すリンクローカルアドレスに、 スコープ識別子を併記する必要があります。

# ipv6 route 3ffe:0:808::/64 gateway fe80:808::1%1

RIPngを使用するためには、ipv6 rip useコマンドで、'on'を設定する必要があります。 このコマンドが設定されていないときには、RIPngの機能は働きません。 また、インタフェースごとに、 RIPngメッセージを送受信するか否かを設定することができます。 送信に関しては、ipv6 INTERFACE rip sendコマンドを用いて、 送信するか否かを制御します。 従来のRTシリーズのRev.4系以前のファームウェアでは、 デフォルトでLAN側にRIPを送信する仕様になっていますが、 IPv6ではデフォルトでRIPngを送信しません。また、受信に関しては、 ipv6 INTERFACE rip receiveコマンドによって、 RIPngパケットを受けるか否かを制御することができます。

なお、RIPngは、 ルーティングテーブルから独立した経路情報を管理しています。 この経路情報を見るためには、show ipv6 rip tableコマンドを実行します。

> show ipv6 rip table
Destination              Gateway                  Interface Metric TTL
2001:0:5:8::/64          fe80::2a0:deff:fe00:1    LAN1           1 167
3ffe:0:808:9000::/64     fe80::2a0:deff:fe00:1    LAN1           1 167
2001:0:5::/48            fe80::2a0:deff:fe00:1    LAN1           1 167
default                  fe80::2a0:deff:fe00:1    LAN1           2 167

RIPngで送受信する経路を制限したいときには、 ipv6 INTERFACE rip filterコマンドとipv6 filterコマンドを組み合わせて、 経路に対するフィルタリングを定義します。 まず、ipv6 filterコマンドで、フィルタを定義します。例えば、 2001:0:808::/64を通過させ、2001:0:5::/64を通過させたくなければ、 以下のように定義します。

ipv6 filter 1 pass 2001:0:808::/64
ipv6 filter 2 reject 2001:0:5::/64 

本来のipv6 filterコマンドは、プロトコルやポート番号を定義できますが、 ここでは、上記のように、 フィルタの番号とタイプ(pass/reject)と経路のみを設定します。 次に、このフィルタをインタフェースに適用します。例えば、 PPインタフェースで受信した経路をフィルタリングするときには、 以下のように設定します。

pp select 1
ipv6 pp rip filter in 1 2
pp enable 1

同様に、LANインタフェースから送信する経路をフィルタリングしたいときには、 以下のように設定します。

ipv6 lan rip filter out 1 2

ipv6 INTERFACE rip filterコマンドで記述したフィルタは、 記述された順番に評価されます。ひとつのフィルタに該当したら、 それ以降のフィルタは無視されます。 どのフィルタにも該当しなかったときには、 その経路は破棄されます。

5. ルータ広告

この節では、 RTがルータ広告(Router Advertisement) を送信するときに必要な設定について説明します。

まず、ipv6 prefixコマンドを用いて、広告するプレフィックスを設定します。 ipv6 prefixコマンドの1つ目の引数は、プレフィックスを参照するための識別子で、 1以上の整数値を自由に設定できます。

# ipv6 prefix 1 3ffe:0:808:9000::/64

各プレフィックスごとに、寿命やフラグなどのパラメータも設定することができます。 このためには、ipv6 prefixコマンドに、以下のようなオプションを追加します。

# ipv6 prefix 1 3ffe:0:808:9000::/64 valid_lifetime=20000 l_flag=on a_flag=on

プレフィックスを設定したら、 それを特定のインタフェースから広告するように設定します。 このためには、ipv6 INTERFACE rtadv sendコマンドを用います。

# ipv6 lan rtadv send 1 		# Rev.5以前
# ipv6 lan1 rtadv send 1		# Rev.5以降

6. IPV6CP

RTは、IPV6CPに対応しており、 PPPリンクを経由してIPv6パケットを転送することができます。 IPV6CPを制御するコマンドは用意されておらず、 常にIPV6CPの交渉を起動するようになっています。 Interface-Identifierは、 LANインタフェースのMACアドレスから計算されたものが用いられます。 任意のInterface-Identifierを設定することはできません。

以下にIPV6CPの交渉に関するsyslogの例を示します。このsyslogを見るためには、 あらかじめ、syslog debug onという設定をしておく必要があります。

2000/02/03 14:07:29: PP[LEASED] SEND IPV6CP ConfReq in STARTING
2000/02/03 14:07:29:   ff 03 80 57 01 06 00 0e  01 0a 02 a0 de ff fe 00
2000/02/03 14:07:29:   01 69
2000/02/03 14:07:29: PP[LEASED] RECV IPV6CP ConfReq in REQSENT
2000/02/03 14:07:29:   ff 03 80 57 01 05 00 0e  01 0a 02 a0 de ff fe 06
2000/02/03 14:07:29:   59 bc
2000/02/03 14:07:29: PP[LEASED] SEND IPV6CP ConfAck in REQSENT
2000/02/03 14:07:29:   ff 03 80 57 02 05 00 0e  01 0a 02 a0 de ff fe 06
2000/02/03 14:07:29:   59 bc
2000/02/03 14:07:29: PP[LEASED] RECV IPV6CP ConfAck in ACKSENT
2000/02/03 14:07:29:   ff 03 80 57 02 06 00 0e  01 0a 02 a0 de ff fe 00
2000/02/03 14:07:29:   01 69
2000/02/03 14:07:29: PP[LEASED] PPP/IPV6CP up
2000/02/03 14:07:29: PP[LEASED] Local  PP Interface-ID 02a0defffe000169
2000/02/03 14:07:29: PP[LEASED] Remote PP Interface-ID 02a0defffe0659bc

交渉されたInterface-Identifierは、 PPインタフェースのリンクローカルアドレスの下位64ビットとして用いられます。 交渉されたInterface-Identifierを確認するためには、 show status ppコマンドを用います。

7. TFTPD

RTは、IPv6に対応したTFTPDを持っているため、 IPv6経由で設定を読み出したり、リビジョンを更新することができます。 このためには、 tftp hostコマンドで、 アクセスを受け付けるノードのIPv6アドレスを設定しておく必要があります。

# tftp host 3ffe:0:808:9000::2

あるいは、ノードを特定したくないときには、

# tftp host any

と設定しても構いません。

8. パケットフィルタリング

IPv6パケットのフィルタリング機能を用いるためには、まず、フィルタを定義し、 その後で、LANやPPのインタフェースに対して、適用すべきフィルタを設定します。

フィルタの定義は、フィルタのタイプ、始点アドレス、終点アドレス、 プロトコル、ポート番号の記述からなります。以下にいくつかの例を挙げます。

# ipv6 filter 1 pass 3ffe:1:2:3::/64 3ffe:4:5:6::/64 tcp * telnet
# ipv6 filter 2 reject * * icmp6 * *
# ipv6 filter 100 pass * * * * *

フィルタを定義したら、インタフェースごとに、適用すべきフィルタを設定します。 例えば、 PPインタフェースで外向きのパケットに対してフィルタリングを実施したいときには、

# ipv6 pp secure filter out 1 2

のように設定します。ここで、'out'は、外向きのパケットを表すキーワードであり、 1と2は、先に定義したフィルタの番号を示します。フィルタリングは、 設定した順番で実施されます。この設定では、 1、2の順でフィルタとパケットが比較されます。

なお、フィルタリングされたパケットのサマリーが、 noticeレベルのsyslogに出力されます。 ただし、タイプが'pass'のフィルタに関しては、 サマリーは出力されません。 もし、'pass'のフィルタについてサマリーを出力したいときには、 'pass'の代わりに'pass-log'を指定します。 例えば、以下のように設定すると、 各インタフェースを通過する全てのパケットのサマリーを見ることができます。

# ipv6 filter 1 pass-log * * * * *
# ipv6 lan secure filter in 1
# ipv6 lan secure filter out 1
# pp select 1
# ipv6 pp secure filter in 1
# ipv6 pp secure filter out 1
# pp enable 1
# syslog notice on

9. IPv6 over IPv4 トンネリング

RTは、IPv6 over IPv4トンネルの機能を持っています。 この機能を使用するためには、トンネルインタフェースを定義する必要があります。 例えば、自分側のエンドポイントが172.16.1.1であり、 相手側のエンドポイントが172.16.2.1のとき、 次のようにトンネルインタフェースを定義します。

# tunnel select 1
# tunnel encapsulation ipip
# tunnel endpoint address 172.16.1.1 172.16.2.1
# tunnel enable 1

ここで、自分側のエンドポイントは、 ルータのLANインタフェースかPPインタフェースに設定されている必要があります。 PPインタフェースにアドレスを付与しないときや、 IPCPで動的にアドレスを取得するときには、 LAN(LAN1)インタフェースに設定したアドレスを設定してください。

トンネルインタフェースに対してIPv6パケットを送信するためには、 以下のように、ipv6 routeコマンドを設定します。

# ipv6 route fec0:808::/64 gateway tunnel 1

IPv6パケットを送信するときに、 IPv6パケットに対してフィルタを適用するためには、 ipv6 tunnel secure filterコマンドを設定します。 例えば、telnetを通過させるならば、次のような設定になります。 ここでは、送信(外向き)のフィルタを設定するので、 ipv6 tunnel secure filterコマンドで"out"を指定します。

# ipv6 filter 1 pass 2001::/64 * tcp * telnet
# tunnel select 1
# ipv6 tunnel secure filter out 1
# tunnel enable 1

逆に、IPv6 over IPv4パケットを受信したときに、 そこから取り出したIPv6パケットに対してフィルタを適用するためには、 以下のように設定します。 ここでは、受信(内向き)のフィルタを設定するので、 ipv6 tunnel secure filterコマンドで"in"を指定します。

# ipv6 filter 2 pass * 2001::/64 tcp telnet *
# tunnel select 1
# ipv6 tunnel secure filter in 2
# tunnel enable 1

また、IPv6パケットを包んだIPv4パケットは、 TCPやUDPとは異なる特殊なプロトコルのパケットとして扱われるので、 このパケットを通すために、次のようなフィルタを設定する必要があります。 ここで、172.16.1.1と172.16.2.1は、それぞれ自分側と相手側のエンドポイントです。 ip filterコマンドで、プロトコルとして"ipv6"を設定する点に注意してください。

# ip filter 1 pass 172.16.1.1 172.16.2.1 ipv6 * *
# ip filter 2 pass 172.16.2.1 172.16.1.1 ipv6 * *
# pp select 1
# ip pp secure filter in 1
# ip pp secure filter out 2
# pp enable 1

10. IPv4 over IPv6 トンネリング

IPv4 over IPv6トンネルを利用するときにも、 IPv6 over IPv4トンネルと同様にトンネルインタフェースを定義します。 例えば、自分側のエンドポイントが2001:1::1であり、 相手側のエンドポイントが2001:2::1のときには、 次のようにトンネルインタフェースを定義します。

# tunnel select 1
# tunnel encapsulation ipip
# tunnel endpoint address 2001:1::1/64 2001:2::1
# tunnel enable 1

ここで、自分側のエンドポイントは、 ルータのLANインタフェースかPPインタフェースに設定されている必要があります。 トンネルインタフェースに対してIPv4パケットを送信するためには、 以下のように、ip routeコマンドを設定します。

# ip route 192.168.1.0/24 gateway tunnel 1

11. 基本的な設定例

11.1. INS64で接続するときの設定例

[RTA54i(Rev.4)]
#
# ISDNに関する設定
#
pp line isdn
isdn local address 自分側の電話番号
pp select 1
isdn remote address call 相手側の電話番号
pp enable 1

#
# Ethernetインタフェースの設定
#
ipv6 lan address IPv6アドレス/64

#
# 静的経路の設定
#
ipv6 route default gateway pp 1

#
# RAの設定
#
ipv6 prefix 1 プレフィックス
ipv6 lan rtadv send 1
[RT60w(Rev.5)]
#
# ISDNに関する設定
#
pp line isdn
isdn local address 自分側の電話番号
pp select 1
isdn remote address call 相手側の電話番号
pp enable 1

#
# Ethernetインタフェースの設定
#
ipv6 lan1 address IPv6アドレス/64

#
# 静的経路の設定
#
ipv6 route default gateway pp 1

#
# RAの設定
#
ipv6 prefix 1 プレフィックス
ipv6 lan1 rtadv send 1
[RT300i(Rev.6)]
#
# ISDNに関する設定
#
line type bri1 isdn-ntt
isdn local address 自分側の電話番号
pp select 1
pp bind bri1
isdn remote address call 相手側の電話番号
pp enable 1

#
# Ethernetインタフェースの設定
#
ipv6 lan1 address IPv6アドレス/64

#
# 静的経路の設定
#
ipv6 route default gateway pp 1

#
# RAの設定
#
ipv6 prefix 1 プレフィックス
ipv6 lan1 rtadv send 1

11.2. 128kbit/s専用線で接続するときの設定例

[RTA54i(Rev.4)]
#
# ISDNに関する設定
#
pp line l128
pp enable leased

#
# Ethernetインタフェースの設定
#
ipv6 lan address IPv6アドレス/64

#
# RIPngの設定
#
ipv6 lan rip send on
pp select leased
ipv6 pp rip send on

#
# RAの設定
#
ipv6 prefix 1 プレフィックス
ipv6 lan rtadv send 1
[RT60w(Rev.5)]
#
# ISDNに関する設定
#
pp line l128
pp enable leased

#
# Ethernetインタフェースの設定
#
ipv6 lan1 address IPv6アドレス/64

#
# RIPngの設定
#
ipv6 lan1 rip send on
pp select leased
ipv6 pp rip send on

#
# RAの設定
#
ipv6 prefix 1 プレフィックス
ipv6 lan1 rtadv send 1
[RT300i(Rev.6)]
#
# ISDNに関する設定
#
line type bri1 l128
pp select 1
pp bind bri1
pp enable 1

#
# Ethernetインタフェースの設定
#
ipv6 lan1 address IPv6アドレス/64

#
# RIPngの設定
#
ipv6 rip use on
ipv6 lan1 rip send on
pp select 1
ipv6 pp rip send on

#
# RAの設定
#
ipv6 prefix 1 プレフィックス
ipv6 lan1 rtadv send 1