【さくらの VPS】Ubuntu で IPv6 アドレスを使えるように設定する方法

前書き

さくらの VPS は IPv6 に対応していますが、デフォルトでは無効化されています。以下の画像は、さくらの VPS 公式サイトからのネットワークスペックの部分をスクショしたものです。

せっかく IPv6 に対応しているのだから有効化して IPv6 アドレスを使ってみたいと思い、その設定方法について書いておこうと思う。

サーバーの OS は Ubuntu です。

コントロールパネルで IPv6 アドレスを確認する

コントロールパネルで割り当てられている IPv6 アドレスを確認しよう。コントロールパネルにログインして該当のサーバーをクリックすると [サーバー情報] のところですぐに確認できる。

Ubuntu の IPv6 を有効化する設定

まずは現状を確認する

OS (Ubuntu) に ssh ログインしする。 以下の通り、Ubuntu のバージョンは 20.04 だ。

$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.4 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.4 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
$

IPv6 が無効化状態になっていることを確認しよう。以下のコマンドで確認できる。

$ sysctl -a --pattern disable_ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.ens3.disable_ipv6 = 1
net.ipv6.conf.ens4.disable_ipv6 = 1
net.ipv6.conf.ens5.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
$

ip address コマンドで IPv4 のアドレスは割り当てられているが IPv6 のアドレスは割り当てられていないことも見ておこう。

$ ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
        valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether aa:bb:cc:43:a6:0d brd ff:ff:ff:ff:ff:ff
    inet xx.yy.156.13/23 brd xx.yy.157.255 scope global ens3
        valid_lft forever preferred_lft forever
3: ens4: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether aa:bb:cc:44:a6:0d brd ff:ff:ff:ff:ff:ff
4: ens5: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether aa:bb:cc:45:a6:0d brd ff:ff:ff:ff:ff:ff
$

ens3 に IPv4 のアドレス (inet の後ろ) が設定されているが IPv6 のアドレスは設定されていない。end3 の設定だけ表示させるには以下のコマンドを実行する。

$ ip address show dev ens3
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether aa:bb:cc:43:a6:0d brd ff:ff:ff:ff:ff:ff
    inet xx.yy.156.13/23 brd xx.yy.157.255 scope global ens3
        valid_lft forever preferred_lft forever
$

IPv6 がどのように無効化されているかを確認する

IPv6 を有効化する方法は、01-netcfg.yaml というファイルを編集することです。/etc/netplan ディレクトリにあるので移動してファイルの中身を表示させてみる。

$ cd /etc/netplan
$ ls -l
total 4
-rw-r--r-- 1 root root 263 May 16 00:12 01-netcfg.yaml
$ cat 01-netcfg.yaml 
network:
  version: 2
  ethernets:
    ens3:
      gateway4: xx.yy.156.1
      nameservers:
        addresses: [210.224.163.3, 210.224.163.4]
      addresses:
        - xx.yy.156.13/23
#        - "aaaa:bbbb:202:1212:xx:yy:156:13/64"
#      gateway6: "fe80::1"
$

01-netcfg.yaml の最後の 2 行に # がつけられてコメントになっている。このコメントにより IPv6 設定が有効化されなくなっているのだ。

それともう 1 つ、60-disable-ipv6.conf というファイルがあり、これは OS 起動時に読み込まれるが、その時に IPv6 を無効化するように動作する。ファイル名からもそのことがうかがえますね。このファイルが OS 起動時に読み込まれないようにする必要がある。

つまり、やることは 2 つで、01-netcfg.yaml の編集 (コメントの解除) と 60-disable-ipv6.conf になる。

[1] 60-disable-ipv6.conf が OS 起動時に読み込まれないようにする

これはファイル名を変更 (リネーム) することで読み込まれないようにします。60-disable-ipv6.conf は /etc/sysctl.d ディレクトリにある。

$ cd /etc/sysctl.d
$ ls -l 60*
-rw-r--r-- 1 root root 92 May 16 00:12 60-disable-ipv6.conf
$ sudo mv /etc/sysctl.d/60-disable-ipv6.conf /etc/sysctl.d/60-disable-ipv6.conf.bak
[sudo] password for nobi: 
$ ls -l 60*
-rw-r--r-- 1 root root 92 May 16 00:12 60-disable-ipv6.conf.bak
$

これでよし。

[2] 01-netcfg.yaml のコメントを解除する

sed コマンドを使って、行頭にある # を削除してしまおう。

$ cd /etc/netplan
$ ls -l
total 4
-rw-r--r-- 1 root root 263 May 16 00:12 01-netcfg.yaml
$ sudo sed -i -e "s/^#//" /etc/netplan/01-netcfg.yaml
$ ls -l
total 4
-rw-r--r-- 1 root root 261 Jun 4 20:05 01-netcfg.yaml
$ cat 01-netcfg.yaml 
network:
  version: 2
  ethernets:
    ens3:
      gateway4: xx.yy.156.1
      nameservers:
        addresses: [210.224.163.3, 210.224.163.4]
      addresses:
        - xx.yy.156.13/23
        - "aaaa:bbbb:202:1212:xx:yy:156:13/64"
      gateway6: "fe80::1"
$

これでよし。sudo reboot コマンドで OS を再起動して変更を反映させよう。

Ubuntu の IPv6 が有効化されたことを確認する

再起動が完了したら再度 ssh でログインし、ip address コマンドで IPv6 アドレスが設定されていることを確認する。

$ ip address show dev ens3
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 9c:a3:ba:43:a6:0d brd ff:ff:ff:ff:ff:ff
    inet xx.yy.156.13/23 brd xx.yy.157.255 scope global ens3
        valid_lft forever preferred_lft forever
    inet6 aaaa:bbbb:202:1212:xx:yy:156:13/64 scope global 
        valid_lft forever preferred_lft forever
    inet6 fe80::9ea3:baff:jjjj:dddd/64 scope link 
        valid_lft forever preferred_lft forever
$

inet の後ろに IPv4 のアドレスが確認できるのとあわせて、inet6 の後ろに IPv6 のアドレスも設定されたことがわかる。

これでこの Ubuntu は IPv4 と IPv6 の両方が使える、いわゆるデュアルスタック構成となった。

参考情報

この投稿で紹介した手順は、さくらの VPS 公式マニュアルをまるごと真似させていただいた。参考としてリンクを載せておきたい。

→ IPv6 有効化手順 (Ubuntu 20.04)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください