【さくらの 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 公式マニュアルをまるごと真似させていただいた。参考としてリンクを載せておきたい。