連載
» 2002年10月29日 00時00分 UPDATE

IPv6導入虎の巻(3):IPv6で内部のルーティングを設定しよう!

[鈴木伸介,日立製作所]

 IPv6による外部への接続の設定が済んだら、次は内部のルーティングを設定しよう。IPv4と比べ、LAN回線やルータの設定のIPv6ならではの注意点について、設定方法を紹介しながら、説明していく。

IPv6によるルーティングを行う

 前回の「IPv6で外部接続しよう!」では、IPv6により外部接続するための設定事例を紹介した。今回は、内部でIPv6ルーティングの設定をどのようにして行うかについて解説する。図1でいうと、赤枠で囲んだ企業網内の回線、およびその回線につながるルータの部分である。

図1 ある企業網における、要素ごとのIPv6導入ケース。今回は、赤枠で囲まれた部分について説明していく 図1 ある企業網における、要素ごとのIPv6導入ケース。今回は、赤枠で囲まれた部分について説明していく

基本的にはIPv4と同じ

 本連載の第1回目に説明したように、IPv6は基本的にIPv4と同じ動作をする。そのためIPv6でもIPv4と同様に経路制御や端末へのアドレッシングを行わないと、パケットをしかるべき送り先に中継することができない。

 逆に、それ以上のことは特に考慮しなくてもIPv6ネットワークは十分運用できる。以下IPv6ネットワークにおいてこれら2つをどのように設定すればよいかについて、注意点を交えつつ説明する。

経路制御はIPv4と同じで十分

 IPv6経路制御プロトコルはIPv4経路制御プロトコルを基にして設計されている。そのためIPv4 経路制御プロトコルには、ほぼ必ずそのIPv6版が存在する(表1)。

IPv4 IPv6
RIP RIPng
OSPF OSPFv3
ISISv4 ISISv6
IGRP なし
BGP BGP4+
表1 IPv4経路制御プロトコル/IPv6経路制御プロトコルの対応表

 表1のプロトコル対応表から分かるように、例えばRIPやOSPFの設定がなされているIPv4ネットワークでIPv6経路制御を行う場合には、RIPやOSPFとまったく同じ要領でそれぞれRIPngやOSPFv3の設定をすればよい(図2)。

●Ciscoルータ (RIP/RIPng)

[RIP]
Router(config)# router rip
Router(config)# version 2
Router(config)# network 192.168.1.0
[RIPng]
Router(config)# ipv6 router rip 290
Router(config)# interface fastEthernet 1/2
Router(config-if)# ipv6 rip 290 enable

●日立製作所 GR2000 (RIP/RIPng)

[RIP]
Router(config)# rip interface FE12 ripin ripout
[RIPng]
Router(config)# ripng interface FE12 ripin ripout
図2 RIPを動かす設定とRIPngを動かす設定

 ここで、IPv6経路制御プロトコルと、IPv4経路制御プロトコルの大きな違いをまとめてみると、

  • プロトコル通信にIPv6アドレスを用いること(大抵は「ff02::」で始まるリンクローカルマルチキャストアドレス)
  • nexthopがリンクローカルアドレス(「fe80::」で始まるアドレス) になることが多い

の2点くらいなものだ。そのほかの基本的なプロトコル挙動はIPv4のときとそれほど変わらない。だからネットワーク運用時の経路制御プロトコル周りのトラブルシューティングは、IPv4の場合と同様に行うことができる。

IPv6経路制御における注意事項

 IPv6経路制御はほとんどIPv4と同様であるが、IPv6ならではの話がないわけでない。ここでは、そうしたIPv6経路制御に特有な注意事項をまとめる。

1. サイトローカルアドレスは外部へ広告しない

 「fec0::」で始まるIPv6アドレスはサイトローカルアドレスと呼ばれるものであり、「サイト」という一定範囲内で一意なアドレスである。

 これはIPv4でいうところのプライベートアドレスのようなものであるため、扱いもそれに準じる。だからサイトローカルアドレスを社内で用いている場合、その経路情報を外部ISPへ広告してはならない(その場合外部と通信するためには、社内に外部通信用のプロキシを設置する必要がある)。

2. 上流へは集約経路を投げる

 IPv6ネットワーク運用では経路集約を求められることが多い。/48のプレフィックスをもらった場合を例にとると、その中だけで6万5536個の/64のプレフィックスを生成できるため、内部で割り振ったプレフィックスを経路集約を行わずにそのまま上流ISPへ広告すると、ISP側にとって大きな負担になるからである。

 そのため、例えば/48をもらった場合ならば、/48 1つだけを上流ISPへ広告するか、もしくは/48を静的にルーティングすることが望ましい(どちらにするかは上流ISPの設定により決定される)。

