VPS IPv6 設定教學:Ubuntu Netplan、Debian、Rocky Linux 與 Windows Server
每台 JUSTG 雲端伺服器除了 IPv4 之外,都免費提供 IPv6 位址。IPv6 讓您多一條獨立的管道連到 VPS,讓網站能被只支援 IPv6 的行動網路存取,在需要額外位址時也是免費的替代方案。本文說明如何在 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)設定 IPv6
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。先列出連線,再把綁定該介面的連線改成手動 IPv6(名稱可能是 System eth0、eth0 或 Wired connection 1):
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
想用圖形介面的話:開啟「控制台 > 網路和共用中心 > 變更介面卡設定」,在網路介面卡按右鍵選「內容 > 網際網路通訊協定第 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 的電腦 ping 您 VPS 的 IPv6。
步驟 7:透過 IPv6 位址 SSH 連線
現在可以從有 IPv6 的電腦直接登入 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 一條規則就能同時處理兩種協定:
# 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。
如 VPS 的 IPv6 仍無法使用,請提交工單並附上 ip -6 addr 與 ip -6 route 的輸出,JUSTG 技術支援會協助您。