有些网站在无效的 Linux 服务器上无法运行

有些网站在无效的 Linux 服务器上无法运行

我有一个无效的 Linux 服务器,有些网站无法在其上运行。如果我 ping google.com,就会出现超时错误

PING google.com(fra24s04-in-x0e.1e100.net (2a00:1450:4001:827::200e)) 56 data bytes
^C
--- google.com ping statistics ---
12 packets transmitted, 0 received, 100% packet loss, time 11258ms

尝试使用 wget 也会导致超时错误

--2022-06-28 22:03:18--  https://releases.ubuntu.com/22.04/ubuntu-22.04-desktop-amd64.iso
Resolving releases.ubuntu.com (releases.ubuntu.com)... 2620:2d:4000:1::17, 2001:67c:1562::28, 2620:2d:4000:1::1a, ...
Connecting to releases.ubuntu.com (releases.ubuntu.com)|2620:2d:4000:1::17|:443... failed: Connection timed out.
Connecting to releases.ubuntu.com (releases.ubuntu.com)|2001:67c:1562::28|:443... failed: Connection timed out.
Connecting to releases.ubuntu.com (releases.ubuntu.com)|2620:2d:4000:1::1a|:443... failed: Connection timed out.
Connecting to releases.ubuntu.com (releases.ubuntu.com)|2001:67c:1562::25|:443...

ip -6 addr输出

    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 2a01:7e01::7c6e:8f34:70a3:3aa4/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 5284sec preferred_lft 1684sec
    inet6 fe80::bf7e:a39f:fdf4:2bb1/64 scope link 
       valid_lft forever preferred_lft forever

ip -6 route输出

fe80::/64 dev eth0 proto kernel metric 256 pref medium
default via fe80::1 dev eth0 proto ra metric 1002 mtu 1500 pref medium

ip -6 rule输出

32766:  from all lookup main

ip6tables-save不输出任何内容

一些 IP 地址和网站可以正常工作,但不是很多。我尝试更改 DNS 服务器和网络管理器,但都不起作用。我该如何解决这个问题并让互联网正常工作?

答案1

所有“不起作用”的示例都显示 IPv6 连接 - 这意味着服务器可能有一个真正的 IPv6 地址和一个 IPv6 默认路由(否则它不会尝试这样做),但由于某种原因它仍然无法将 v6 数据包发送到任何地方。

根据ip addr输出,该服务器有一个来自 Linode 的一个“共享”子网的 IPv6 地址(其中每个服务器使用 SLAAC 选择自己的地址)。

然而,Linode 数据中心不允许服务器选择任何随机地址——它们有反欺骗过滤功能,因此要求服务器使用仅有的其基于 MAC(又名基于 EUI64)的 IPv6 地址。

同时,您当前的 IPv6 地址肯定不是基于 EUI64 的——它缺少ff:fe插入基于 MAC 地址中间的中缀,这意味着它可能是 RFC7217“不透明”地址。(出于隐私原因,网络管理工具越来越多地使用不透明的 IPv6 地址——正是为了避免泄露 MAC 地址,这对于移动设备来说很重要,但对于虚拟服务器来说则不那么重要。

如果要继续通过 SLAAC 使用自动 IPv6 配置,则需要让 SLAAC 客户端始终使用 EUI64 地址:

  • dhcpcd:

    编辑您的 dhcpcd.conf 以说slaac hwaddr而不是slaac private

  • 网络管理器:

    跑步。nmcli con modify "Profile name here" ipv6.addr-gen-mode eui64

  • systemd-networkd(EUI64 已经是默认值):

    在*.network 配置文件部分中指定Token=eui64(或者根本不指定令牌) 。[IPv6AcceptRA]

  • 内核内置 SLAAC 客户端(EUI64 已经是默认):

    添加net.ipv6.conf.eth0.addr_gen_mode = 0到您的系统控制目录

相关内容