Kenichi Maehashi's Blog

脳内コアダンプ

RSS
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 仮想アクセスを利用するには、
  1. ip6tables を設定しておく
  2. (接続開始時)
  3. net.ipv6.conf.all.accept_ra = 1 (たぶんデフォルト)
  4. pptp + pppd で接続
  5. (接続確立後)
  6. net.ipv6.conf.all.accept_ra = 0 (サーバなので固定 IPv6 アドレスにしたいため)
  7. net.ipv6.conf.all.forwarding = 1 (ルーティングのため。というか、これを設定しないと radvd 自体が起動しない)
  8. 降ってきた v6 アドレスで radvd.conf を作成し、radvd 起動
  9. ルーティングテーブル(inet6)を書く
  10. 自分は、ついでにここで nsupdate して名前を引けるようにしておく
  11. (接続解除時)
  12. radvd 終了、ルーティング削除、カーネルパラメータを元に戻す
という感じで、これをシェルスクリプトにしたものを起動スクリプトから起動して、さらに monit で監視しています。ときどき RPM でも作って公開してみようかなと思うのですが、自分向けにチューニングされすぎてるし、エラー処理がちょっと甘いし、なによりニッチすぎるかも。

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 用の接続スクリプトを一式置いてあります (契約解除してしまったので、現時点で動くかどうかは未確認)。

Comments

2011/06/13
こんにちは。
私もMacOSXでv6仮想アクセス使って見ようと思って設定している最中なんですが
うーーーん。残念ながらうまくいってません。

sysctl.conf に
net.inet6.ip6.use_tempaddr=1
net.inet6.ip6.accept_rtadv=1
書いておいてから普通に「システム環境設定」「ネットワーク」で
普通にPPTP接続を作成したんですが。

ifconfigで見るとppp0には普通にv6アドレス振ってきていて
traceroute6とかping6をwww.iij4u.or.jpに対して打ってもちゃんと通るのですが
ブラウザでiij4uやmioのページが見られませんでした。

と言うより
v4だけしか対応していないページは表示されるのに
DNSにAAAAレコードが有るページはタイムアウトしちゃうのよね。
なんでだろう。?
2011/06/13
>> たかちゃん★ さん
こんにちは、コメントありがとうございます。
こちらは最新アップデート適用の Snow Leopard 環境ですが、今も問題なく動作しています。

> v4だけしか対応していないページは表示されるのに
> DNSにAAAAレコードが有るページはタイムアウトしちゃうのよね。

この症状だけから考えると、フレッツを使用していて閉域網のアドレスが割り当てられている、ということはないでしょうか。
2011/06/13
早速の回答ありがとうございます。
>>この症状だけから考えると、フレッツを使用していて
>>閉域網のアドレスが割り当てられている、ということはないでしょうか。
それはないと思います。
と言うのは自宅で使っているブロードバンドルータが古いもので
フレッツ網内のv6はブリッジできず遮断してしまっているからです。

あれからいろいろやってみました。
2011/06/13
VPN接続している状態でifconfigを叩いてみました。
MacBook-Pro:~ takachan$ ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
inet 127.0.0.1 netmask 0xff000000
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 10:9a:dd:4a:47:2d
media: autoselect
status: inactive
en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether f0:b4:79:18:00:89
inet6 fe80::f2b4:79ff:fe18:89%en1 prefixlen 64 scopeid 0x5
inet 192.168.0.11 netmask 0xffffff00 broadcast 192.168.0.255
media: autoselect
status: active
fw0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 4078
lladdr 70:cd:60:ff:fe:03:c8:5a
media: autoselect <full-duplex>
status: inactive
ppp0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1444
inet6 fe80::129a:ddff:fe4a:472d%ppp0 prefixlen 64 scopeid 0x7
inet6 2001:240:bb8a:118:129a:ddff:fe4a:472d prefixlen 64 autoconf
inet6 2001:240:bb8a:118:5001:71a0:6e46:771 prefixlen 64 autoconf temporary
MacBook-Pro:~ takachan$
確かにppp0にv6アドレスが降ってきています。
2011/06/13
この状態でhttpサーバとの接続を確認してみました。
MacBook-Pro:~ takachan$ telnet www.iij4u.or.jp 80
Trying 2001:240:bb81:8500::3:101...
Connected to www.iij4u.or.jp.
Escape character is '^]'.

確かにhttpサーバとv6で通信できているみたいなんです。

