Category:
Linux
IIJmio: IPv6仮想アクセスについて
VAIO type P の WWAN で契約したプロバイダの IIJmio ですが、VPN 経由で v6 ネットワークを利用できる「IPv6 仮想アクセス」が便利です。
回線契約者のみが使用できるサービスですが、中の人に「自分達で使いたかったから、IIJ 以外の回線からでも利用できるようにした」と教えて貰いました :-)
公式サポートは Windows のみですが、実際は PPTP で IPCP 無しの PPP 接続して RA を受けているだけなので、その他の OS でも PPTP クライアント (Linux では PPTP Client など) を入れれば使えちゃいます。v6 アドレスは /64 で降ってくるので、radvd などで広告すれば家中の PC を(まさに)zero-configuration で v6 対応クライアントにできちゃいます。複数セッション張ることもできるみたいですが NAPT の後ろだとルータの対応が必要なので 1 台で受けちゃった方が面倒が少ないでしょう。
Linux (CentOS 5.5) で IPv6 仮想アクセスを利用するには、
IPv6 では原則的に「すべてのコンピュータがグローバル IP アドレスを持つ」状態になるので、ファイアウォール(ip6tables)の設定を行う前に radvd を起動するとかなり危険です。私のサーバでは、ルーティング(FORWARD チェイン)のポリシーを「出力はすべて許可、入力は TCP の SYN flag が立っていないもののみ許可」にして運用しています。
*
Mac OS X で IPv6 仮想アクセスを利用するには、最初に sudo sysctl -w net.inet6.ip6.accept_rtadv=1 を実行しておき、システム環境設定の「ネットワーク」で PPTP 接続を作成するだけで OK です。sysctl の設定値は再起動すると失われてしまうので、再起動後も値を保持したい場合は /etc/sysctl.conf に net.inet6.ip6.accept_rtadv=1 と書いておきます。
*
Mac OS X クライアントを v6 接続する場合は、sudo sysctl -w net.inet6.ip6.use_tempaddr=1 しておいた方が良いですね。Privacy Extension (RFC3041) が有効になり、接続先に MAC アドレスが知られてしまうことがなくなります。
あと一つ謎なのは、Mac OS X 上の en0 インターフェースは、「IPv6 の構成」を「自動」に設定してあれば net.inet6.ip6.accept_rtadv=0 でも RA を受信できるということ。何か小細工してあるのかな…。
追記(2013/09/08): GitHub にLinux 用の接続スクリプトを一式置いてあります (契約解除してしまったので、現時点で動くかどうかは未確認)。
VAIO type P の WWAN で契約したプロバイダの IIJmio ですが、VPN 経由で v6 ネットワークを利用できる「IPv6 仮想アクセス」が便利です。
回線契約者のみが使用できるサービスですが、中の人に「自分達で使いたかったから、IIJ 以外の回線からでも利用できるようにした」と教えて貰いました :-)
公式サポートは Windows のみですが、実際は PPTP で IPCP 無しの PPP 接続して RA を受けているだけなので、その他の OS でも PPTP クライアント (Linux では PPTP Client など) を入れれば使えちゃいます。v6 アドレスは /64 で降ってくるので、radvd などで広告すれば家中の PC を(まさに)zero-configuration で v6 対応クライアントにできちゃいます。複数セッション張ることもできるみたいですが NAPT の後ろだとルータの対応が必要なので 1 台で受けちゃった方が面倒が少ないでしょう。
Linux (CentOS 5.5) で IPv6 仮想アクセスを利用するには、
- ip6tables を設定しておく
- (接続開始時)
- net.ipv6.conf.all.accept_ra = 1 (たぶんデフォルト)
- pptp + pppd で接続
- (接続確立後)
- net.ipv6.conf.all.accept_ra = 0 (サーバなので固定 IPv6 アドレスにしたいため)
- net.ipv6.conf.all.forwarding = 1 (ルーティングのため。というか、これを設定しないと radvd 自体が起動しない)
- 降ってきた v6 アドレスで radvd.conf を作成し、radvd 起動
- ルーティングテーブル(inet6)を書く
- 自分は、ついでにここで nsupdate して名前を引けるようにしておく
- (接続解除時)
- radvd 終了、ルーティング削除、カーネルパラメータを元に戻す
IPv6 では原則的に「すべてのコンピュータがグローバル IP アドレスを持つ」状態になるので、ファイアウォール(ip6tables)の設定を行う前に radvd を起動するとかなり危険です。私のサーバでは、ルーティング(FORWARD チェイン)のポリシーを「出力はすべて許可、入力は TCP の SYN flag が立っていないもののみ許可」にして運用しています。
*
Mac OS X で IPv6 仮想アクセスを利用するには、最初に sudo sysctl -w net.inet6.ip6.accept_rtadv=1 を実行しておき、システム環境設定の「ネットワーク」で PPTP 接続を作成するだけで OK です。sysctl の設定値は再起動すると失われてしまうので、再起動後も値を保持したい場合は /etc/sysctl.conf に net.inet6.ip6.accept_rtadv=1 と書いておきます。
*
Mac OS X クライアントを v6 接続する場合は、sudo sysctl -w net.inet6.ip6.use_tempaddr=1 しておいた方が良いですね。Privacy Extension (RFC3041) が有効になり、接続先に MAC アドレスが知られてしまうことがなくなります。
あと一つ謎なのは、Mac OS X 上の en0 インターフェースは、「IPv6 の構成」を「自動」に設定してあれば net.inet6.ip6.accept_rtadv=0 でも RA を受信できるということ。何か小細工してあるのかな…。
追記(2013/09/08): GitHub にLinux 用の接続スクリプトを一式置いてあります (契約解除してしまったので、現時点で動くかどうかは未確認)。