さくらVPSでIPv6を使う

はじめに

新サービス「さくらのVPS」(正式版)お申し込み受付開始のお知らせ

というわけで、国内ホスティング大手のさくらさんからVPS(Virtual private server)のサービスがリリースされたのでさっそく使って遊んでみました。今まで専用サーバでしか使えなかったrootが使えるので、今まで以上に遊べそうです。

提供されるサービスは以下のような感じになっています。

さくらVPS
料金 月額980円
試用期間 2週間
CPU Intel(R) Xeon(R) CPU ? @ 2.40GHz
MEM 512MB
HDD 20GB
帯域 UP:1Gbps, Down:100Mbps
NIC Intel(R) PRO/1000 Network Connection
IPv4 グローバルアドレス1個
IPv6 無し
OS CentOS 5.5 x86_64

他のサービスとの比較は、格安VPSの比較「ServersMan@VPS」と「さくらのVPS」(2010/9/1時点) « R2.agによくまとまっている感じです。気になる速度測定の結果は、さくらのVPS 正式版 - masa23のメモによくまとまっています。

IPv6を使いたい

そこそこ高性能な占有サーバを安価に利用できるなら、IPv6も使いたいところです。IPv6対応のホスティングサービスはまだあまり多くないので、VPSを利用してIPv6サーバを作ってみました。

さくらVPSIPv6を使うにはいくつか方法があります。表にまとめました

手段 トンネル方式 長所 短所 説明
6to4 v6 over v4 比較的すぐ使える IPv4アドレスが変わるとIPv6アドレスが変更になる 戻りの経路についてはクライアント依存 IPv4グローバルアドレスが利用できるので6to4が利用可能。さくらVPSからリレールータまでの距離が近い(サーバからクライアント方向)
teredo v6 over v4 比較的すぐ使える リレールータまでの距離が遠く遅延大 teredoルータを経由することでIPv6 over IPv4を実現する
PacketiX公開実験 Ether over v4 固定Prefixが利用可能 専用のサーバが必要 グローバル・固定 IPv6 アドレス割当型トンネル接続実験サービスを利用して接続する

というわけで、今回はグローバル・固定 IPv6 アドレス割当型トンネル接続実験サービスを利用してさくらVPSIPv6のコネクティビティを実現してみました。

PacketiX VPN Clientのインストール

というわけで、早速サーバの仕込みです。手順としてはVPN Clientをインストールして実験サービスに接続するだけです。今回はPacketiX VPN Client3.0を利用します。最新版はSoftetherのWEBからダウンロードしてください。

# 依存モジュールをインストール
yum -y install openssl-devel zlib-devel readline-devel ncurses-devel

# 適当なディレクトリで
# PacketiX VPN Client3.0をダウンロード
wget http://uploader.softether.co.jp/vpn3/v3.00-6890-rtm-2010.03.15/VPN/Japanese/Linux/PacketiX%20VPN%20Client%203.0/64bit%20-%20Intel%20x64%20or%20AMD64/vpnclient-v3.00-6890-rtm-2010.03.15-ja-linux-x64-64bit.tar.gz

# 展開
tar zxvf vpnclient-v3.00-6890-rtm-2010.03.15-ja-linux-x64-64bit.tar.gz

# install.shでインストール
cd vpnclient
sh .install.sh

--------------------------------------------------------------------

PacketiX VPN Client 3.0 (Ver 3.00, Build 6890, Japanese, Intel x64 / AMD64) for Linux Install Utility
Copyright (C) 2004-2010 SoftEther Corporation. All Rights Reserved.

--------------------------------------------------------------------


Do you want to read the License Agreement for this software ?

 1. Yes
 2. No

Please choose one of above number: 
1

==規約文章につき省略==

Did you read and understand the License Agreement ?
(If you couldn't read above text, Please read 'ReadMeFirst_License_UTF8.txt'
 file with any text editor.)

 1. Yes
 2. No

Please choose one of above number: 
1

Did you agree the License Agreement ?

1. Agree
2. Do Not Agree

Please choose one of above number: 
1

Preparing PacketiX VPN Client 3.0...
ranlib lib/libcharset.a     
ranlib lib/libcrypto.a      
ranlib lib/libedit.a        
ranlib lib/libiconv.a       
ranlib lib/libncurses.a     
ranlib lib/libssl.a         
ranlib lib/libz.a          
ranlib code/vpnclient.a    
gcc code/vpnclient.a -O2 -fsigned-char -pthread -m64 -lm -ldl -lrt -lpthread -L./ lib/libssl.a lib/libcrypto.a lib/libiconv.a lib/libcharset.a lib/libedit.a lib/libncurses.a lib/libz.a -o vpnclient       
ranlib code/vpncmd.a       
gcc code/vpncmd.a -O2 -fsigned-char -pthread -m64 -lm -ldl -lrt -lpthread -L./ lib/libssl.a lib/libcrypto.a lib/libiconv.a lib/libcharset.a lib/libedit.a lib/libncurses.a lib/libz.a -o vpncmd             
                           