しかし
safariやfirefoxでブラウズができないんです。
Thunderbirdでのメールの送受信にも失敗しました。
もうちょっと僕でも頑張ってみますが
何か思い当たる点があったら教えてください。

家も最新の10.6.7にアップデートして試してみたんですが
何が違うんだろう。
追伸:
長いと書き込めない見たい何で
3つに分割しちゃいました。
ごめんなさい。
2011/06/13
確かに ppp0 に v6 アドレスが振られていますね。あとは、

1. ルーティングテーブルの確認 (netstat -r -f inet6 -n)
2. DNS の問題切り分け: http://www.kame.net/ と (それに対応する) http://[2001:200:dff:fff1:216:3eff:feb1:44d7]/ にアクセスしてみる
3. NAPT ルータの GRE (PPTP) の扱いがおかしい? (一定以上の大きさのパケットが破棄されているとか?)

といった程度しか思いつきませんでした。お役に立つでしょうか。
2011/06/13
早速ありがとうございます。

思い当たるとすれば3番が臭い気がするんです。

自分も今減じ
ONU ---- ブロードバンドルータ ---- 無線LANアクセスポイント 
とネットワーク機器を2段つないでいるんです。
勿論無線LANはブリッジモード+PPTP透過設定にしてありますが確かにルータにケーブルで直接つないでテストしてみたいところですね。

現在物理的に出来ないのでそのうちやってみたいと思います。
2011/06/13
一応やってみました。
acBook-Pro:~ takachan$ netstat -r -f inet6 -n
Routing tables

Internet6:
Destination Gateway Flags Netif Expire
default fe80::21c:eff:fe67:701b%ppp0 UGc ppp0
::1 ::1 UH lo0
2001:240:bb8a:118::/64 fe80::129a:ddff:fe4a:472d%ppp0 Uc ppp0
2001:240:bb8a:118:1ed:458f:71ca:b4a6 link#7 UHL lo0
2001:240:bb8a:118:129a:ddff:fe4a:472d link#7 UHL lo0
fe80::%lo0/64 fe80::1%lo0 Uc lo0
fe80::1%lo0 link#1 UHL lo0
fe80::%en1/64 link#5 UC en1
fe80::f2b4:79ff:fe18:89%en1 f0:b4:79:18:0:89 UHL lo0
fe80::%ppp0/64 fe80::129a:ddff:fe4a:472d%ppp0 Uc ppp0
fe80::21c:eff:fe67:701b%ppp0 link#7 UHL ppp0
fe80::129a:ddff:fe4a:472d%ppp0 link#7 UHL lo0
ff01::/32 ::1 Um lo0
ff02::/32 ::1 UmC lo0
ff02::/32 link#5 UmC en1
ff02::/32 fe80::129a:ddff:fe4a:472d%ppp0 UmC ppp0
MacBook-Pro:~ takachan$
ppp0が確かにデフォルトルートになっていました。

http://[2001:200:dff:fff1:216:3eff:feb1:44d7]/
に直接ip打ってもfirefoxからはアクセスできないのに
telnetコマンドでは応答がある。

うーーーん。
2011/06/13
うーん、何でしょうね。

$ curl -6 "http://2001:200:dff:fff1:216:3eff:feb1:44d7/"
で、ページは出るでしょうか。(接続の問題なのか、ブラウザの問題なのか)
2011/06/13
Kenichi Maehashi さん
ヤッホー!繋がりました。

結論から先に書くとルーターを2段重ねていたのがいけなかった様です。
多分VPN張ってでかくなったパケットの一部が
途中の経路で壊れてしまっていたんでしょうね。

あれから有線LAN接続は現在物理的に試せないので代わりに何か無いかと
周りを見渡していたら有りました。イーモバのポケットWIFIが。

3G回線ですけど直にグローバルIPがキャリアから振られるので
PPTPブリッジをオンにした状態でMacでVPN張ったらあっけなく繋がりました。

てさっき試していた時家族からネットが不安定だって苦情が来たんです。
もしやと思ってブロードバンドルータのSYSLOG見たら
見事にTCPのセッションテーブル使い切ってました。(笑)

て事でホントにお付き合い頂き有り難うございます。

今回の件は良い勉強になりました。
2011/06/14
お、解決されたようで何よりです。
こちらこそ参考になりました、ありがとうございました。
Leave Yours...
Name:
E-mail / URL (optional):
Comment:
Are You Robot?: