7

В обычной сети IPv4 я могу зайти в любой браузер, такой как Firefox, и просмотреть сервер по адресу IPv4, не размещенному на порте 80:

http://192.168.42.6:8080/

Это обращается к серверу через порт 8080 на 192.168.42.6 . Однако, если я попробую это с IPv6 IP, мне не повезет. Это пытается получить доступ к порту 8080 на fe80::520:ff0f:ece0:1 :

http://[fe80::520:ff0f:ece0:1]:8080/

Firefox автоматически "исправит" этот URL к:

http://[www.fe80::520:ff0f:ece0:1.com]:8080/

что не помогает мне получить к нему доступ вообще. Так что либо я делаю что-то действительно неправильное, либо что-то действительно не так с IPv6. Не смог найти ничего, что хотя бы отдаленно помогло в интернете. (И да, существует сервер, работающий на IPv6, о котором идет речь.)

1 ответ1

5

Прежде всего: я не эксперт по IPv6.

Если вы не можете добавить DNS-имя (или хотите убедиться, что IPv6 используется 1), то почему бы не использовать реальный адрес, а не локальный канал fe80 ? На Mac с OS X и в Windows XP Home edition это (с фактическим IPv6-адресом 2) прекрасно работает во всех браузерах:

http://[2001:db8::216:cbff:xx:xx]:8080/

(Обратите внимание, что некоторые браузеры не используют префикс http:// для адресов IPv6 автоматически. Добавление фиктивного имени в файл хоста только для адреса IPv6 делает жизнь еще проще.)

Для адресов fe80 , вероятно, проблемы возникают не только с номером порта; при использовании порта 80 по умолчанию вы, вероятно, не сможете подключиться, если только вы не укажете индекс зоны. (Таким образом: исходящий интерфейс, который должен устанавливать соединение, например, проводной Ethernet или беспроводной, который может отличаться на каждом используемом компьютере.)

В Windows XP Home edition, как с проводным Ethernet, так и с беспроводным (последний неактивен), в Firefox 3.5 и 3.6 у меня хорошо работает следующее. Здесь 4 - мой индекс сетевого интерфейса 3:

http://[fe80::216:cbff:xx:xx%4]/
http://[fe80::216:cbff:xx:xx%4]:8080/

В Internet Explorer 8 символ процента должен быть в процентах закодирован в %25:

http://[fe80::216:cbff:xx:xx%254]:8080/

(Для меня это не работает без %4 или %254 ; если это происходит в других установках, то, возможно, Windows или IE предпочитают внешние подключения, и эта установка имеет только один сетевой интерфейс?)

На Mac следующее прекрасно работает в Firefox:

http://[fe80::216:cbff:xx:xx%en0]:8080/

Указание индекса зоны с использованием нотации процентов проблематично, учитывая конфликт с нотациями URL 4. Я не мог заставить вышеописанное работать в Chrome 8 и 9 на Windows XP, а также в Safari или Chrome на Mac.

На Mac вместо синтаксиса % вы можете (ab) использовать индекс области (2-е слово или 3-й и 4-й байты) для указания индекса сетевого интерфейса. Вроде fe80:0004 отлично работает во всех моих браузерах:

http://[fe80:4::216:cbff:xx:xx]/
http://[fe80:4::216:cbff:xx:xx]:8080/

Однако обратите внимание, что я сомневаюсь, что это официально поддерживается, поскольку это не работает на моей Windows XP, и в некоторых документах утверждается, что вместо них всегда должны использоваться альтернативы. Подобно:

ping6 -I en0 fe80::216:cbff:xx:xx  (en0 = wired ethernet on my Mac)
ping6 fe80::216:cbff:xx:xx%en1     (en1 = wireless)

...скорее, чем:

ping6 fe80:4::216:cbff:xx:xx
ping6 fe80:6::216:cbff:xx:xx

Последнее замечание: можно обмануть, используя :: или ::ffff: последующим IPv4-адресом, как указано в RFC 4291. Но на самом деле это не использует IPv6, хотя на моем Mac он дает ответ:

http://[::ffff:192.168.178.25]:8080/

Это также может использовать шестнадцатеричное обозначение, и некоторые браузеры переписывают его автоматически:

http://[::ffff:c0a8:b219]:8080/

Но не смотря ни на что: это использует соединение IPv4 на моих Mac. На моих Маках [::192.168.178.25] не работает. Я не мог заставить любую форму работать на Windows XP.


1 Некоторые браузеры предпочитают IPv4, а не IPv6. Смотрите test-ipv6.com. Это также зависит от платформы.
2 В IPv6 веб-серверы могут видеть MAC-адрес вашего компьютера, 216:cbff:xx:xx в этих примерах. Я бы предпочел не публиковать этот супер cookie в сети. См. Также Как избежать раскрытия моего MAC-адреса при использовании IPv6?
3 На Mac: найдите значение для scopeid в выходных данных ifconfig . В Windows: посмотрите значение Idx в выводе netsh interface ipv6 show interface . Я видел это изменение числа после перезагрузок!
4 Кажется, это когда-то привело к RFC, который так и не вышел из проекта. В этом проекте предлагается вместо этого использовать символ плюс, но это не работает и на моих компьютерах Mac или Windows XP.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .