Я тестирую IPv6 в корпоративной сети и у меня проблемы с OS X. С большинством команд IPv6, таких как telnet -6
или traceroute6
, Я получаю сообщение об ошибке:
connect: No route to host
Например, у меня есть веб-сервер. Это не удается:
$ telnet -6 fe80::… 80 # this fails
Я знаю, что сервер доступен, потому что ping6
работает (обратите внимание, что я должен использовать -I
аргумент):
$ ping6 -I en1 fe80::… # this works
И я знаю, что веб-сервер запущен, потому что я могу подключиться к нему через telnet из Windows:
C:\> telnet fe80::… 80 # this works
Я подозреваю, что мне не хватает какого-то флага конфигурации или аргумента командной строки.
Префикс fe80 :: / 16 предназначен для локальных адресов, и они особенные. Попробуйте бежать
netstat -nr
в OS X и
netsh int ipv6 show routes
в Windows. В OS X вы, скорее всего, увидите отдельный fe80 :: route для каждого интерфейса, например для lo0 и en1. Windows (по крайней мере, XP) этого не делает. Поскольку OS X имеет несколько маршрутов к одному и тому же префиксу, вы должны использовать индекс зоны направить движение в нужном направлении:
$ telnet -6 fe80::…%en1 80
Интерфейс может иметь и обычно имеет несколько адресов IPv6. Локальный для канала адрес автоматически создается из диапазона fe80 :: / 16 и не маршрутизируется (соединение точка-точка). Так как Джеральд Комбс упоминает, вам нужно будет указать индекс зоны, если вы не можете указать, какой интерфейс использовать.
Для регулярного использования и соединений за пределами локальной ссылки вам необходимо добавить в интерфейс маршрутизируемые адреса. Это можно сделать, получив собственный диапазон IPv6 от вашего интернет-провайдера (или от провайдера туннелей, например SixXS или he.net), и распространив их на ваши устройства через Router Advertisement, DHCPv6 или вручную.
Если вы просто тестируете, вы также можете использовать специальный диапазон IP-адресов "Unique Unicast" fc00 :: / 7, который следует использовать для этого в соответствии с RFC4193:
В этом документе определяется формат одноадресного адреса IPv6, который является глобально уникальным и предназначен для локальной связи, обычно внутри сайта. Ожидается, что эти адреса не будут маршрутизироваться в глобальном Интернете.
Проверять, выписываться этот сайт, который поможет вам начать работу с создания диапазона.
Я полагаю, вы нашли ошибку в ссылке local fe80 :: addresses. У меня это работает с использованием моего публичного адреса, даже если они являются локальными ссылками.
$ telnet -6 2001::xxx:: 80
Trying 2001::xxx::...
Connected to 2001::xxx::
Escape character is '^]'.
HEAD / HTTP/1.0
HTTP/1.1 200 OK
Date: Thu, 30 Dec 2010 01:18:00 GMT
Server: Apache
Last-Modified: Sun, 30 May 2010 20:11:06 GMT
Accept-Ranges: bytes
Content-Length: 44
Connection: close
Content-Type: text/html
Connection closed by foreign host.
Попробуйте получить реальные адреса v6.