На этот вопрос уже есть ответ здесь:
У меня есть сервер Ubuntu 16.04.2 с блоком / 64 IPv6.
Если я добавляю блок, например:
ip addr add 2001:41d0:xxx:yyy::/64 dev eth2
работает только первый:
$ curl -g http://[2001:41d0:xxx:yyy::]/
<!DOCTYPE html>...
$ curl -g http://[2001:41d0:xxx:yyy::1]/
curl: (7) Failed to connect to 2001:41d0:xxx:yyy::1 port 80: Connection timed out
Если я добавляю остальные по одному, они работают:
ip addr add 2001:41d0:xxx:yyy::1/128 dev eth2
Что я делаю не так?
Блок также находится в / etc / network / interfaces:
iface eth2 inet6 static
address 2001:41d0:xxx:yyy::
netmask 64
Адрес интерфейса - это единственный адрес, хотя вы можете назначить интерфейсу несколько адресов IPv6, поэтому вы действительно добавляете 2001: 41d0: xxx: yyy ::
в сети 2001: 41d0: xxx: yyy :: / 64
к интерфейсу.
IPv6 фактически позволяет использовать каждый адрес в сети в качестве адреса хоста, в отличие от IPv4, где сетевой адрес не может использоваться в качестве адреса хоста, но RFC 2373, Архитектура адресации IP версии 6 определяет произвольный адрес подсети маршрутизатора как адрес со всеми нулями для сети.
2.6.1 Требуемый произвольный адрес. Адрес
Предопределенный произвольный адрес подсети-маршрутизатора. Его формат такой следует:
| n бит | 128-n бит | + ------------------------------------------------ + ---------------- + | префикс подсети | 00000000000000 | + ------------------------------------------------ + ---------------- +
«Префикс подсети» в произвольном адресе - это префикс, который определяет конкретную ссылку. Этот произвольный адрес синтаксически является то же самое, что и одноадресный адрес для интерфейса на ссылке с идентификатор интерфейса установлен в ноль.
Пакеты, отправленные на произвольный адрес подсети-маршрутизатора, будут доставлены на один роутер в подсети. Все маршрутизаторы должны поддерживать Адреса подсети-маршрутизатора для подсетей, которые у них есть интерфейсы.
@Ron_Maupin дает правильный ответ, но я чувствовал, что он будет дополнен более простым:
/ 64 не означает, что весь блок назначен интерфейсу. Он назначил интерфейсу один адрес и сообщает ему, что в локальной сети есть блок / 64. Это почти всегда то, что вам нужно для интерфейса Ethernet.
/ 128 - это почти никогда то, что вам нужно для интерфейса Ethernet. Эти адреса будут недоступны из LAN.