3. 上流ISPが複数ある場合

 複数の上流ISPと契約した場合、それぞれのISPからプレフィックスをもらうことになる。この場合社内の各ネットワークには各ISPからもらったプレフィックスをすべて割り振るのが原則である。

 言い換えると、どこかのネットワークにはISP-1のプレフィックスだけを割り振るという運用はしない、ということである。仮にISP-1へのリンクが途絶えたときにISP-2へ迂回しようにも、ISP-1のプレフィックスしか割り振っていないのでは迂回のしようがないからだ。

 ただし、この場合に正しくルーティングするのはかなり難しい仕事である。そのためこのようなケースでは、次の2つのうちいずれかの手段を講じるのが現実的だろう。

  • 同じISPへ複数対外線を張る(単純にやるとそれぞれの対外線に違うプレフィックスが割り当てられるので、ISP側とよく交渉する必要がある)
  • APNICなりJPNIC経由なりで自らプレフィックスを取得する(BGPオペレーションが必須になる)

4. ソースアドレスにも注意

 「あるネットワークAに疎通しない」という障害にみまわれたときには、ネットワークAの経路情報だけでなくネットワークAへ通信するときのソースアドレスのプレフィックスが正しくルーティングされているかを確認する必要がある。端末からネットワークAまでは到達可能だったとしても、逆方向の通信がうまくいっていない可能性もあるからである。

 3で述べたようにIPv6ネットワークでは1つのネットワークに複数のプレフィックスを割り振ることもよくある(例:複数ISPからプレフィックスをもらっている場合)。特にこのような環境下では通信に際してどのアドレスがソースとして用いられるかがあまり自明ではないので、ルーティングのトラブルシューティングに際しては、ソースアドレスにも着目することが大切だ。

5. リンクローカルマルチキャストでの通信

 IPv6経路制御に固有な特徴として、「プロトコル通信にリンクローカルマルチキャストアドレスを用いる」と説明した。これに関連して起こり得る障害やその確認方法について説明する。

 特にLANスイッチを間に挟んだネットワークにおいて、IPv4/IPv6に関わらずマルチキャスト通信関連のトラブルが起こることがまれにある*1。そのほか、プロトコルVLANを用いてVLANを構築した場合に、IPv4パケットとIPv6パケットの挙動が変わることは自明だろう。

 そのようなこともあり得るので、IPv6経路制御が異常動作しているときには、まずIPv6経路制御に関連したリンクローカルマルチキャストパケットの疎通を最初に確認するとよい。具体的にはIPv6

pingでそのリンクローカルマルチキャストアドレスあてにpingを打ち、しかるべき相手から返事が返ってくればOKである(図3)。異常時でも自分だけからは返事が返ってくることが多いので、自分ではない端末からの応答であることを確認するのが大切だ。

*1もともとLANスイッチは、同じネットワーク内にデータを必要以上にブロードキャストしないことを目的に作られている。一方マルチキャスト通信は、同じネットワーク内にデータをブロードキャストすることを狙いにした通信である。つまりLANスイッチのもともとの設計方針は、マルチキャスト通信とまったく相容れないものになっているのである。もちろん、一般に市場に出回っているLANスイッチはこの点を考慮して設計されているので、少なくともIPv4マルチキャストパケットは問題なく処理できる。しかしながら、LANスイッチによるIPv6マルチキャストパケット受信が設計の想定外だとしていたりすると、不幸にして思いもしない誤動作をすることもあり得る。


Router# 
ping ipv6 ff02::9 interface ether0
PING6(56=40+8+8 bytes) fe80::2000:1 --> ff02::9
16 bytes from fe80::210:f3ff:fe03:4d0, icmp_seq=0 hlim=64 
time=1.305 ms
16 bytes from fe80::203:47ff:fea5:3085, icmp_seq=0 hlim=64 
time=4.993 ms(DUP!)
16 bytes from fe80::201:3ff:fe45:1736, icmp_seq=0 hlim=64 
time=5.184 ms(DUP!)
16 bytes from fe80::203:47ff:fea5:3257, icmp_seq=0 hlim=64 
time=5.375 ms(DUP!)
16 bytes from fe80::2e0:18ff:fe98:f19d, icmp_seq=0 hlim=64 
time=5.567 ms(DUP!)
16 bytes from fe80::203:47ff:fec4:b6e3, icmp_seq=0 hlim=64 
time=5.758 ms(DUP!)
16 bytes from fe80::290:ccff:fe0f:db7f, icmp_seq=0 hlim=64 
time=5.951 ms(DUP!)
図3 RIPngリンクローカルマルチキャストへの疎通確認(日立GR2000での表示例)。ether0上に存在する7台のRIPngルータから応答を受信している*2

*2図3で用いている「ff02::9」はRIPngのリンクローカルマルチキャストである。ほかのプロトコルに関しては、以下の要領で疎通確認すればよい。

  • OSPFv3なら上と同様に「ff02::5」あてに送信すればOK
  • BGP4+はユニキャストで経路制御通信を行うので、普通にIPv6 pingで相手ルータへ疎通確認すればOK
  • ISISv6はISISv4と同様にOSIプロトコルで経路制御通信を行うので、IPv4経路制御が正常動作していればIPv6経路制御も正常に動くはずである

