VPSでIPv6を設定する方法(Ubuntu Netplan・Debian・Rocky Linux・Windows Server)
JUSTGのクラウドサーバーには、IPv4に加えてIPv6アドレスが無料で付いています。IPv6を使えば、VPSへの独立したもう一つの接続経路を確保でき、IPv6専用のモバイル回線からもWebサイトにアクセスしてもらえます。追加アドレスが必要なときの無料の選択肢にもなります。このチュートリアルでは、Debian、Ubuntu(Netplan)、CentOS、Rocky Linux、AlmaLinux、Windows Server 2016/2019/2022でのIPv6の確認と設定、ping -6・curl -6による疎通確認、IPv6でのSSH接続、IPv6ファイアウォールの設定までを説明します。
ステップ1:IPv6アドレスとゲートウェイを確認する
JUSTGクライアントエリアにログインし、「マイ製品とサービス」からVPSを開くと、割り当てられたIPv6アドレス、プレフィックス長、IPv6ゲートウェイが表示されます。見つからない場合はチケットを送信すればサポートからお知らせします。本記事ではドキュメント用の値(アドレス 2001:db8::10/64、ゲートウェイ 2001:db8::1、IPv4 203.0.113.50)を使います。実際の値に置き換えてください。
ステップ2:IPv6が設定済みか確認する
イメージによってはIPv6が自動設定されています。Linuxで次を実行します。
ip -6 addr show
ip -6 route show
ip link
inet6 2001:db8::10/64 scope global の行とゲートウェイ経由のデフォルトルートがあれば、IPv6はすでに使えるのでステップ6へ進んでください。fe80:: で始まるアドレスはリンクローカルのみで不十分です。ip link でインターフェース名(eth0 や ens3 など)を控えておきます。
ステップ3:UbuntuのNetplanで静的IPv6を設定する
Ubuntu 18.04以降はNetplanを使います。/etc/netplan/ 内のYAMLファイル(50-cloud-init.yaml や 01-netcfg.yaml が多い)を開き、既存のIPv4設定と並べてIPv6アドレスとルートを追加します。インデントは必ずスペースで行います。
network:
version: 2
ethernets:
eth0:
addresses:
- 203.0.113.50/24
- "2001:db8::10/64"
routes:
- to: default
via: 203.0.113.1
- to: "::/0"
via: "2001:db8::1"
nameservers:
addresses: [1.1.1.1, 8.8.8.8]
検証して適用します。netplan try は120秒以内に確定しなければ自動で元に戻るので、接続が切れても安心です。
sudo netplan generate
sudo netplan try
sudo netplan apply
cloud-initが生成したファイルの場合は、再起動時に上書きされないよう無効化します。
echo "network: {config: disabled}" | sudo tee /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
ステップ4:Debian(/etc/network/interfaces)とCentOS/Rocky(nmcli)での設定
Debian(ifupdown)では、/etc/network/interfaces の既存IPv4ブロックの下に、インターフェースの inet6 ブロックを追加します。
iface eth0 inet6 static
address 2001:db8::10/64
gateway 2001:db8::1
sudo systemctl restart networking
CentOS Stream・Rocky Linux・AlmaLinux はNetworkManagerを使います。接続一覧を表示し、対象インターフェースの接続(名前は System eth0、eth0、Wired connection 1 などさまざま)でIPv6を手動に設定します。
nmcli connection show
sudo nmcli connection modify "System eth0" ipv6.method manual \
ipv6.addresses 2001:db8::10/64 ipv6.gateway 2001:db8::1
sudo nmcli connection up "System eth0"
ステップ5:Windows ServerでIPv6を設定する
管理者としてコマンドプロンプトを開き、インターフェース名(通常は Ethernet)を確認して、アドレスとデフォルトルートを追加します。
netsh interface ipv6 show interfaces
netsh interface ipv6 add address "Ethernet" 2001:db8::10/64
netsh interface ipv6 add route ::/0 "Ethernet" 2001:db8::1
GUIで設定する場合は「コントロールパネル」→「ネットワークと共有センター」→「アダプターの設定の変更」でアダプターを右クリックし、「プロパティ」→「インターネット プロトコル バージョン 6 (TCP/IPv6)」→「次のIPv6アドレスを使う」を選んで、アドレス、サブネットプレフィックス長64、デフォルトゲートウェイを入力します。
ステップ6:ping -6とcurl -6でIPv6接続をテストする
# Linux
ping -6 -c 4 www.google.com
curl -6 https://ifconfig.co
# Windows (PowerShell)
ping -6 www.google.com
pingに応答があり、curlがサーバーのIPv6アドレスを返せば、外向きのIPv6は正常です。外部からの到達性は、別のIPv6対応マシンからVPSのIPv6にpingして確認します。
ステップ7:IPv6アドレスでSSH接続する
IPv6が使えるPCから、IPv6アドレスに直接ログインできます。OpenSSHは既定でIPv6も待ち受けます。もし待ち受けていなければ、/etc/ssh/sshd_config の AddressFamily が any または inet6 になっているか確認してください。
ssh root@2001:db8::10
ssh -6 root@2001:db8::10
ステップ8:IPv6ファイアウォールを設定する(ufw・firewalld・ip6tables)
IPv4だけ守ってIPv6を開けっ放しにしてしまうのはよくあるミスです。ufw と firewalld は1つのルールで両方のプロトコルに適用されます。
# Debian / Ubuntu: make sure /etc/default/ufw contains IPV6=yes
sudo ufw allow 22/tcp
sudo ufw allow 80,443/tcp
sudo ufw enable
sudo ufw status verbose
# CentOS / Rocky / AlmaLinux (firewalld covers IPv4 and IPv6)
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http --add-service=https
sudo firewall-cmd --reload
ip6tables で手動管理する場合は、必ずICMPv6を許可してください。許可しないと近隣探索(NDP)が機能せず、IPv6が使えなくなります。
ip6tables -A INPUT -i lo -j ACCEPT
ip6tables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
ip6tables -A INPUT -p ipv6-icmp -j ACCEPT
ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT
ip6tables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
ip6tables -P INPUT DROP
# Debian / Ubuntu: save the rules
apt install iptables-persistent
netfilter-persistent save
Windows Serverでは、Windows Defender ファイアウォールのルールはアドレス範囲を絞らない限りIPv4とIPv6の両方に適用されます。
よくある質問
JUSTGクラウドサーバーのIPv6は本当に無料ですか?
はい。ヨハネスブルグ・モスクワ・東京・ソウルのすべてのJUSTGクラウドサーバーで、IPv6は追加料金なしで利用できます。
設定を適用したら接続が切れました。
クライアントエリアのVNCコンソールを開き、ネットワーク設定ファイルのバックアップを戻すか、インデント(Netplan)や接続名(nmcli)を修正してから再度適用してください。
IPv6は追加のIPv4の代わりになりますか?
IPv6に対応した利用者やサービスに対しては代わりになります。お客様自身の利用が原因でIPv4がブロックされた場合も、無料のIPv6で接続を続けるか、クライアントエリアのアップグレードオプションでIPv4を追加購入できます。
それでもIPv6が使えない場合は、ip -6 addr と ip -6 route の出力を添えてチケットを送信し、JUSTGテクニカルサポートにお問い合わせください。