此假设的基础在于:https://dev59.com/8mUp5IYBdhLWcg3wdXWa#15266701 引用如下: “/64” 是前缀长度,指定了地址中固定的位数。例如,/64 表示128位的IPv6地址中前64位固定,剩余的位数(在这个例子中为64)是灵活的,可以全部使用。这意味着当你的ISP提供给你一个 /64 的地址时,他们实际上提供给你2的64次方个地址,即 18446744073709551616 个地址。
编辑:经过 Wireshark 的确认,发送到该 /64 范围内的任何IP数据包都会被路由到我的服务器。
查看
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
之外,我无法将任何服务绑定到其他任何IPv6地址。
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:无法分配请求的地址
我想在同一端口上运行多个服务实例但使用不同的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
测试只是为了简化问题描述。