Как я понял, адреса IPv6 выделяются блоками. Каждая машина получает диапазон IPv6-адресов, и любой IPv6-адрес в этом диапазоне будет указывать на него.
Глядя на эту строку из ifconfig
output
inet6 2a01:2e8:d2c:e24c::1 prefixlen 64 scopeid 0x0<global>
, я прихожу к выводу, что все IPv6-адреса с префиксом 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>
открывает простой TCP-сервер на указанном IP-адресе и порту.
Я получаю ошибку: nc: Cannot assign requested address
Я хочу запустить несколько экземпляров службы на одном порте, но с разными IPv6-адресами. Поскольку publi c 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
На самом деле я пытаюсь запустить несколько контейнеров nginx docker, сопоставленных с портом 80, на разных IPv6-адресах хоста. Вот тогда я и столкнулся с проблемой. Тест nc -l
предназначен только для упрощения описания проблемы.