--------------------------------------------------------------------
The preparation was completed.
                           
Please execute './vpnclient start' to run PacketiX VPN Client 3.0 Background Service.
And please execute './vpncmd' to run PacketiX VPN Command-Line Utility to configure PacketiX VPN Client 3.0.
--------------------------------------------------------------------

これでPacketiX VPN Client3.0のインストールが完了です。このあとに仮想LANカードの作成をします。仮想LANカードを作るには、VPNコマンドユーティリティ(vpncmd)を利用します。

[root@www1027u vpnclient]# ./vpncmd 
vpncmd コマンド - PacketiX VPN コマンドライン管理ユーティリティ
PacketiX VPN コマンドライン管理ユーティリティ (vpncmd コマンド)
Version 3.00 Build 6890   (Japanese)
Compiled 2010/03/15 05:56:28 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 (このコンピュータ) に接続します。
接続先を入力: 

VPN Client "localhost" に接続しました。

VPN Client>

vpncmdの操作が可能になりました。まず仮想LANカードを作ります。仮想LANカード名を「IPv6」としました。

VPN Client>NicCreate
NicCreate コマンド - 新規仮想 LAN カードの作成
仮想 LAN カードの名前: IPv6

コマンドは正常に終了しました。

仮想LANカードを作成すると、OSから見えるようになります。OSからは「vpn_ipv6」というNICに見えます。

[root@www****u ~]# ifconfig vpn_ipv6
vpn_ipv6  Link encap:Ethernet  HWaddr 00:AC:D3:51:B6:7F  
          inet6 addr: fe80::2ac:d3ff:fe51:b67f/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)

仮想LANカードを作成したら、次に公開実験サービスに接続する設定をします。公開実験サービス用のアカウントはあらかじめHPから取得しておいてください。

VPN Client>accountcreate
AccountCreate コマンド - 新しい接続設定の作成
接続設定の名前: IPv6
接続先 VPN Server のホスト名とポート番号: v6ip.tsukuba.wide.ad.jp:443
接続先仮想 HUB 名: ACVPN
接続するユーザー名: 登録したユーザ名
使用する仮想 LAN カード名: IPv6
コマンドは正常に終了しました。

アカウントに対して仮想LANカードを設定します。先ほど作成した仮想LANカードを設定してください。

最後にアカウントのパスワードを設定します。これはユーザ登録すると送られてくるパスワードです。

VPN Client>accountpasswordset
AccountPasswordSet コマンド - 接続設定のユーザー認証の種類をパスワード認証に設定
接続設定の名前: IPv6

パスワードを入力してください。キャンセルするには Ctrl+D キーを押してください。

パスワード: ********
確認入力  : ********

standard または radius の指定: standard

コマンドは正常に終了しました。

これでアカウントの設定は完了です。最後に接続処理をします。

VPN Client>accountconnect 
AccountConnect コマンド - 接続設定を使用して VPN Server へ接続を開始
接続設定の名前: IPv6

コマンドは正常に終了しました。

VPN Client>accountlist
AccountList コマンド - 接続設定一覧の取得
項目               |値
-------------------+----------------------------------------------
接続設定名         |IPv6
状態               |接続完了
接続先 VPN サーバー|v6ip.tsukuba.wide.ad.jp:443 (直接 TCP/IP 接続)
仮想 HUB 名        |ACVPN
仮想 LAN カード名  |IPv6
コマンドは正常に終了しました。

これで接続完了です。最後に確認してみましょう。

[root@www****u ~]# ifconfig vpn_ipv6
vpn_ipv6  Link encap:Ethernet  HWaddr 00:AC:D3:51:B6:7F  
          inet6 addr: 2001:200:1c8:a:2ac:d3ff:fe51:b67f/64 Scope:Global
          inet6 addr: fe80::2ac:d3ff:fe51:b67f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:57 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:4080 (3.9 KiB)  TX bytes:546 (546.0 b)
[root@www1027u ~]# ping6 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=0 ttl=58 time=20.8 ms
64 bytes from 2001:200:dff:fff1:216:3eff:feb1:44d7: icmp_seq=1 ttl=58 time=21.2 ms
64 bytes from 2001:200:dff:fff1:216:3eff:feb1:44d7: icmp_seq=2 ttl=58 time=21.0 ms
64 bytes from 2001:200:dff:fff1:216:3eff:feb1:44d7: icmp_seq=3 ttl=58 time=21.8 ms

--- www.kame.net ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 20.865/21.253/21.899/0.435 ms, pipe 2

これで完了です。疎通確認もできました。

さいごに

VPSのいいところは、rootを利用できるところで、こういった風に仮想Deviceの追加などができるあたりが強みになるかと思います。今回IPv6の接続設定をしましたが、このあとは普通にApacheの設定をし足りいろいろほげって行くような感じになります。固定IPv6アドレスを使うには、Linuxのよくある設定をすればOKです。

せっかく遊べる環境が手に入るなら、ぜひやってみるといいと思います。