旧ページは
こちら
OCNIPv6とは
OCNIPv6は、
OCNが行っているL2TPによるIPv6接続サービスです。
OCNユーザーであれば月額315円で手軽にIPv6接続を行うことが出来ます。
このサービスでは、固定プレフィックス/64・非固定プレフィックス/64のグローバルIPv6アドレスが
それぞれ1ブロックずつ割り当てられますので、実質的にほぼ無限のグローバルアドレス空間が手に入ります。
グローバルアドレスはなかなか便利なもので、NAT越え問題や動的IPによる問題を一挙に解決してくれます。
これは一度使うと便利でやめられません(^^;;
また、IPv6がIPSecネイティブ対応という点も見逃せません。
OCNではWindowsXP/Windows7対応の接続プログラムを用意していますが、
このメモでは安いPCでも充分な性能を発揮してくれるLinuxをルータに仕立て上げ、
これを用いてOCNIPv6へ接続することで、いつでも安心して利用できる環境の構築を目指します。
必要なもの
- パソコン1台(ちなみに、私はメモリ256MB、ディスク5GBのXen仮想サーバです)
- Fedora14のインストールディスク
- WIDE-DHCPv6最新版
インストールの前に
-
XenやKVMを利用している場合、このメモの通りに進めるにはネットワークをブリッジモードで構成しておく必要があります。
NATで構成している場合、ホスト側の/etc/sysctl.confへ
「net.ipv6.conf.all.proxy_ndp = 1」
を入れておく必要があるかもしれません。
-
XenやKVMを利用している場合、ホスト側にもIPV6フォワーディング設定が必要です。
/etc/sysconfig/networkへ
「IPV6FORWARDING=yes」
を入れる必要があります。
※既にFedora14以上がインストール済みであることが前提です。
※yum -y updateしてシステムを最新にした上で行うことをお勧めします。
インストール/設定が必要なソフトウエア
- xl2tpd - L2TPトンネリングに使用
- WIDE-DHCPv6 - PrefixDelegationに使用
- radvd - IPv6ルーティング情報を広告するのに使用
- ip6tables - IPv6ファイヤーウォール
- named - IPv6対応DNSサーバー
- dhcp - DHCPv6サーバ
インストール/設定手順
-
事前確認
-
/etc/sysconfig/network-scripts/ifcfg-$eth
イーサネットインターフェースにIPv6アドレスを設定します。
$〜、をそれぞれ以下に置換します。
- $addrv6 - このインターフェースにつけるIPv6アドレス(例 "2001:****:****:****::efef:0001/64")
- $eth - イーサネットのデバイス名(例 "eth0")
-
NetworkManagerを無効にしてnetworkを使う
Fedora14はNetworkManagerがデフォルトで利用されていますので、これを無効にしてnetworkを利用する設定に変更します。
-
RouterAdvertisement(RA)を受け取らない。
ルータにしますので、他のルータからの広告を受け取らないようにします。
-
IPv6パケットフォワード・パケットフィルタの設定
-
パケットフォワーディングの設定
/etc/sysconfig/networkにipv6パケットフォワードを許可するパラメータを追加します
-
ip6tablesの設定
ip6tablesの設定ファイル/etc/sysconfig/ip6tablesを次のように記述します。
ただし、$〜はそれぞれ次のように置換します。
- $eth - LANが接続されているイーサネットインターフェース(通常eth0)
- $prefix - OCNから割り当てられた固定プレフィックス(2001:****:****:****::/64)
なお、ここで示すのは原則LAN内からのパケットは通過、LAN外からのパケットは破棄、される設定です。
また、サーバへのアクセスはLAN内、TCP22番(SSH)、UDP53番(DNS)、LinkLocalのDHCP(Server/Client)のみ許可します。
IPv6サーバーを外部に公開したい場合は別途設定を追記する必要があります。
また、スプーフィング対策のためにも、グローバルアドレスに対しては入力インターフェース名も指定するようにした方が良いと思います。
※Fedora14のip6tablesはコネクションの追跡が可能であり、stateが利用可能です。
-
ip6tables設定反映
最後にip6tablesを再起動し、設定を反映させます。
また、パケットフォワーディングも開始させます。
-
IPv4パケットフィルタの設定例
-
IPv4パケットフィルタの設定
このメモとはあまり関係ありませんが、一応IPv4パケットフィルタの設定も記述しておきます。
iptablesの設定ファイル/etc/sysconfig/iptablesを次のように記述します。
ただし、$〜はそれぞれ次のように置換します。
- $eth - LANが接続されているイーサネットインターフェース(通常eth0)
- $netaddr - LANで利用しているネットワーク(例:192.168.0.0/24)
-
iptables設定反映
最後にiptablesを再起動し、設定を反映させます。
-
xl2tpdのセットアップ
-
xl2tpdのインストール
xl2tpdのインストールは次のコマンドで可能です。
-
/etc/xl2tpd/xl2tpd.confの設定
/etc/xl2tpd/xl2tpd.confを次のように作成します。ただし、$〜、をそれぞれ以下に置換します。
- $userid - OCNのユーザーID(****@***.ocn.ne.jp)
- $l2tpserv - OCNから送られてきた固定プレフィックス用接続サーバ名
-
/etc/ppp/peers/ocn-ipv6の設定
/etc/ppp/peers/ocn-ipv6を次のように新規にファイルを作成します。ただし、$〜、をそれぞれ以下に置換します。
- $userid - OCNのユーザーID(****@***.ocn.ne.jp)
-
/etc/ppp/chap-secretの設定
次のコマンドを実行します。ただし、$〜、をそれぞれ以下に置換します。
- $userid - OCNのユーザーID(****@***.ocn.ne.jp)
- $password - OCNの接続パスワード
-
接続スクリプト(ocn-ipv6.sh)の作成と設定
/etc/ppp/peers/ocn-ipv6.shへ次のファイルを作成します。
ただし、$eth、を以下に置換します。
- $eth - イーサネットインターフェース名(例:eth0)
次に、パーミッションの設定とディレクトリの作成を行います。
最後に、/etc/ppp/ipv6-up、/etc/ppp/ipv6-downを編集し、
ppp(IPv6CP)のup/downに合わせてocn-ipv6.shを実行されるよう設定します。
※注:ちょっとスマートじゃないような...。何か良い方法がありましたらお教えいただけますと嬉しいです。
なお、/etc/ppp/ipv6-downの方は、上記記述の場合、自動で再接続を試みるようになります。ちょっと手抜きですが...。
reloadをstopに変えることで、再接続させないようにできます。なお、最低でもstopは入れておいてください。
さもなくば、DHCPv6 Clientが多重起動することになります。
-
xl2tpd起動設定
xl2tpdを起動し、サーバの起動時にxl2tpdサーバも起動するよう設定します
設定は次のコマンドで可能です。
-
(参考)xl2tpdによるL2TP接続〜ルーティング開始までの流れ
xl2tpdによるOCNIPv6トンネリングの開始・終了は以下のコマンドで行います。
開始することで、インターフェースppp0が出来あがります。
次に、WIDE-DHCPv6 Clientを用いて、OCNからプレフィックスを割り当ててもらいます。
このときWIDE-DHCPv6には以下の設定ファイルを渡します。
以下は、PPPインターフェース"ppp0"、イーサネットインターフェース"eth0"での記述例です。
WIDE-DHCPv6 Clientの起動は以下コマンドで可能です。
これを実行した後、ifconfigでイーサネットインターフェースを見ると、グローバルIPv6アドレスがわり当たっていることが確認できます。
このままではパケットがppp0へルーティングされませんので、以下コマンドを用いてppp0へIPv6パケットをスタティックにルーティングしてやります。
以上でOCNIPv6へIPv6パケットがルーティングされるようになります。
あとはradvdを用いてルーティング情報を広報し、DHCPv6でIPv6アドレスを配布するだけで、
各クライアントはIPv6通信ができるようになります。
先に記したocn-ipv6.shはPPPのIPv6CP完了時に、以上一連の処理を自動で行います。
スクリプトが気に入らないっという方は、自分でサクッと作ってしまった方が良いかもしれません(^^;;
※xl2tpdに終了コマンドを送った時は、/etc/ppp/ipv6-downは実行されない点に注意が必要です。
ipv6-downが実行されるのは、リンクが何らかの原因で消失した時です。
※ppp0へのスタティックルートはppp0消失と同時に消えますので、L2TP接続毎にルートの再設定が必要です。
その際はDHCPv6 Clientの再起動も必要です。
-
WIDE-DHCPv6のセットアップ
-
まず、http://sourceforge.net/projects/wide-dhcpv6/よりWIDE-DHCPv6のソースをダウンロードします
-
適当な場所で展開して、インストールします。
インストールは次のコマンドで可能です
なお、WIDE-DHCPv6 Clientはocn-ipv6.shより自動起動されますので、自動起動設定等は不要です。
また、dhcp6cctlkeyは必須です(ないとWIDE-DHCPv6 Clientを起動できません)
-
radvdのセットアップ
-
radvdのインストール
IPv6ルーティング情報を広告するradvdをインストールします。
radvdでIPv6アドレスを一緒に配布することもできますが、このメモではIPアドレスはDHCPv6で配布し、
radvdではルーティング情報のみ配布させることを前提にします。
インストールは次のコマンドで可能です。
-
/etc/radvd.confの設定
/etc/radvd.confを次のように作成します。ただし、$〜、をそれぞれ以下に置換します。
- $eth - LANに接続されているイーサネットインターフェース(通常eth0)
- $prefix - 固定プレフィックス/プレフィックス長 (2001:****:****:****::/64)
DHCPv6を利用するか否かはAdvManagedFlagのon/offで切り替えることが出来ます。
このメモではDNS等もDHCPv6で設定しますので、AdvManagedFlag onを基本としますが、
DHCPv6を利用しないAdvManagedFlag off(デフォルトoffのため記述しない)の例も記載しておきます。
なお、DHCPv6を利用しない場合、DHCPv4でDNS等を設定するなどが必要かもしれません。
※当然DHCPv4ではIPv4 DNSしか設定できませんので注意。
↓DHCPv6を利用する場合(Statefull設定)
↓DHCPv6を利用しない場合(Stateless設定)
-
radvd起動設定
radvdを起動し、サーバの起動時にradvdサーバも起動するよう設定します
設定は次のコマンドで可能です。
-
IPv6対応DNSサーバのセットアップ
IPv6対応のDNSを名前解決に利用しないと特にIPv6対応アプリケーションで接続に物凄く時間がかかる、という現象が生じます。
これを回避するため、IPv6対応DNSがLAN内に無い場合はIPv6対応DNSを用意することをお勧めいたします。
-
named(BIND9)のインストール
named(BIND9)のインストールは次のコマンドで可能です。
また、インストール後、ルートゾーンの更新、bindコントロール用共通鍵の生成も一緒に行います。
※Fedora14のbind-chrootは、/etc/named/をbind起動時に/var/named/chroot/etc/named/へmount -t bindしてくれます。
そのため、bind設定ファイルを/var/named/chroot以下へわざわざ移動させる必要はありません。
-
/etc/named.confの設定
/etc/named.confを次のように作成します。ただし、$〜、をそれぞれ以下に置換します。
- $domain - このネットワークのドメイン名(例:hoge-net.local)
-
ゾーンの作成
/etc/named/$domain.zonesを次のように作成します。ただし、$〜、を以下に置換します。
- $domain - LAN内で使うドメイン名(例:hoge-net.local)
- $rev_net - LAN内のネットワークアドレスをひっくり返した値。
(例: 192.168.254.0ネットワークの場合、"254.168.192")
- $rev_prefix - 割り当てられたIPv6固定プレフィックスをひっくり返した値。
(例: 2001:abcd:ef12:3456::/64の場合、"6.5.4.3.2.1.f.e.d.c.b.a.1.0.0.2")
-
正引き設定
/etc/named/$domain/$domain.dbを次のように作成します。ただし、ファイル名・ファイル内容共に$〜、を以下に置換します。
- $domain - LAN内で使うドメイン名(例:hoge-net.local)
- $addr - このサーバのIPv4プライベートアドレス
- $addrv6 - このサーバのIPv6グローバルアドレス
- $hostname - このサーバのホスト名(例:gateway)
-
IPv4逆引き設定
/etc/named/$domain/$rev_net.in-addr.arpa.dbを次のように作成します。ただし、ファイル名・ファイル内容共に$〜、を以下に置換します。
- $rev_net - LAN内のネットワークアドレスをひっくり返した値。
(例: 192.168.254.0ネットワークの場合、"254.168.192")
- $domain - LAN内で使うドメイン名(例:hoge-net.local)
- $addr_host - このサーバのIPv4プライベートアドレスのホストアドレス
(例:192.168.254.2の場合、"2")
- $hostname - このサーバのホスト名(例:gateway)
-
IPv6逆引き設定
/etc/named/$domain/$rev_prefix.ip6.arpa.dbを次のように作成します。
ただし、ファイル名・ファイル内容共に$〜、を以下に置換します。
- $rev_prefix - 割り当てられたIPv6固定プレフィックスをひっくり返した値。
(例: 2001:abcd:ef12:3456::/64の場合、"6.5.4.3.2.1.f.e.d.c.b.a.1.0.0.2")
- $domain - LAN内で使うドメイン名(例:hoge-net.local)
- $addr_host6 - このサーバのIPv6ホストアドレスをひっくり返した値。
(例: 2001:abcd:ef12:3456::2/64の場合、"2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0")
- $hostname - このサーバのホスト名(例:gateway)
-
DNSリゾルバ設定
/etc/resolv.confを次のように作成します。ただし、$〜、を以下に置換します。
- $domain - LAN内で使うドメイン名(例:hoge-net.local)
-
DNS起動設定
最後にDNSを起動し、サーバの起動時にDNSサーバも起動するよう設定します
設定は次のコマンドで可能です。
無事起動できたら、nslookup www.kame.netでIPv4アドレスが、nslookup -type=AAAA www.kame.netでIPv6アドレスが、
それぞれ引ける事を確認してください。また、ssh 、でこのサーバーへログインできることも確認してください。
-
DHCPv6サーバのセットアップ
IPv6アドレスの固定化等が必要無い場合、DHCPv6は必要ありません。(ステートレス設定で構成します)
固定IPv6サーバ等を置く場合、DHCPv6を利用した方が便利です。また、DHCPv6を利用するとIPv6 DNSアドレスを設定できますので便利です。
-
dhcpのインストール
dhcpのインストールは次のコマンドで可能です。
※Fedora14のdhcpはIPv4/IPv6両方に対応しています。
-
DHCPv6サーバ設定
/etc/dhcp/dhcpd6.confを次のように作成します。ただし、$〜、を以下に置換します。
- $domain - LAN内で使うドメイン名(例:hoge-net.local)
- $addrv6 - DNSサーバIPv6アドレス(このサーバのIPv6アドレス)
- $prefix - OCNから割り当てられた固定プレフィックス(2001:****:****:****::/64)
- $net - ご利用中のLANのネットワークアドレス
- $min - 貸し出し開始IPv6ホストアドレス(例: fefe:1)
- $max - 貸し出し終了IPv6ホストアドレス(例: fefe:10)
-
DHCPv6起動設定
最後にDHCPv6を起動し、サーバの起動時にDHCPv6サーバも起動するよう設定します
設定は次のコマンドで可能です。
無事起動できたら、お使いのパソコンを再起動し、正しくDHCPv6からIPv6アドレスが割り当てられていることを確認してください。
-
initスクリプトの作成
-
OCNIPv6をサーバ起動・終了に合わせてUp/Downさせるinitスクリプトを作成します。
このスクリプトは、メモの通り設定されている限り、特に編集の必要はありません。
-
システムへの登録
作成したOCNIPv6をchkconfigを用いてinitスクリプトとして登録します。
特に、chkconfig --addは、行わないと正常にシステム終了時にOCNIPv6が終了され無くなりますので注意が必要です。
OCNIPv6を正しく終了させずにシャットダウンすると、しばらくL2TP接続時に認証が通らなくなります。
これでサーバを再起動すると、自動でOCNIPv6へ接続され、IPv6パケットのルーティングをはじめるはずです。
また、Windows7を利用中であれば、しばらくしてWindows7にIPv6アドレスが割り当てられます。
再起動したくない場合は
を実行することで、同様のことが可能です。接続後、ping6 www.kame.netで応答が帰ってくれば設定は成功です。
また、お使いのパソコンからhttp://www.kame.netにアクセスした時、
カメが踊っていれば使用中のPCも正しくIPv6アドレスが割り当てられています。
カメが踊っていなかったりモザイクが掛かっていたりする場合、IPv6でアクセスできていません。
その場合、以下を確認してみてください。
- サーバ上でifconfigを実行し、pppインターフェースが存在することを確認する。
- pppインターフェースが無い場合は、再起動してみる。また、再起動後、使っているパソコンも再起動する。
- pppインターフェースがある場合は、/etc/rc.d/init.d/OCNIPv6 stopを実行後、サーバとパソコンを再起動する。
- XenやKVMを利用している場合は、ホスト側でIPv6パケットフォワーディングが有効になっていることを確認。
- このページにて紹介されているスクリプトは全てフリーです。
著作権は放棄しませんが、再配布・改造など自由に行ってくださって構いません。
- すべて無保証です。ご利用の際は自己責任でお願いいたします。