IPv6 網關外部網路 (OVH)
我們是 OVH 的專用伺服器,分配了 2001:41d0:a:72xx::/64
根據來自主機的虛擬機的 IPv6 公共路由,我已將機器設置在橋接到 wan 的網段上
網關是2001:41d0:a:72ff:ff:ff:ff:ff,網路外
我們正在執行一堆虛擬 Debian 伺服器。
我們的一些(較舊的)伺服器很樂意將 ipv6 路由到網關,但我嘗試設置的新伺服器在 ping gw 時說“無法訪問目標;無法訪問地址”。
防火牆設置相同(/64 的規則,而不是主機級別的規則),並且 /etc/network/interfaces 是相同的;ipv6 設置為靜態。(不同的原因地址)
在工作和非工作機器上, netstat -rn6|grep eth1 show
2001:41d0:a:72xx::/64 :: U 256 2 40 eth1 2001:41d0:a:7200::/56 :: UAe 256 2 71 eth1 2001:41d0:a1:72xx::/64 :: UAe 256 0 0 eth1 2000::/3 2001:41d0:a:72ff:ff:ff:ff:ff UG 1024 2 63479 eth1 fe80::/64 :: U 256 0 0 eth1 ::/0 fe80::205:73ff:fea0:1 UGDAe 1024 1 2 eth1 ::/0 fe80::20c:29ff:fe22:60f8 UGDAe 1024 0 0 eth1 ff00::/8 :: U 256 2108951 eth1
在非工作機器上,ping gw 或 workd 會返回“Destination unreachable”。
這些機器都可以在本地區域網路上相互訪問。
我不知道這是否相關,但
ping -c3 ff02::2%eth1 64 bytes from fe80::20c:29ff:fedb:a137%eth1: icmp_seq=1 ttl=64 time=0.240 ms 64 bytes from fe80::20c:29ff:fe22:60f8%eth1: icmp_seq=1 ttl=64 time=0.250 ms (DUP!) 64 bytes from fe80::2ff:ffff:feff:fffd%eth1: icmp_seq=1 ttl=64 time=3.57 ms (DUP!) 64 bytes from fe80::2ff:ffff:feff:fffe%eth1: icmp_seq=1 ttl=64 time=5.97 ms (DUP!)
關於非工作
ping -c3 ff02::2%ens34 PING ff02::2%ens34(ff02::2%ens34) 56 data bytes 64 bytes from fe80::20c:29ff:fedb:a137%ens34: icmp_seq=1 ttl=64 time=0.130 ms 64 bytes from fe80::20c:29ff:fe22:60f8%ens34: icmp_seq=1 ttl=64 time=0.138 ms (DUP!)
:fffd amd :fffe 地址失去。
所有 ipv6 地址都已在 OVH 控制面板中分配。
TL;DR:新舊伺服器之間肯定有些不同,但我找不到。
更新:工作機器的複製不起作用。
在 pfsense 的外部,設置為網橋,機器發送以下內容:
12:33:23.087778 IP6 test1.example.org > fe80::2ff:ffff:feff:fffe: ICMP6, neighbor advertisement, tgt is test1.example.org, length 32 12:33:24.106302 IP6 test1.example.org > par10s28-in-x0e.1e100.net: ICMP6, echo request, seq 451, length 64
但什麼都回不來了。來自外部的 ping 也不會通過。
由於機器是工作機器的精確複製,除了 ip 地址,它必須是 OVH 的上游問題。
更新 2 現在 OVH 聲稱要將數據路由到 IPv6,mac 需要與 IPv4 地址相關聯。OMG工作的 IPv6 不是。
OVH 不知道如何正確地執行 IPv6,它們的設置僅在某些情況下有效,並不適用於任何地方。
只有當伺服器暴露於世界並且還具有公共 IPv4 地址時,它才可以在沒有特殊的箍跳的情況下工作。
他們無法提供一個公共 ipv6 和路由到它的子網,如果想要在自己的防火牆後面執行 VM,則需要這樣做。
如果您對 IPv6 感興趣,那麼在他們讓他們的東西正常工作之前,最好去別處看看。
OVH 在其交換機上執行交換機埠安全性,因此只有列入白名單的 MAC 地址才能使用任何給定埠。這不適用於 vRack;在 vRack 上禁用交換機埠安全性。但是 OVH 還不允許您將 IPv6 子網路由到 vRack。您也不能將IPv6 子網故障轉移到另一台伺服器。這是一個嚴重的疏忽;在這兩種功能都存在之前,OVH 的 IPv6 支持被認為是有限的。
所以這就是我如何設置一個執行幾十個虛擬機的 OVH 伺服器:
在主機伺服器上,br3 是一個包含 eno3 和我在其上路由 IPv6 的虛擬網路介面的網橋。主機配置為:
# cat /etc/sysconfig/network-scripts/ifcfg-br3 DEVICE="br3" TYPE="Bridge" STP="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_FAILURE_FATAL="no" NAME="br3" ONBOOT="yes" ZONE="public" BOOTPROTO="static" IPADDR="203.0.113.24" PREFIX="24" GATEWAY="203.0.113.1" IPV6_AUTOCONF="no" IPV6ADDR="2001:db8:1f3:c187::/64"
我有這樣配置的靜態路由:
# cat /etc/sysconfig/network-scripts/route6-br3 2001:db8:1f3:c187::/64 dev br3 2001:db8:1f3:c1ff:ff:ff:ff:ff dev br3 default via 2001:db8:1f3:c1ff:ff:ff:ff:ff dev br3
然後我執行
ndppd
,它會回答我的 /64 中任何地址的 NDP 鄰居請求查詢。它是這樣配置的:# cat /etc/ndppd.conf route-ttl 30000 proxy br3 { router yes timeout 500 ttl 30000 rule 2001:db8:1f3:c187::/64 { static } }
這會導致主機的 MAC 地址用於子網中的所有 IPv6 地址,然後我將其路由到 libvirt 中的虛擬介面,拆分為 /80 網路。一個範例是這樣配置的:
# cat /etc/libvirt/qemu/networks/v6bridge_1.xml <!-- WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE OVERWRITTEN AND LOST. Changes to this xml configuration should be made using: virsh net-edit v6bridge_1 or other application using the libvirt API. --> <network> <name>v6bridge_1</name> <uuid>7007a2b2-08b8-4cd5-a4aa-49654ae0829b</uuid> <forward mode='route'/> <bridge name='v6bridge_1' stp='on' delay='0'/> <mac address='52:54:00:fc:d4:da'/> <ip family='ipv6' address='2001:db8:1f3:c187:1::' prefix='80'> </ip> </network>
此特定網路中的所有 VM 都分配有手動 IPv6 地址,但您可以根據需要設置 DHCPv6。那看起來像:
<ip family='ipv6' address='2001:db8:1f3:c187:1::' prefix='80'> <dhcp> <range start="2001:db8:1f3:c187:1::100" end="2001:db8:1f3:c187:1::1ff"/> </dhcp> </ip>
然後,我將 IPv4 故障轉移地址路由到 vRack,該 vRack 橋接到一個網橋
br4
,eno4
我的所有 VM 都從該網橋獲得第二個虛擬 NIC。因此,它們在一個介面上有 IPv6,在另一個介面上有 IPv4。這是可選的;您可以在主界面上保留 IPv4 故障轉移地址(例如,如果您沒有 vRack)。