このブログをIPv6でもアクセスできるようにした

さくらVPSの引っ越しのついでということで。実は割と前から構築だけしてたんですが、やっと移転しました。

いままではこのサイトは、もともとさくらVPS 512とかいう名前だったやつで、メモリだけ1Gに増設された状態で使ってたんですが、 物理的な位置が大阪だっていうところ、それに伴ってIPv6対応がなかなか来ない(7/23には有効になったっぽい)と、つかってるとディスクI/Oがくそ遅くなることが最近頻発しててどうしたもんかなぁと思っていました。

対策として、EC2に移ろうかと思ったりもしたんですが、基本的にGentoo動かしているので CPUぶん回せないのがツライ(t1.microくらいじゃないとさすがに金額的に出す気がしない、このときはまだt2系はなかった)ので、 引き続き、さくらVPSで2Gのプランに乗り換えました。リージョンは東京にして。 SSDにするか迷ったんだけど、結局、そんなゴリゴリアクセスするわけでもないので、容量と価格重視で、HDD 200GBな2Gプランに変えました。

で、さくらVPS自体、IPv6には現在ネイティブに対応しているので、割り当てられているIPを設定すればさくっと通信できるようになるので特に苦労はなく、 このブログはTinkererで静的なHTMLを吐いて、nginxで提供しているだけなので、nginxでIPv6でも待ち受けるように変えるだけでさくっとアクセスできるようになりました。

一応、手順メモ

とりあえずGentooインストール

以前は、CentOS起動して、一部のパーティション潰してインストーラ起動して、みたいなことをやって無理矢理インストールした記憶が残ってたんですが、 (ここ のスクリプト改造してやった記憶がある) いまや、ISOイメージをsftp経由でアップロードしてそこから起動とかできるので、すなおにgentooのminimalのISOイメージをアップロードして起動してインストールしました。

特にハマるところもなく、vdaでディスクも最初から見えるし、enp0s3みたいな名前でNICもちゃんと見えます。grub2インストールも/dev/vdaに書けば普通にいけました。

シリアルコンソールとか、grubの出力も/dev/ttyS0にしておくと、さくらVPSのコンソールからちゃんとGRUB起動→Linux起動→コンソールでログインまで一通りできるのでちゃんとやっとくべし。

/etc/inittabに以下の行を追加というか、既存のコメントアウトされている行を改変
s0:2345:respawn:/sbin/agetty -h -L 115200 ttyS0 vt100

/etc/default/grubでlinux,grubの出力をシリアルに
GRUB_CMDLINE_LINUX="console=ttyS0,115200n8r"
GRUB_SERIAL_COMMAND="serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1"

これくらいだけ、いつもと違う感じで、それ以外はとくに変わることもなく。今回はlogrotateを忘れずにインストールしたのでディスク溢れてとかなくて成長した。

ちなみに、IPv6の設定も/etc/conf.d/netに書けばそのまま使えます。

config_eth0="153.121.65.156/23
             2001:e42:102:1206:153:121:65:156/64"
routes_eth0="default via 153.121.64.1
             default via fe80::1"
dns_servers_eth0="210.188.224.10 210.188.224.11
                  2001:e42::1"

既存のさくらVPSから移行

といっても、rootfsは今回、インストールで作り直した形(カーネルのコンフィグは旧サーバの.configをそのまま持ってきた)なので、データっぽいものや設定だけコピーします。 あと、ほかでもGentooインストールしたりとかたまにするんで迷うほどでもなかったけど、make.confの位置が3年前からのGentooとちがって、/etc/portage/make.confになってるとか、新しいと変わるモノがいくつかあるので移行時はそのへんも注意する必要があります。まあ、大抵どっかでエラーとか設定が反映されないとかで気づくのでそれほど大きな問題でもないですが。

まずは、/home以下を移行します。これは単純、ざくっとrsyncでコピーします。ユーザは双方に同じユーザ名、同じidで作っているので、uidも維持してコピーするとほんとに変わらずにコピーが楽にできてオススメ。

$ rsync -avuzP . xxx@xxx.yyy.zzz.aaa:~/

次はnginxの移行です。これも基本的に設定コピーするだけ。最後に、IPv6でも待ち受けるように、serverの中に一行書き加えます。

listen [::]:80;

これで、IPv6でアクセスできるクライアントから、curl http://misc.mat2uken.net/blog/とでもやればOK。アクセスログにアクセス元のIPv6なアドレスが記録されればそれで完了。

その他の移行

あと、このサーバ、IRCbot(tiarra)もうごかしているので、screenを起動してtiarraを延々と起動しておくのをやったくらい。ああ、そういえば、シリアルコンソール以外つかえないし、tty1以外は全部無効にしています。

最後に

というわけで、移行後の動作確認も兼ねて、久々にブログを書いてみました。無事、ビルドも通るし、デプロイスクリプトも問題なさそうなので完了です。

最近は自分の日常のインターネットへのアクセス回線がほぼv6に対応してて、こまごま作業用のこのVPSだけv6対応できていなかったのがやっとv6化できました。あとは、IIJ SIMさしているMR03LNだけ…まじでがんばってファームウェアアップデートしてほしい。もしくは、MR02LNに戻るか。