Как я могу подключиться к IPv6-хосту с помощью Mac OS X?

11

Я тестирую 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

И я знаю, что веб-сервер работает, потому что я могу подключиться к нему из Windows:

C:\> telnet fe80::… 80  # this works

Я подозреваю, что есть какой-то флаг конфигурации или аргумент командной строки, который мне не хватает.

Nate
источник
Хорошо, я укушу Почему бы просто не использовать IPv4? В этом отношении, почему Telnet даже включен?
Джон Гарденье
1
@ Джон Нейт пытается подключиться к порту 80 по telnet. Ваш веб-сервер станет одиноким и увядшим, если вы не будете периодически с ним разговаривать.
Джеральд Комбс
2
@John Gardeniers: я экспериментирую с IPv6, так как ожидаю, что мне нужно будет начать внедрять его в ближайшие 12-18 месяцев. Кроме того, как говорит Джеральд, telnet клиент - это полезный инструмент для тестирования основных подключений к веб-серверам или серверам электронной почты. Я не видел telnet-сервер по крайней мере 10 лет.
Nate
@Gerald и @Nate, я видел «Как я могу telnet к хосту IPv6», который мне говорит протокол telnet, и в этот момент я всегда дрожу и перестаю читать. Конечно, если бы заголовок был чем-то вроде «Как мне использовать программу telnet для подключения ...», я бы прочитал весь вопрос. Сожалею.
Джон Гарденье

Ответы:

11

Префикс fe80 :: / 16 предназначен для локальных адресов ссылок, и они особенные. Попробуйте запустить

netstat -nr

на OS X и

netsh int ipv6 show routes

на винде. В OS X вы, скорее всего, увидите отдельный fe80 :: route для каждого интерфейса, например, для lo0 и en1. Windows (XP, по крайней мере), похоже, не делает этого. Поскольку OS X имеет несколько маршрутов к одному и тому же префиксу, вы должны использовать индекс зоны для направления трафика в правильном направлении:

$ telnet -6 fe80::…%en1 80
Джеральд Комбс
источник
Спасибо, это сработало. И спасибо за объяснение, почему это работает на Windows, но не на OS X.
Нейт,
4

Интерфейс может и обычно будет иметь несколько адресов IPv6. Локальный адрес ссылки создается автоматически из диапазона fe80 :: / 16 и не маршрутизируется (соединение точка-точка). Как упоминает Джеральд Комбс , вам нужно будет указать индекс зоны, если вы не можете указать, какой интерфейс использовать.

Для регулярного использования и подключений за пределами локальной ссылки вам необходимо добавить маршрутизируемые адреса в интерфейс. Это может быть сделано путем получения вашего собственного диапазона IPv6 от вашего интернет-провайдера (или от поставщика туннелей, такого как SixXS или he.net), и распространения их на ваши устройства через объявление маршрутизатора, DHCPv6 или вручную.

Если вы просто тестируете, вы также можете использовать специальный диапазон уникальных IP-адресов fc00 :: / 7, который должен использоваться для этого согласно RFC4193:

Этот документ определяет формат одноадресного адреса IPv6, который является уникальным в глобальном масштабе и предназначен для локальной связи, обычно внутри сайта. Эти адреса не должны быть маршрутизируемыми в глобальной сети Интернет.

Посетите этот сайт , который поможет вам начать с создания диапазона для вас.

Мартейн Хеемельс
источник
Уникальный местный адрес будет моим следующим шагом. Спасибо за отличную ссылку!
Nate
0

Я полагаю, вы нашли ошибку в ссылке local fe80 :: address. Это работает для меня, используя мой публичный адрес, даже если они локальные.

$ 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.

bahamat
источник
1
Локальный адрес ссылки не менее реален , но он может быть менее полезным в зависимости от вашего варианта использования.
Джеральд Комбс
Адрес 2001 :: не локальный. Это маршрутизируемый диапазон, и его не следует путать с локальным резервированием линии fe80 :: / 16. Пожалуйста, не злоупотребляйте этим термином, так как это смущает людей.
Мартин Химельс
Я имел в виду локальную связь, так как физически хост находится в том же домене вещания Ethernet.
Багамат