尝试在我的系统上运行 IPv6 的基本功能。如果我这样做:
sudo ip -6 address show enp2s0
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
inet6 2601:646:9780:4729:241b:3a90:ee0f:25f0/64 scope global temporary dynamic
valid_lft 319298sec preferred_lft 9212sec
inet6 2601:646:9780:4729:966:9e4c:672d:15ca/64 scope global temporary deprecated dynamic
valid_lft 319298sec preferred_lft 0sec
inet6 2601:646:9780:4729:550e:60d0:d47:d8a4/64 scope global temporary deprecated dynamic
valid_lft 319298sec preferred_lft 0sec
inet6 2601:646:9780:4729:e9c:5834:f3dd:e05b/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 319298sec preferred_lft 319298sec
inet6 fe80::ce93:ee7e:7c15:2a67/64 scope link noprefixroute
valid_lft forever preferred_lft forever
看起来我有 ipv6 地址,对吗?
我也能 ping 我自己:
ping 2601:646:9780:4729:241b:3a90:ee0f:25f0
PING 2601:646:9780:4729:241b:3a90:ee0f:25f0(2601:646:9780:4729:241b:3a90:ee0f:25f0) 56 data bytes
64 bytes from 2601:646:9780:4729:241b:3a90:ee0f:25f0: icmp_seq=1 ttl=64 time=0.057 ms
64 bytes from 2601:646:9780:4729:241b:3a90:ee0f:25f0: icmp_seq=2 ttl=64 time=0.051 ms
但是,如果我尝试使用 IPv6 ping 外部世界的某些东西,它是不工作的:
addr www.example.com
Addresses for host: www.example.com
Address: type: AF_INET Socket type: SOCK_STREAM Address: 93.184.216.34
Address: type: AF_INET Socket type: SOCK_DGRAM Address: 93.184.216.34
Address: type: AF_INET Socket type: SOCK_RAW Address: 93.184.216.34
Address: type: AF_INET6 Socket type: SOCK_STREAM Address: 2606:2800:220:1:248:1893:25c8:1946
Address: type: AF_INET6 Socket type: SOCK_DGRAM Address: 2606:2800:220:1:248:1893:25c8:1946
Address: type: AF_INET6 Socket type: SOCK_RAW Address: 2606:2800:220:1:248:1893:25c8:1946
ping 93.184.216.34
PING 93.184.216.34 (93.184.216.34) 56(84) bytes of data.
64 bytes from 93.184.216.34: icmp_seq=1 ttl=56 time=10.2 ms
64 bytes from 93.184.216.34: icmp_seq=2 ttl=56 time=10.2 ms
64 bytes from 93.184.216.34: icmp_seq=3 ttl=56 time=9.92 ms
ping 2606:2800:220:1:248:1893:25c8:1946
connect: Network is unreachable
我在这里做错了什么?
答案1
您有 IPv6 地址,但不一定是 IPv6默认路由。 查看ip -6 r
。
默认路由(以及基于 SLAAC 的 LAN 寻址)使用广播 ICMPv6 路由器通告数据包进行分发。可能是您的路由器之前拥有 IPv6 访问权限,但后来丢失了,或者出于其他原因没有将自己通告为默认网关,尽管它仍然具有公共地址前缀。
运行sudo rdisc6 enp2s0
以查看路由器广播的 RA 的内容 - 确保其“路由器寿命”设置为非零数字(通常为 1⁄2h 或更大)。该工具通常位于“ndisc6”包中。
附注:带有“临时”标志的地址每 10 小时会更改一次 - 它们是用于所有传出连接的 RFC 4941“隐私扩展”地址。(在列表中,您已经有两个“过期”地址。)如果您需要一个有用的地址传入连接,请使用..e05b
旁边没有“临时”的连接 - 它将始终为这台计算机保持静态。(旁边的“mngtmpaddr”不是问题。)