IPv6 绑定错误。无法分配请求的地址

问题描述 投票:0回答:1

据我了解,IPv6地址是以块为单位分配的。每台机器都会得到一个IPv6地址范围,该范围内的任何IPv6地址都会指向它。

从这一行来看 ifconfig 产出

inet6 2a01:2e8:d2c:e24c::1  prefixlen 64  scopeid 0x0<global>

我的结论是,所有带有 2a01:2e8:d2c:e24c 前缀将指向我的机器。

然而,我无法将任何服务绑定到任何IPv6地址上,除了 2a01:2e8:d2c:e24c:0000:0000:0000:0001

nc -l 2a01:2e8:d2c:e24c:0000:0000:0000:0002 80 不工作

nc -l 2a01:2e8:d2c:e24c:0000:0000:0001:0001 80 不工作

nc -l 2a01:2e8:d2c:e24c:1000:0000:0000:0001 80 不工作

nc -l 2a01:2e8:d2c:e24c:0000:0000:0000:0001 80 只有这样才行得通

nc -l <IP> <PORT> 在指定的IP和端口上打开一个简单的TCP服务器。

我得到的错误是 nc: Cannot assign requested address

我想在同一个端口上运行多个服务实例,但IPv6地址不同。由于每台机器都有大量的公共IPv6地址,我想利用相同的IPv6地址。

ifconfig:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 88.77.66.55  netmask 255.255.255.255  broadcast 88.77.66.55
        inet6 fe80::9300:ff:fe33:64c1  prefixlen 64  scopeid 0x20<link>
        inet6 2a01:2e8:d2c:e24c::1  prefixlen 64  scopeid 0x0<global>
        ether 96:00:00:4e:31:e4  txqueuelen 1000  (Ethernet)
        RX packets 26788391  bytes 21199864639 (21.1 GB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 21940989  bytes 20045216536 (20.0 GB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

操作系统:Ubuntu 18.04

VPS主机:Hetzner Hetzner

实际上,我正在尝试在主机的不同IPv6地址上运行多个映射到80端口的nginx docker容器。这时我遇到了问题。遇到的问题是 nc -l 测试只是为了简化问题的描述。

docker ubuntu ipv6
1个回答
1
投票

我的结论是所有IPv6地址前缀为2a01:2e8:d2c:e24c的IPv6地址都会指向我的机器。

这个假设是错误的。前缀长度与IPv4网罩的意义相同。它决定了哪些地址在你的本地网络上,而不是哪些地址属于你的本地主机。

© www.soinside.com 2019 - 2024. All rights reserved.