1
08
2014
さくらVPSでIPv6の設定をしてみた
さくらVPSがIPv6対応になったという訳で...
さくらインターネットのVPSサービスの一部で2013年10月31日からIPv6対応が始められたようなので、とりあえずゲストOSをIPv6に対応させてみた.ゲストOS(CentOS6.5)のIPv6の設定でほんの少し手間取ったが、さくらのVPSサービスはIPv6対応サーバ構築のテスト・練習環境としては最適な環境だろう.
この案内を見る限り、まだ全てのVPSサービスがIPv6に対応している訳ではないようだが、とりあえず私がテスト用に使っているVPSサービスがIPv6対応になっているとの事なので、早速ゲストOSをIPv6対応にしてみた.
まだ世間ではIPv6に対応しているサイトは少ないが、将来(そんなに先の話ではないが)の備えとしてIPv6対応の練習をしておきましょう.とは言っても本当にIPv6の時代は来るのだろうか?
IPv6対応にはサーバだけではなくLANなどのネットワーク環境も含めてトータルにサポートしなければならないので、IPv6への道のりは相当遠いというのが私の正直な感想だ.一般の企業や家庭でネットワークがIPv6に対応しているのは少数派でしょうね.大手の大部分のISPはIPv6対応を済ませているけど、一般の会社や組織内のLANではIPv6で接続できるような環境は希でしょうね.私の所属する某組織もデフォルトではIPv6で外に出られないみたいだし... (eduroam環境ではIPv6でそのまま出られるみたい)
この分だと多分世の中はIPv6には移行しない(できない)のではないかな...
今回の実験環境
・ VPS 2G HDDプラン(月額1,480円 メモリ:2GB、ディスク容量:200GB、仮想3コア) 石狩リージョン
・ゲストOS : CentOS 6 x86_64 (予め用意されているCentOS6イメージを利用) カーネル: 2.6.32-431.3.1.el6.x86_64
CentOS6 をIPv6に対応させる際に、ネット上の情報などを参考にやってみたがデフォルトルートの設定が上手く行かずちょっと手間取ってしまった.後でさくらインターネットのVPSに関するサポート情報を見たら設定で躓いた部分が懇切丁寧に記載されていたので、これからIPv6に挑戦しようとする方は先ず始めにこのサポート情報を見て置くべきだった.
IPv6アドレスの設定方法 http://support.sakura.ad.jp/manual/vps/mainte/ipv6-address.html
今回IPv6のネットワーク設定で躓いた箇所
CentOS6(x86_64)では、”eth0″ をIPv4とIPv6のデュアルスタック構成にする際に、”/etc/sysconfig/network” または “/etc/sysconfig/network-scripts/ifcfg-eth0” 設定ファイルに
IPV6_DEFAULTDEV=”eth0″
という記述を入れて置かないとIPv6のデフォルトルートがきちんと設定されないようだ.当初この事に気付かずにデフォルトルートが自動で設定されなかったので、手動でIPv6のデフォルトルートを設定していたが、上記の設定をきちんと記述することで、ネットワーク起動時に自動でIPv6のデフォルトルートが設定されるようになった.
IPV6_DEFAULTDEV=”eth0″ の記述が無いと、
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: Determining if ip address 133.242.171.129 is already in use for device eth0...
ERROR : [ipv6_set_default_route] Given IPv6 default gateway 'fe80::1' is link-local, but no scope or gateway device is specified
[ OK ]
のようなエラーメッセージが表示されてIPv6のデフォルトルートが設定されない.
[root@y2pub network-scripts]# ifconfig -a
eth0 Link encap:Ethernet HWaddr 52:54:0A:01:03:55
inet addr:133.242.171.129 Bcast:133.242.171.255 Mask:255.255.254.0
inet6 addr: 2401:2500:102:1210:133:242:171:129/64 Scope:Global
inet6 addr: fe80::5054:aff:fe01:355/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1277208 errors:0 dropped:0 overruns:0 frame:0
TX packets:8825 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:82178791 (78.3 MiB) TX bytes:2785883 (2.6 MiB)
[root@y2pub sysconfig]# route -n -A inet6
Kernel IPv6 routing table
Destination Next Hop Flags Metric Ref Use Iface
2401:2500:102:1210::/64 :: U 256 0 0 eth0
fe80::/64 :: U 256 0 0 eth0
::1/128 :: U 0 0 1 lo
2401:2500:102:1210:133:242:171:129/128 :: U 0 0 1 lo
fe80::5054:aff:fe01:355/128 :: U 0 0 1 lo
ff02::12/128 ff02::12 UC 0 254 0 eth0
ff02::1:ff00:1/128 ff02::1:ff00:1 UC 0 1 0 eth0
ff00::/8 :: U 256 0 0 eth0
[root@y2pub sysconfig]# ping6 ipv6.google.com
connect: Network is unreachable
手動でIPv6のデフォルトルートを設定すると、
[root@y2pub sysconfig]# ip -6 route add default via fe80::1 dev eth0
[root@y2pub sysconfig]# route -n -A inet6
Kernel IPv6 routing table
Destination Next Hop Flags Metric Ref Use Iface
2401:2500:102:1210::/64 :: U 256 0 0 eth0
fe80::/64 :: U 256 0 0 eth0
::/0 fe80::1 UG 1024 0 0 eth0
::1/128 :: U 0 1 1 lo
2401:2500:102:1210:133:242:171:129/128 :: U 0 0 1 lo
fe80::5054:aff:fe01:355/128 :: U 0 0 1 lo
ff02::12/128 ff02::12 UC 0 680 0 eth0
ff02::1:ff00:1/128 ff02::1:ff00:1 UC 0 1 0 eth0
ff00::/8 :: U 256 0 0 eth0
[root@y2pub sysconfig]# ping6 ipv6.google.com
PING ipv6.google.com(2404:6800:4004:809::1011) 56 data bytes
64 bytes from 2404:6800:4004:809::1011: icmp_seq=1 ttl=52 time=22.7 ms
64 bytes from 2404:6800:4004:809::1011: icmp_seq=2 ttl=52 time=20.0 ms
64 bytes from 2404:6800:4004:809::1011: icmp_seq=3 ttl=52 time=20.0 ms
64 bytes from 2404:6800:4004:809::1011: icmp_seq=4 ttl=52 time=20.0 ms
一応IPv6で外部との間で通信できるようになったが、これでは気持ち悪いので、ネットで色々と調べていたら IPV6_DEFAULTDEV=”eth0″ という設定項目が有ることに気付き、この設定を入れてみたらネットワークの起動時に問題無くIPv6デフォルトルートが設定されるようになった.ネット上ではIPV6_DEFAULTDEV を設定するような事例を殆ど見かけなかったので、この項目の存在に気付かずに手間取ってしまった.
[root@y2pub sysconfig]# /etc/init.d/network restart
Shutting down interface eth0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: Determining if ip address 133.242.171.129 is already in use for device eth0...
[ OK ]
[root@y2pub sysconfig]# route -n -A inet6
Kernel IPv6 routing table
Destination Next Hop Flags Metric Ref Use Iface
2401:2500:102:1210::/64 :: U 256 0 0 eth0
fe80::/64 :: U 256 0 0 eth0
::/0 fe80::1 UG 1 0 0 eth0
::1/128 :: U 0 0 1 lo
2401:2500:102:1210:133:242:171:129/128 :: U 0 1 1 lo
fe80::5054:aff:fe01:355/128 :: U 0 0 1 lo
ff02::12/128 ff02::12 UC 0 28 0 eth0
ff00::/8 :: U 256 0 0 eth0
無事ネットワーク起動時にIPv6デフォルトルートが自動で設定されるようになった.
アプリケーション側でのIPv6設定について
Apacheなどのメジャーなアプリケーションは大部前からIPv6対応になっているので特にIPv6だからといって特別な設定をしなくても良いようになってはいるが、IPアドレスなどでのアクセス制限を掛けているような場合は注意が必要だ.
一例として、.htaccessでの設定例を示す.
order deny,allow
deny from all
allow from localhost
allow from 2001:2f8:200:1::1/64 <=== IPv6のアドレス形式で設定
WEBブラウザでのIPv6アドレス入力について
Apche等のアプリケーションがIPv6対応になっている事を確認するために、WEBブラウザで確認してみるのが良いだろう.IPv6でのアドレス表記は [2401:2500:102:1210:133:242:171:129] のように記述すれば良い. http://[2401:2500:102:1210:133:242:171:129]/
尤も、こんな面倒なURL表記をしなくてもIPv4の場合と同じようにDNS名を使ってアクセス可能だ.さくらのVPSでは IPv6のアドレスに関してもDNS登録が行われているので、IPv6のDNS名でもアクセス可能だ.さくらのVPSではIPv6のDNS名として予めIPv4のIPアドレスの後に"v6.sakura.ne.jp" を付加した形で登録されているので、
http://133.242.171.129.v6.sakura.ne.jp/
のように指定すれば良い.
IPv6アドレスを直接入力した場合
DNS登録されているIPv6アドレスを名前で入力した場合
おまけ1: さくらインターネットのIPv6への取り組みに関する資料
さくらインターネットのIPv6への取り組みに関するプレゼンテーション資料(2013/3/12)がJAIPAのホームページに有ったので、そのURLを紹介しておく.
http://www.jaipa.or.jp/event/CloudCon/130312_sakura.pdf
おまけ2: このブログの IPv6アドレス
このブログ自体はさくらのレンタルサーバを利用しているが、既にIPv6対応がなされているようだ.
% ifconfig
em0: flags=8843 metric 0 mtu 1500
options=209b
ether 52:54:00:f4:a5:eb
inet 219.94.162.75 netmask 0xffffff80 broadcast 219.94.162.127
inet6 fe80::5054:ff:fef4:a5eb%em0 prefixlen 64 scopeid 0x2
inet6 2403:3a00:101:c:219:94:162:75 prefixlen 64
nd6 options=21
media: Ethernet autoselect (1000baseT )
status: active
pflog0: flags=141 metric 0 mtu 33152
nd6 options=29
lo0: flags=8049 metric 0 mtu 16384
options=600003
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
inet 127.0.0.1 netmask 0xff000000
nd6 options=21
%