さくらのVPSでIPv6を使う (v6ip.tsukuba編)
さくらのVPSでv6?
さくらのVPSは結構前からv6やるって言ってたと思うんだけどなかなか(native)対応してくれない。ならユーザで対応させよう。
一応6rdでの接続は提供しているらしい。まだやってるのかは知らないけど。
さくらの6rd(トライアル) « さくらインターネット研究所
Tokyo6to4を使ってv6対応するのをやってる人もいました。
さくらVPSのFreeBSDサーバでv6対応
さて、我々つくばWIDEはどうするか。PacketiX VPNしかない。
ソフトイーサ (株) - 業界標準の広域イーサネットと インターネットVPN を目指して
PacketiX VPN 3.0 Web サイト
PacketiX VPN
PacketiX VPN(パケティックス ブイピーエヌ)とはソフトイーサ株式会社で開発されているvpnソフトウェアです。
HTTPSのセッションの上にVPNを作るのでHTTPSを蹴られない限りvpnが構築できます。
現在次期ベータ版が公開されててこっちだと他のvpnと接続できます。(e.g. L2TPv3 over IPsec)
IPsec / L2TP / EtherIP / L2TPv3 対応ベータ版 - PacketiX VPN 3.0 Web サイト
素晴らしいことに製品版でもクライアントは無料で利用できる。ベータ版に至ってはサーバも手に入ります。
今回はこのBeta2を使ってさくらのvpsにv6を引いてみたいと思います。
しかしv6の接続性...?
v4の接続性はさくらインターネットが提供してくれるし、6rdもさくらインターネットだし、Tokyo6to4はTokyo6to4がv6の接続性を提供してくれるけどPacktiX VPNは一体誰がv6配ってくれるんだ?しかもどこの鯖に繋げば?
非営利目的であれば無料でv6配ってるところがあります。
グローバル・固定 IPv6 アドレス割当型トンネル接続実験サービス トップページ
はい。我々です。左のメニューからユーザー登録することで誰でも利用できます。
ユーザー登録すると
このようなpwが書かれたメールが送られて来ます。
このユーザー名とpwが接続時に使うユーザー情報なので覚えておいて下さい。
しかもこのサービスはユーザー毎に /64 のv6を配ります。RAが降ってくるのでvpnの設定さえすれば直ぐにv6環境を手に入れることができます。
実際にさくらのVPSで設定
今回さくらのVPSで使うOSはデフォルトのCentOS 6.2 x86_64としました。PacketiX VPNはWin,Mac OS,Linuxの他に様々なプラットフォーム、アーキテクチャに対応しているのでぜひ確認してみて下さい。
Linux以外で実験した(さくらのVPSに限らず)という人がいれば是非フィードバックしてください。
DLからビルド
まぁともかくまずはダウンロード。
download.softether.co.jp - /folder/vpn3_ipsec_beta/v3.04-7844-beta2-2012.03.18/
download.softether.co.jp - /folder/vpn3_ipsec_beta/v3.04-7844-beta2-2012.03.18/Japanese/Linux/PacketiX VPN Client 3.0/64bit - Intel x64 or AMD64/
以後VPS上のrootのシェルと考えて下さい。
ダウンロードして解凍します。
# cd /usr/local # curl http://download.softether.co.jp/folder/vpn3_ipsec_beta/v3.04-7844-beta2-2012.03.18/Japanese/Linux/PacketiX%20VPN%20Client%203.0/64bit%20-%20Intel%20x64%20or%20AMD64/vpnclient-v3.04-7844-beta2-2012.03.18-ja-linux-x64-64bit.tar.gz | tar zx
解凍が終わるとvpnclientというディレクトリができているはずです(Permissionがアレですが...)。vpnclientに入るとMakefileがあると思います。
# cd vpnclient # ls code Makefile ReadMeFirst_License_SJIS.txt hamcore.se2 ReadMeFirst_License_EUC.txt ReadMeFirst_License_UTF8.txt lib ReadMeFirst_License_GB2312.txt
makeをすればいいのですが、その前に利用許諾の確認があります。確認して同意できる場合のみ進んで下さい。
# make ... 省略 ... # ls code ReadMeFirst_License_EUC.txt vpnclient hamcore.se2 ReadMeFirst_License_GB2312.txt vpncmd lib ReadMeFirst_License_SJIS.txt Makefile ReadMeFirst_License_UTF8.txt
ここで新たにできたvpnclientがクライアントソフトウェアです。vpncmdはクライアントソフトウェアに限らずサーバー等の操作も可能なシェルです。設定等はすべてvpncmd経由で行います。
見逃しがちですが、hamcore.se2というファイルはvpnclientとvpncmdの動作に必要なファイルです。同じところにある必要があるので注意して下さい。
vpnclient
vpnclientはデーモンですが、勝手にforkするタイプのデーモンです。
コマンドラインから
# ./vpnclient start # ./vpnclient stop
で起動と停止ができます。
init.dあたりにこれを叩くスクリプトをおいてchkconfigすれば勝手に上がってくるようになります。
例えばこんなの
# cat /usr/init.d/vpnclient #!/bin/bash # Default-Start: 3 4 5 # Default-Stop: 0 1 6 # chkconfig: - 15 85 prog=/usr/local/vpnclient/vpnclient start() { $prog start } stop() { $prog stop } case "$1" in start) start ;; stop) stop ;; *) echo $"Usage: $0 {start|stop}" exit 2 esac # chmod +x vpnclient # chkconfig --add vpnclient # chkconfig vpnclient on
こうすれば起動時に勝手に上がってくれます。
vpncmdでv6ipへの接続を設定
vpnclientを起動しただけではvpnが張られるわけではないです。適切にvpncmdで設定を流す必要があります。
とりあえずvpncmdを起動します。
# ./vpncmd vpncmd コマンド - PacketiX VPN コマンドライン管理ユーティリティ PacketiX VPN コマンドライン管理ユーティリティ (vpncmd コマンド) Version 3.04 Build 7844 Beta 1 (Japanese) Compiled 2012/03/18 22:38:30 by yagi at pc25 Copyright (C) 2004-2010 SoftEther Corporation. All Rights Reserved. vpncmd プログラムを使って以下のことができます。 1. VPN Server または VPN Bridge の管理 2. VPN Client の管理 3. VPN Tools コマンドの使用 (証明書作成や通信速度測定) 1 - 3 を選択: 2 接続先の VPN Client が動作しているコンピュータの IP アドレスまたはホスト名を指定してください。 何も入力せずに Enter を押すと、localhost (このコンピュータ) に接続します。 接続先のホスト名または IP アドレス: VPN Client "localhost" に接続しました。 VPN Client>
今回はローカルで動いてるVPN Clientの設定を行うので2を選択してそのままEnter。
プロンプトが出てきたらここに設定を流し込みます。使えるコマンドは多いので省略しますがhelpと打つと出てきます。
所謂トンネルインターフェースが必要になるのでまず作ります。インターフェース名は v6ip としました。ifconfigで見られるインターフェース名はここで設定したインターフェース名の前に vpn_ が付きます。
VPN Client>niccreate NicCreate コマンド - 新規仮想 LAN カードの作成 仮想 LAN カードの名前: v6ip コマンドは正常に終了しました。 VPN Client>niclist NicList コマンド - 仮想 LAN カード一覧の取得 項目 |値 -----------------+----------------------------------------- 仮想 LAN カード名|v6ip 状態 |有効 (使用可能) MAC アドレス |00AC25E850D6 バージョン |Version 3.04 Build 7844 Beta 1 (Japanese) コマンドは正常に終了しました。 VPN Client>
一旦
vpn_v6ip Link encap:Ethernet HWaddr 00:AC:25:E8:50:D6 inet6 addr: fe80::2ac:25ff:fee8:50d6/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:500 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
今度はv6ipのサーバへの接続設定を叩き込みます。
VPN Client>accountcreate AccountCreate コマンド - 新しい接続設定の作成 接続設定の名前: v6ip 接続先 VPN Server のホスト名とポート番号: v6ip.tsukuba.wide.ad.jp:8888 接続先仮想 HUB 名: ACVPN 接続するユーザー名: Flast 使用する仮想 LAN カード名: v6ip コマンドは正常に終了しました。 VPN Client>accountlist AccountList コマンド - 接続設定一覧の取得 項目 |値 -------------------+----------------------------------------------- 接続設定名 |v6ip 状態 |オフライン 接続先 VPN サーバー|v6ip.tsukuba.wide.ad.jp:8888 (直接 TCP/IP 接続) 仮想 HUB 名 |ACVPN 仮想 LAN カード名 |v6ip コマンドは正常に終了しました。 VPN Client>
VPN Serverのホスト名は v6ip.tsukuba.wide.ad.jp で、ポートは 8888 または 443 です。また仮想HUB名v6ipでは ACVPN です。
仮想LANカード名は先程作ったものを指定します。
ユーザー登録した際に送られてきたpwは次のように設定します。
VPN Client>accountpasswordset AccountPasswordSet コマンド - 接続設定のユーザー認証の種類をパスワード認証に設定 接続設定の名前: v6ip パスワードを入力してください。キャンセルするには Ctrl+D キーを押してください。 パスワード: ************ 確認入力 : ************ standard または radius の指定: standard コマンドは正常に終了しました。 VPN Client>
pw入力直後の standard または radius の設定 というのはstandardと入力して下さい。
以上で接続に必要な設定は揃いました。
実際に接続する
先ほどの設定でvpnに接続しましょう。
VPN Client>accountconnect AccountConnect コマンド - 接続設定を使用して VPN Server へ接続を開始 接続設定の名前: v6ip コマンドは正常に終了しました。 VPN Client>accountstatusget AccountStatusGet コマンド - 接続設定の現在の状態の取得 接続設定の名前: v6ip 項目 |値 ------------------------------+------------------------------------------------ 接続設定名 |v6ip セッション接続状態 |接続完了 (セッション確立済み) VLAN ID |1001 サーバー名 |v6ip.tsukuba.wide.ad.jp ポート番号 |TCP ポート 8888 サーバー製品名 |PacketiX VPN Server 3.0 Premium Edition (32 bit) サーバーバージョン |3.03 サーバービルド番号 |Build 7400 接続開始時刻 |2012年 6月23日(土) 15時 4分45秒 初回セッションの確立時刻 |2012年 6月23日(土) 15時 4分45秒 現在のセッションの確立時刻 |2012年 6月23日(土) 15時 4分45秒 セッション確立回数 |1 回 半二重 TCP コネクションモード |いいえ (全二重モード) VoIP / QoS 対応機能 |有効 (使用中) TCP コネクション数 |2 TCP コネクション数最大値 |2 暗号化の使用 |はい (暗号化アルゴリズム: RC4-MD5) 圧縮の使用 |いいえ (圧縮無し) セッション名 |SID-FLAST-2538 コネクション名 |CID-18596 セッションキー (160bit) |DE1BFBE0110E5A81ADE57C34C3D4A9DC87386774 ブリッジ / ルータモード |いいえ モニタリングモード |いいえ 送信データサイズ |1,117 バイト 受信データサイズ |12,732 バイト 送信ユニキャストパケット数 |0 パケット 送信ユニキャスト合計サイズ |0 バイト 送信ブロードキャストパケット数|7 パケット 送信ブロードキャスト合計サイズ|546 バイト 受信ユニキャストパケット数 |28 パケット 受信ユニキャスト合計サイズ |12,418 バイト 受信ブロードキャストパケット数|0 パケット 受信ブロードキャスト合計サイズ|0 バイト コマンドは正常に終了しました。 VPN Client>
accountstatusgetでセッション接続状態が接続完了になれば接続できたということです。
exitしてifconfigしてみるとRAによって自動設定されてるのがわかります。
# ifconfig vpn_v6ip vpn_v6ip Link encap:Ethernet HWaddr 00:AC:25:E8:50:D6 inet6 addr: 2001:200:1c8:3e9:2ac:25ff:fee8:50d6/64 Scope:Global inet6 addr: fe80::2ac:25ff:fee8:50d6/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:254 errors:0 dropped:0 overruns:0 frame:0 TX packets:7 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:500 RX bytes:45417 (44.3 KiB) TX bytes:546 (546.0 b)
皆さん大好きwww.kame.netにpingを打ってみましょう。
# ping6 -c 4 www.kame.net PING www.kame.net(2001:200:dff:fff1:216:3eff:feb1:44d7) 56 data bytes 64 bytes from 2001:200:dff:fff1:216:3eff:feb1:44d7: icmp_seq=1 ttl=58 time=32.9 ms 64 bytes from 2001:200:dff:fff1:216:3eff:feb1:44d7: icmp_seq=2 ttl=58 time=34.7 ms 64 bytes from 2001:200:dff:fff1:216:3eff:feb1:44d7: icmp_seq=3 ttl=58 time=32.5 ms 64 bytes from 2001:200:dff:fff1:216:3eff:feb1:44d7: icmp_seq=4 ttl=58 time=36.6 ms --- www.kame.net ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3041ms rtt min/avg/max/mdev = 32.531/34.232/36.696/1.637 ms
出れることわかったので逆に外から到達するか確認しましょう。
C:\Users\Flast>ping -6 2001:200:1c8:3e9:2ac:25ff:fee8:50d6 2001:200:1c8:3e9:2ac:25ff:fee8:50d6 に ping を送信しています 32 バイトのデータ: 2001:200:1c8:3e9:2ac:25ff:fee8:50d6 からの応答: 時間 =1074ms 2001:200:1c8:3e9:2ac:25ff:fee8:50d6 からの応答: 時間 =53ms 2001:200:1c8:3e9:2ac:25ff:fee8:50d6 からの応答: 時間 =41ms 2001:200:1c8:3e9:2ac:25ff:fee8:50d6 からの応答: 時間 =29ms 2001:200:1c8:3e9:2ac:25ff:fee8:50d6 の ping 統計: パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、 ラウンド トリップの概算時間 (ミリ秒): 最小 = 29ms、最大 = 1074ms、平均 = 299ms C:\Users\Flast>
ちゃんと到達してますね。偉大偉大。
ところでvpnclientが起動したら自動でつなぎに行って欲しいということもあるかと思います。その場合、vpncmd上で
VPN Client>accountstartupset AccountStartupSet コマンド - 接続設定をスタートアップ接続に設定 接続設定の名前: v6ip コマンドは正常に終了しました。 VPN Client>
とすることでvpnclientが起動すると自動で接続されます。
諸注意
今までさくらのVPSはv4だけだったのでファイアウォールもv4だけ考えれば問題ありませんでした。しかし今回v6のglobalアドレスが振られることになり、v6経由での攻撃も可能になってしまいました。iptablesなりでしっかりとセキュリティを確保した上で十分に注意して利用して下さい。
また、このv6ipサービスは研究目的の実験サービスです。急にダウンしたりメンテしたりすることもあるので確実にv6を使える保証はできません。そこら辺を必ず念頭に置いて利用して下さい。