Вызов IPV6 IP с использованием интерфейса WebSocket
[ Я отметил, что этот вопрос должен быть удален модератором, пока я не получу ответ на свой этот вопрос]
Мой клиент javascript отлично работает при разговоре с node.js(на Ubuntu, более здесь) сервером через интерфейс WebSocket с IP-адресом IPV4.
Несмотря на то, что мой провайдер хостинга готов выделить мне IPV4, позвольте мне вместо этого использовать IPV6, поскольку сейчас есть ограниченная поставка IPV4.
При использовании IPV6 IP я получаю эту ошибку:
Соединение с WebSocket с 'ws://[2600: 3c00:: f03c: 91ff: fe73: 2b08]: 31333/' не удалось: ошибка при установлении соединения: нетто:: ERR_ADDRESS_UNREACHABLE
Я проверил, что порт 31333 действительно открыт с помощью инструмента: http://www.subnetonline.com/pages/ipv6-network-tools/online-ipv6-port-scanner.php
Я даже пробовал решение, как в адресе IPv6, дающем синтаксическую ошибку в веб-обозревателе Internet Explorer-10 - то есть: 2600-3c00-0-0-f03c -91ff-fe73-2b08.ipv6-literal.net
Я запустил этот клиент и могу подключиться к серверу, когда оба они работают на удаленном сервере на базе Ubuntu:
var WebSocket = require('ws')
, ws = new WebSocket('ws://[2600:3c00::f03c:91ff:fe73:2b08]:31333');
ws.on('open', function() {
ws.send('something');
});
ws.on('message', function(message) {
console.log('received: %s', message);
});
Однако, когда я запускаю этот же клиент из своей домашней Windows 7, пока сервер удаленный Ubuntu один, он не может подключиться:
> $ node c2.js events.js:85
> throw er; // Unhandled 'error' event
> ^ Error: connect ENETUNREACH
> at exports._errnoException (util.js:746:11)
> at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1010:19)
Я даже запускаю этот код в Google Chrome:
var ws = new WebSocket("ws://[2600:3c00::f03c:91ff:fe73:2b08]:31333");
ws.onerror = function(err)
{
console.log(err);
alert("Connection is error...");
};
Но я получаю ту же ошибку:
Соединение с WebSocket с 'ws://[2600: 3c00:: f03c: 91ff: fe73: 2b08]: 31333/' не удалось: ошибка при установлении соединения: net:: ERR_ADDRESS_UNREACHABLE websocket.html: 37 Событие
В чем может быть проблема?
PS: на данный момент я остановил сервер на порту 31333.
Ответы
Ответ 1
IPv6 не включен на вашем семейном контроллере Realtek PCIe GBE. Если бы это было так, то была бы строка, указывающая "Link-local IPv6 Address" в результате ipconfig.
Перейдите на панель управления > Сеть > Изменить настройки адаптерa > Щелкните правой кнопкой мыши на адаптере > Свойства. Проверьте IPv6.
Ответ 2
В системе должен быть включен IPv6, и каждый маршрутизатор между ним и интернет-провайдером и провайдер должны быть готовы к IPv6 и предоставлять его конечному пользователю. Причина nslookup
заключается в том, что она просто возвращает записи AAAA, а не фактически подключается через IPv6. IPv4 не может напрямую взаимодействовать с IPv6 или наоборот. Вы не можете выполнить ping хост IPv6 с хостом IPv4.