如何將 IPv6 路由到外部介面?

如何將 IPv6 路由到外部介面?

我從 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路由器通告,但「手動」方法(即「靜態」方法)會忽略此參數。

相關內容