2011/06/03に掲載された記事です
設定(再)再掲
NGN IPv6に接続するためのSEILの設定を再掲します。
1. ppp add ipv6 keepalive none ipcp disable ipcp-address off ipcp-dns off ipv6cp \ enable authentication-method chap identifier <ppp account> passphrase \ <ppp password> tcp-mss auto 2. interface pppoe0 ppp-configuration ipv6 3. interface pppoe0 over lan1 4. route6 add default pppoe0 5. dhcp6 client enable 6. dhcp6 client interface pppoe0 7. dhcp6 client prefix-delegation subnet lan0 sla-id 0x1 enable 8. dhcp6 server interface lan0 enable 9. dhcp6 server interface lan0 dns add dhcp6 10. rtadvd enable 11. rtadvd interface lan0 enable 12. rtadvd interface lan0 other-flag on 13. rtadvd interface lan0 advertise auto 14. rtadvd interface lan0 advertise add interface-prefix
IPv6インターネット接続での設定情報の取得と配布
設定の解説の前に、NGN IPv6接続における各種設定情報の取得手段について説明します。
従来、IPv4でPPPoE接続を行う際は、
- PPPoEで上流のISPからIPアドレスひとつと、DNSサーバアドレス(典型的には2個)を受け取る
- ルータ自身でDNSプロキシを動作させ、LAN側にはDHCPでプライベートアドレスを払い出しつつ、自身のプライベートIPアドレスをDNSサーバのアドレスとして広報する
といった構成が一般的でした。しかし、IPv6 PPPoEではIPv6アドレスのプレフィクスやDNSサーバアドレスはPPP(oE)ではなくDHCPv6で配布されます。また、プライベートアドレスを使う必要のないIPv6では、DNSプロキシを使う必要もありません。その代わり、ISPが提供するDNSサーバをLAN側のPCが直接参照する構成をとることができます。
そのため、今回のIPv6 PPPoE接続では
- PPPoEで上流のISPとのIPv6の疎通を確保する
- DHCPv6で上流のISPからLAN内で使うIPv6アドレスプレフィクスを取得し、同時にDNSサーバアドレスも取得する
- Router Advertisementプロトコルを使ってIPv6アドレスプレフィクスをLAN内のPCに払い出す
- DHCPv6でLAN内のPCにISP提供のDNSサーバのアドレスを通知する
としています。
それではSEILの設定を見てゆきましょう。
dhcp6 clientコマンド
まずは、DHCPv6クライアント機能を有効にします。
5. dhcp6 client enable
次に、DHCPv6クライアント機能を動作させたいインタフェースを指定します。今回はPPPoE接続なのでpppoe0インタフェースになります。
6. dhcp6 client interface pppoe0
ここまでで、pppoe0インタフェースの先に存在するDHCPv6サーバから、DNSサーバ情報を取得できるようになりました。次に、DHCPv6サーバからIPv6のプレフィクス情報を取得するよう設定します。
7. dhcp6 client prefix-delegation subnet lan0 sla-id 0x1 enable
IPv4のPPPoEでは単一のIPアドレスか、あるいは/29等の比較的小さなプレフィクスを取得しましたが、IPv6ではかならずプレフィクスを取得することになります。このように、DHCPv6プロトコルを用いてプレフィクスを取得することをDHCPv6 Prefix Delegation (略してDHCPv6-PD)と呼びます。
また、subnet lan0 と sla-id 0x01 の各パラメータを指定することで
- LAN0がつながっているネットワークにSLA-IDが0x01のサブネットを割り当てる
という設定になります。「SLA-ID」はあまりなじみのない用語ですが、ここではPrefix Delegationで上流から得た(/64よりも短かい)プレフィクスにこの sla-id で指定した値をくっつけて/64のプレフィクスをつくり、subnet で指定したインタフェースに割り当てるという意味になります。
以上で上流のISPからDNSサーバとプレフィクスの情報を取得できるようになりました。
dhcp6 serverコマンド
次は、上流から取得した情報をLAN内のPC等に配布するDHCPv6サーバ機能を設定する dhcp6 server コマンドです。今回はlan0インタフェースの先にPCが接続される構成なので、lan0インタフェースでDHCPv6サーバ機能を有効にするよう設定します。
8. dhcp6 server interface lan0 enable
そして、DHCPv6でDNSサーバ情報を配布するように設定します。
9. dhcp6 server interface lan0 dns add dhcp6
末尾の dns add dhcp6 の設定は、
- DHCPv6クライアント機能で上流から取得したDNSサーバ情報をそのまま再配布する
という意味になります。dns add ... の後にはDNSサーバのIPv6アドレスを直接書くこともできます。例えば、DNSサーバが 2001:db8::beef:1 というアドレスで動作しているのであれば
dhcp6 server interface lan0 dns add 2001:db8::beef:1
と書きます。
rtadvdコマンド
最後はRouter Advertisementの送信を行うrtadvdコマンドの説明です。まずrtadvd機能を有効にします。
10. rtadvd enable
rtadvd機能は複数のインタフェースで同時に動作させることが可能です。今回はPC等がlan0インタフェースの元に接続されている構成なので、rtadvd機能がlan0インタフェースで動くよう設定します。
11. rtadvd interface lan0 enable
続けて、Router Advertisementを送出する際に"other configuration"フラグをセットするように設定します。
12. rtadvd interface lan0 other-flag on
"other configuration"とはわかりにくい名前ですが、要するに「このLANセグメントではDHCPv6プロトコルを使ってDNS サーバアドレス等の各種情報を取得できますよ」と宣言するものです。詳細についてはRFC4861を参照してください。
多くの環境では配布するプレフィクスについて特にひねった設定も必要ないので、SEILにおまかせの設定にしておきます。
13. rtadvd interface lan0 advertise auto
advertise auto を指定すると、rtadvd機能が動作するインタフェース(ここではlan0)に付与されているプレフィクスがそのまま配布されます。今回は dhcp6 client 機能のところで事前に
- LAN0がつながっているネットワークにSLA-IDが0x01のサブネットを割り当てる
という設定をしてありますから、lan0にはDHCPv6クライアント機能で得たプレフィクスに0x01をくっつけて得られたプレフィクスが付与されています。したがって、そのプレフィクスがRouter Advertisementプロトコルで再配布されることになります。
14. rtadvd interface lan0 advertise add interface-prefix
最後のコマンドはRouter Advertisementで配布したいプレフィクスの詳細なパラメータを指定するためのものです。ただし、今回の設定例では意味を持ちません。詳細なパラメータを指定したい場合は、このコマンドにいくつかパラメータを追加した上でひとつ上の行の
rtadvd interface lan0 advertise auto
を
rtadvd interface lan0 advertise manual
と変更してください。advertise manual を指定すると、SEILにおまかせのプレフィクスではなく advertise add interface-prefix 以降で設定したプレフィクス情報が配布されます。さまざまなパラメータが指定できますので、SEILのコマンドリファレンスのrtadvdコマンドの項を参照して試してみてください。
以上でNGN IPv6に接続するためのコマンドの解説を終わります。SEILでは、今回説明した以外にもIPv6関連のさまざまな設定が可能です。SEILのコマンドリファレンスを参考に試してみてください。