我從 IONOS 購買了 VPS。雖然他們提供 IPv6 範圍2a00:xxxx:xxxx:67::/64,但他們不會將其路由到 VPS 本身,這很奇怪。
我想知道如何才能實現這一目標。我只有 254 個客戶,所以我很樂意手動完成。這是我在路由表中已經看到的:
ip -6 route
::1 dev lo proto kernel metric 256 pref medium
2a00:xxxx:xxxx:67:ffff::1 dev wg0 metric 1024 pref medium
2a00:xxxx:xxxx:67:ffff::2 dev wg0 metric 1024 pref medium
... all way to 254
2a00:xxxx:xxxx:67:ffff::254 dev wg0 metric 1024 pref medium
2a00:xxxx:xxxx:67::/64 dev ens192 proto kernel metric 256 pref medium
fd8e:xxxx:xxxx::/112 dev wg0 proto kernel metric 256 pref medium
fe80::/64 dev ens192 proto kernel metric 256 pref medium
default via fe80::1 dev ens192 metric 1024 onlink pref medium
那麼我是否需要將客戶端 IP 單獨分配給 才能ens192使其正常工作?我為此製作了一個小 bash 腳本:
#!/bin/sh
NUMBER_CLIENTS=254
for ((DOT_IP=1; DOT_IP<=NUMBER_CLIENTS; DOT_IP++))
do
sudo ip -6 addr add 2a00:xxxx:xxxx:67:ffff::${DOT_IP}/64 dev ens192
done
該腳本有效,但我的 Wireguard VPN 用戶端仍然無法獲得正常運行的 IPv6。成功連接 Wireguard 後,他們只分配了 IPv4,而非 IPv6。
請問我還能做什麼?
基於他們的指導,他們似乎建議accept_ra 0在靜態IP分配中使用。但我沒有設定它:
auto lo ens192
iface lo inet loopback
allow-hotplug ens192
iface ens192 inet dhcp
iface ens192 inet6 static
address 2a00:xxxx:xxxx:67::1
netmask 64
gateway fe80::1
除此之外,我在以下位置啟用了轉送/etc/sysctl.d/99-sysctl.conf:
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
非常感謝
答案1
我最近有類似的問題。在使用預設配置的 IONOS VPS 上,不幸的是,啟用 .IPv6 後,IPv6 會停止運作net.ipv6.conf.all.forwarding = 1。這是特定於 IONOS 設定的,因為它們使用「路由器通告」來確定真實的 IPv6 位址,可能是為了避免在部署映像時必須為每個 VPS 建立特定的介面檔案。它們的預設 IPv6 配置如下所示:
iface ens192 inet6 manual
pre-up sleep 5
up dhclient -6 -nw -v ens192
down dhclient -6 -r -v ens192
然而,IP6 轉送預設會停用路由器通告,因此 IPv6 在這種情況下將停止運作。
此問題的有效解決方案是使用下列 IPv6 設定/etc/network/interfaces(將位址替換為您的 VPS 的特定 IPv6 位址,建議重新啟動):
iface ens192 inet6 static
accept_ra 2
address 2a00:xxxx:xxxx:67::1/128
up ip -6 r a default dev ens192
強制accept_ra 2路由器通告,但「手動」方法(即「靜態」方法)會忽略此參數。


