2015-08-13 42 views
16

[Ho segnalato questo problema da eliminare dal moderatore finché non avrò risposta alla mia domanda this]Calling IPV6 IP utilizzando l'interfaccia WebSocket

Il mio cliente javascript è lavorando bene quando si parla di node.js (su Ubuntu, altro here) server tramite interfaccia WebSocket con indirizzo IP IPV4.

Anche se il mio provider di hosting è pronto ad assegnarmi IPV4, è preferibile utilizzare IPV6 poiché ora è disponibile un'offerta limitata di IPV4.

Quando si utilizza l'IP IPV6 sto ottenendo questo errore:

WebSocket connection to 'ws://[2600:3c00::f03c:91ff:fe73:2b08]:31333/' failed: Error in connection establishment: net::ERR_ADDRESS_UNREACHABLE

Ho controllato che la porta 31333 è infatti aperta con lo strumento: http://www.subnetonline.com/pages/ipv6-network-tools/online-ipv6-port-scanner.php

Ho anche provato la soluzione come in IPv6 address giveing syntax error in internet explorer-10 websocket - ovvero: 2600-3c00-0-0-f03c-91ff-fe73-2b08.ipv6-literal.net

Ho eseguito questo client ed è in grado di connettersi al server quando entrambi sono in esecuzione su remoto Server basato su 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); 
}); 

Tuttavia quando ho eseguito questo stesso client dalla mia casa di Windows 7 mentre il server è un'Ubuntu remota, non è in grado di connettersi:

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

Ho anche eseguire questo codice in 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..."); 
}; 

Ma ottengo lo stesso errore:

WebSocket connection to 'ws://[2600:3c00::f03c:91ff:fe73:2b08]:31333/' failed: Error in connection establishment: net::ERR_ADDRESS_UNREACHABLE websocket.html:37 Event

Quale potrebbe essere il problema?

PS: in questo momento ho smesso il server sulla porta 31333.

+0

Hai controllato se il firewall sta bloccando l'accesso? Per esempio. se si utilizza l'IP per localhost * e * ascolta sul tuo indirizzo IPv6 locale, quindi la connessione a 'ws: // [:: 1]: 31333' sembra funzionare come previsto (Chrome 44.0.2403.125, Linux). –

+0

Al momento il server client è in grado di comunicare quando si trova sullo stesso server. – user5858

+1

La connessione di rete (locale) supporta IPv6? –

risposta

1

IPv6 non è abilitato sul Realtek PCIe GBE controller famiglia. Se lo fosse, ci sarebbe una riga che dice "Indirizzo IPv6 locale di collegamento" nel risultato ipconfig.

Passare al pannello di controllo> Rete> Modifica impostazioni scheda> Fare clic con il pulsante destro del mouse sull'adattatore> Proprietà. Controlla IPv6 on.

+0

Si è tentato di inviare questa risposta al superutente, ma non è stato possibile perché la domanda è contrassegnata come duplicata lì. –

+0

I risultati 'ipconfig' pubblicati mostrano che IPv6 non è configurato sul sistema. –

0

IPv6 deve essere abilitato sul sistema e ogni router tra esso e l'ISP e l'ISP deve essere pronto per IPv6 e fornirlo all'utente finale. La ragione per cui lo nslookup funziona è che sta solo restituendo i record AAAA, non effettivamente connessi tramite IPv6. IPv4 non può comunicare direttamente con IPv6 o viceversa. Non è possibile eseguire il ping di un host IPv6 con un host IPv4.