Conoha VPS (Ubuntu 18.04) + Nginx でIPv6に対応する


最初に

この記事はConoha VPSにかかわらず、
- Ubuntu 18.04LTS のネットワーク設定変更方法
- NginxのIPv6設定方法
- DNSの設定方法
が記載されています。

最近IPoE等でIPv6を利用する人が増えてきたように感じます。
その人たちはIPv6で接続した方が速度も速くなるためサーバー側も対応してあげる必要があります。

というか日本はIPv6への対応が出遅れているので、サービスを開発している方々には是非対応して欲しいです。

CentOSの方はこちらをご覧ください。

また、この記事とお手元の環境で多少の差異があることと思います。自分の環境に合わせて作業してください。

注意しなければいけないこと

Conoha VPSでは、グローバルIPv4が1つ,IPv6が17個自由に使えます。
しかし、IPv6に関しては自由に使えるだけであらかじめVPSにはアドレスが設定されていません。
IPv4のアドレスのみが最初から設定されています。
これはシェルで
$ ip a
と打つことにより確認できます。
このコマンドを打った時にIPv4のグローバルアドレスと、IPv6のローカルアドレス(fe80から始まっているアドレス)しか表示されない場合はUbuntuにIPv6が設定されていません。
また、Ubuntu 18.04からネットワーク周りの設定方法が変わっているため、インターネット上にある情報の大半が利用できなくなっています。

Ubuntu18.04 LTSの設定

Ubuntu 18.04からyamlファイルで設定するようになりました。

  1. $cd /etc/netplan でディレクトリを移動します。
  2. ls でそのディレクトリにあるyamlファイルを表示します。僕の環境(Conoha)の場合は 10-gmovps.yaml がありました。
  3. yamlファイルを覗きます。僕の場合は $vim 10-gmovps.yaml です。環境によってファイル名が違うので注意。 デフォルトではこのような設定になっていると思います。 IPv4に関してはDHCPから取得する設定なのですね。
10-gmovps.yaml
 network:
     ethernets:
         eth0:
             addresses: []
             dhcp4: true
             dhcp6: false
             accept-ra: false
             optional: true
     version: 2

ここにIPv6に関しての設定を追記していきます。

4. Conohaのコントロールパネルから、対象のサーバーのIPv6アドレスとIPv6のゲートウェイアドレスを確認してください。
(わからない方はこちらのページの「利用可能なIPv6を確認する」を参考にしてください。)
17個のIPv6アドレスから好きなものを選んでください。(一番上に表示されるアドレスの末尾がIPv4アドレスと同じになっているので一番上に表示されるIPv6アドレスがわかりやすいかも)

5. 設定を書き換える

10-gmovps.yaml
 network:
     ethernets:
         eth0:
             addresses:
             - 「IPv6のアドレスをここに記述」/64
             dhcp4: true
             dhcp6: false
             accept-ra: false
             optional: true
             gateway6: 「ゲートウェイのアドレスをここに記述」
     version: 2

IPv6のアドレスを記入した後ろに /64を必ずつけてください(Conohaの場合。環境によって異なります。)

6. $ sudo netplan apply で設定を適用する。
7. $ ip aで指定したIPv6のアドレスが表示されることを確認してください。(エラーが出た場合は指定された場所を確認してください。yamlなのでよくあるミスがインデントのミス)

DNSの設定

自分が利用しているDNSにAAAAレコードを登録します。
この記事を見ている人はわかると思うのですが、
Aレコード→IPv4
AAAAレコード→IPv6
のアドレスを対応させます。
よって、先ほどUbuntuに設定したIPv6アドレスをAAAAレコードで任意のドメインに設定してください。
またIPv4からのアクセスも受け付ける場合は、同じドメインでAレコードにてIPv4アドレスを従来通り設定してください。

Nginxの設定

普通の環境ならば
/etc/nginx/sites-available/default の設定ファイルを書き換えます。

$vim /etc/nginx/sites-available/defaultにて編集していきます。

default
server{
         server_name 「先ほどのドメイン」;
         root 「表示するディレクトリ」;
         index index.html;
         listen [::]:80; #IPv6の設定
         listen 80; #IPv4の設定
 }

変更を上書き保存した後、 $nginx -tで設定内容が問題ないことを確認し、$systemctl restart nginxで設定を適用します。

最後に

最低限の構成でIPv6への対応方法を簡単に書いていきました。
お手元の環境に合わせて作業してもらえればと思います。
また、IPv6にしっかり対応できたかは
こちらのサイトで確認するとわかりやすいです。

このようにIPv6 web serverでチェックが入った場合は設定が正しく完了しています。

間違えている部分等ございましたら、コメントで指摘のほどよろしくお願いします。