Ошибка привязки IPv6: невозможно назначить запрошенный адрес - PullRequest
0 голосов
/ 09 мая 2020

Как я понял, адреса 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 предназначен только для упрощения описания проблемы.

1 Ответ

1 голос
/ 09 мая 2020

Я прихожу к выводу, что все IPv6-адреса с префиксом 2a01: 2e8: d2 c: e24 c будут указывать на мою машину

Это предположение неверно. Длина префикса имеет то же значение, что и сетевая маска IPv4. Он определяет, какие адреса находятся в вашей локальной сети, а не какие адреса принадлежат вашему локальному хосту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...