端末へのアドレッシングはIPv4よりも単純

 ルータ間のIPv6経路制御ができたら、後は端末へしかるべきIPv6アドレスとIPv6デフォルトルートを設定すればよい。

 IPv4の場合は各端末に手動でアドレスやデフォルトルートの設定をするか、もしくはDHCPで自動設定できるようにするため管理者がDHCPサーバを立ち上げる必要があった。

 IPv6ではこの辺の作業が大幅に簡略化されている。この辺りを自動化する仕組み(RA(Router Advertisement)=ルータ広告)が最初から組み込まれているからだ。唯一行わなければならない作業は、端末のぶら下がっているルータのインターフェイスでRAを有効にすることだけだ(図4)。

●Ciscoルータ

Router(config)# interface 
fastEthernet 1/2
Router(config-if)# ipv6 nd prefix-advertisement 3ffe:ffff:1000::/64 
8640 0 86400 onlink autoconfig

●日立製作所 GR2000

Router(config)# ra interface 
networkA prefix 3ffe:ffff:1000::/64 valid-lifetime 86400 preferred-lifetime 
86400
図4 RAを有効にする設定

RAの動作原理

 RAの動作について以下に簡単に説明する。

 ルータは、RAを有効にしたインターフェイスへ定期的にRAパケットを広告している。このパケットには、そのネットワークのプレフィックス(通常64bit)やその寿命などのパラメータが含まれている。端末がそのネットワークにつながりRAパケットを受信すると、端末はRAパケットのプレフィックスと自分のリンクローカルアドレスの下位64bitとを組み合わせて、IPv6アドレスを生成する。そしてRAパケットの送信元をデフォルトルータとして扱う(図5ケース1)。

 これではRAパケットが届くまで、端末をネットワークにつなぐことができず不便なので、端末からRAパケットの送信を促すこともできる。具体的にはRS(Router Solicitation)パケットを「ff02::2」(そのネットワーク内の全ルータあてマルチキャスト)へ送信すると、そのネットワーク内の全ルータがそれに応答してすぐRAパケットを投げ返してくれるので、必要なときにすぐアドレスを割り当ててもらうことができる(図5ケース2)。

図5 RAの動き 図5 RAの動き

 なお端末のリンクローカルアドレスは、端末のイーサネットカードのMACアドレスなどからネットワーク内で一意になるように端末内で自動的に生成される。

RAの運用で気をつけること

 実際にRAを使って端末のアドレス自動設定を行うにあたって、気を付けることを以下に列挙する。

1. ルータのアドレスは手動設定

 RAはあくまで端末のアドレスを自動設定する技術であり、ルータのインターフェイスのアドレスを自動設定させるものではない。 最近は特にSOHOルータ向けのアドレス自動設定技術(prefix delegation)もでてきているが、ここでは説明を割愛する。

 そのため、RAで広告するプレフィックスから適当なアドレスをルータのインターフェイスに設定する必要がある。複数のプレフィックスをRAで広告するときには、そのすべてのプレフィックスについて、ルータのインターフェイスへアドレスを設定する必要がある。そうしないと、RAで広告しているプレフィックスを経路制御プロトコルでほかのルータへ広告できないので、端末のアドレスを自動設定できても端末から外への通信はうまくいかないからである。

2. プレフィックスは64bit

 RAを用いたアドレス自動生成は、64bitのプレフィックスを用いた場合についてのみ仕様が規定されている。そのため端末実装によっては64bit以外のプレフィックスを受けてもアドレスの自動生成ができないことがある。

 よってRAで広告するプレフィックスのプレフィックス長は64bitにしておくべきである。

3. ルータ以外の端末からのRA

 設定ミスなどにより、ルータ以外の端末からRAパケットが広告されてしまった場合、誤ったプレフィックスやデフォルトルータが端末に設定される危険性がある。

 そのような設定をしないことがまず重要だが、万が一そうしてしまった場合には、ルータ側から以前のRAを無効にするようなRA広告を行う必要がある。もしルータ側でそのようなことができないならば、学習したRA情報を全端末でリセットする必要がある。

 RAパケットにはそのルータの有効期限を示すRouter Lifetimeというパラメータが含まれている。そのパラメータを0にしたRAを一度送れば、端末側は過去にそのルータから受けたRAを無効にする。一度端末に届けば十分なので、後々の設定ミスを防ぐためにも、しばらくRouterLifetime 0のRAを送ったらRAを無効にすることをお勧めする(図6)。

●Ciscoルータ

Router(config)# interface fastEthernet 1/2
Router(config-if)# ipv6 nd ra-lifetime 0

●日立製作所 GR2000

config: ra interface networkA lifetime 0
図6 以前のRAを無効にする設定

 なおRA広告の中の1プレフィックスだけ無効にしたいという場合には、プレフィックスの有効期限(図4の設定例にある86400という値)を「0」にしておけばよい。


 今回は、内部ネットワークのIPv6化におけるルーティング設定について解説した。次回は、DNS設定の手順について解説していく。


Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。