IPv6有効化手順(Ubuntu 18.04)

さくらのVPSで提供中の標準OS「Ubuntu 18.04」のIPv6アドレスに関するページです。

仮想サーバへのログイン

VNCコンソールまたはSSH経由でサーバへログインし、rootユーザに切り替えます。

カーネルパラメータの変更

現在の設定確認

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

ネットワークコンフィグの変更

現在のネットワーク設定を表示し、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:01:ae:a5 brd ff:ff:ff:ff:ff:ff
    inet 153.126.128.249/23 brd 153.126.129.255 scope global ens3
       valid_lft forever preferred_lft forever

IPv6に関する設定が記述された 02-netcfg-v6.yaml.bak というファイルの内容を確認します。
デフォルトではこの設定ファイルは読まれないようになっています。

$ cat /etc/netplan/02-netcfg-v6.yaml.bak
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    ens3:
      addresses:
        - "2401:2500:102:3000:XXX:XXX:XXX:XXX/64"
      gateway6: "fe80::1"

IPv6の設定確認(VPSコントロールパネル)

コントロールパネルにログインして、サーバの「ネットワーク情報」をクリックします。

記載内容が設定ファイルと同じであることを確認します。

IPv6の有効化

IPv6を無効化する設定が記述されている /etc/sysctl.d/60-disable-ipv6.conf を起動時に読み込まないようにリネームします。

$ sudo mv /etc/sysctl.d/60-disable-ipv6.conf /etc/sysctl.d/60-disable-ipv6.conf.bak

IPv6に関する設定が記述された 02-netcfg-v6.yaml.bak が起動時に読み込まれるようリネームします。

$ sudo mv /etc/netplan/02-netcfg-v6.yaml.bak /etc/netplan/02-netcfg-v6.yaml

リネームされていることを確認します。

$ ls /etc/sysctl.d/
10-console-messages.conf  10-ipv6-privacy.conf  10-kernel-hardening.conf  10-link-restrictions.conf  10-magic-sysrq.conf  10-network-security.conf  10-ptrace.conf  10-zeropage.conf  60-disable-ipv6.conf.bak  99-sysctl.conf  README
$ ls /etc/netplan/
01-netcfg.yaml  02-netcfg-v6.yaml

ネットワーク設定の反映

OSを再起動し、ネットワーク設定を反映します。

$ sudo reboot

設定の反映を確認

ネットワークの情報で、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:XX:XX:XX brd ff:ff:ff:ff:ff:ff
    inet XXX.XXX.XXX.XXX/23 brd XXX.XXX.XXX.255 scope global ens3
       valid_lft forever preferred_lft forever
    inet6 2401:2500:102:3000:XXX:XXX:XX:XXX/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::9ea3:baff:fe01:XXXX/64 scope link
       valid_lft forever preferred_lft forever

IPv6のデフォルトゲートウェイが「fe80::1」と設定されていることを確認します。

$ ip -6 route
2401:2500:102:3000::/64 dev ens3 proto kernel metric 256 pref medium
fe80::/64 dev ens3 proto kernel metric 256 pref medium
default via fe80::1 dev ens3 proto static metric 1024 pref medium

「ping6」コマンドを用いて外部と通信可能であるか確認を行います。

$ ping6 -c 5 -I ens3 google.com
PING google.com(nrt20s08-in-x0e.1e100.net (2404:6800:4004:808::200e)) from 2401:2500:102:3000:XXX:XXX:XXX:XXX ens3: 56 data bytes
64 bytes from nrt20s08-in-x0e.1e100.net (2404:6800:4004:808::200e): icmp_seq=1 ttl=54 time=18.2 ms
64 bytes from nrt20s08-in-x0e.1e100.net (2404:6800:4004:808::200e): icmp_seq=2 ttl=54 time=18.0 ms
64 bytes from nrt20s08-in-x0e.1e100.net (2404:6800:4004:808::200e): icmp_seq=3 ttl=54 time=18.1 ms
64 bytes from nrt20s08-in-x0e.1e100.net (2404:6800:4004:808::200e): icmp_seq=4 ttl=54 time=18.0 ms
64 bytes from nrt20s08-in-x0e.1e100.net (2404:6800:4004:808::200e): icmp_seq=5 ttl=54 time=18.1 ms

通信が可能であればIPv6アドレスを有効にする方法は完了です。