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

时间:2020-05-09 07:02:10

标签: docker ubuntu ipv6

据我了解,IPv6地址是按块分配的。每台机器都有一个IPv6地址范围,该范围内的任何IPv6地址都将指向它。

ifconfig输出看这行

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

我得出结论,所有带有2a01:2e8:d2c:e24c前缀的IPv6地址都将指向我的机器。

但是,我无法将任何服务绑定到除IPv6地址以外的任何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地址可用于每台机器,因此我想利用它。

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

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

1 个答案:

答案 0 :(得分:1)

我得出结论,所有带有2a01:2e8:d2c:e24c前缀的IPv6地址都将指向我的机器

这个假设是错误的。前缀长度与IPv4网络掩码的含义相同。它确定哪些地址在您的本地网络上,而不是哪些地址属于您的本地主机。