Sto solo giocando con Apache e l'ho fatto funzionare, ovvero posso connettermi al server navigando su http://127.0.0.1
e http://192.168.1.5
NON sto eseguendo IPv6
Eppure questo è il risultato di netstat
$ sudo service apache2 status
* apache2 is running
$ netstat -an | grep :80
tcp6 0 0 :::80 :::* LISTEN
$ wget 127.0.0.1
--2014-06-26 01:32:15-- http://127.0.0.1/
Connecting to 127.0.0.1:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11510 (11K) [text/html]
Saving to: ‘index.html’
100%[=====================================================================================================>] 11,510 --.-K/s in 0s
2014-06-26 01:32:15 (161 MB/s) - ‘index.html’ saved [11510/11510]
Mi aspettavo di vederlo in ascolto su un normale TCP, cosa che chiaramente fa!?
Modifica:
$ netstat -a | grep LISTEN
tcp 0 0 localhost:ipp *:* LISTEN
tcp 0 0 localhost:mysql *:* LISTEN
tcp6 0 0 ip6-localhost:ipp [::]:* LISTEN
tcp6 0 0 [::]:https [::]:* LISTEN
tcp6 0 0 [::]:http [::]:* LISTEN
Modifica2:
Perché il voto negativo? Cosa mi sto perdendo qualcuno può elaborare?
Risposta accettata:
TL;DR
Apache lo fa appaiono nel tuo netstat
output, e è in esecuzione. Ecco perché il tuo wget
chiamata funziona. Tuttavia, è legato al tuo indirizzo IPv6 anziché a quello IPv4. La mappatura degli indirizzi gestisce la traduzione quando necessario.
Cercando i documenti
C'è ovviamente qualche meccanismo di fallback IPv6-IPv4 qui. In effetti, non utilizzo ancora IPv6 sulla mia rete locale :
$ netstat -tunla | grep LISTEN | grep 80
tcp6 0 0 :::80 :::* LISTEN
È importante notare che, indipendentemente da come si indirizza la macchina, alla fine è sempre lo stesso servizio e la stessa porta. Il resto dipende principalmente dal tuo browser e dai servizi di risoluzione DNS. Tuttavia, per ulteriori informazioni su come Apache gestisce questo, potresti voler dare un'occhiata alla loro documentazione :
Un fattore di complicazione per gli amministratori di Apache è se un socket IPv6 può gestire sia le connessioni IPv4 che le connessioni IPv6. La gestione delle connessioni IPv4 con un socket IPv6 utilizza indirizzi IPv6 mappati IPv4, che sono consentiti per impostazione predefinita sulla maggior parte delle piattaforme, ma non sono consentiti per impostazione predefinita su FreeBSD, NetBSD e OpenBSD, al fine di soddisfare la politica a livello di sistema su quelle piattaforme. Sui sistemi in cui non è consentito per impostazione predefinita, uno speciale parametro configure può modificare questo comportamento per Apache.
Fondamentalmente, si tratta di gestire entrambi i socket IPv4 e IPv6 in modo da evitare la maggior parte dei problemi relativi alla compatibilità multipiattaforma e alla gestione dei socket. Come puoi leggere, su piattaforme Linux come Ubuntu, questo problema viene risolto utilizzando indirizzi IPv6 mappati IPv4. La documentazione afferma anche:
Se vuoi che Apache gestisca solo le connessioni IPv4, indipendentemente da ciò che la tua piattaforma e APR supporteranno, specifica un indirizzo IPv4 su tutte le direttive Listen.
Il che darebbe qualcosa del genere in ports.conf
file :
Listen 0.0.0.0:80 # Or...
Listen 127.0.0.1:80 # Or...
Listen 192.0.2.1:80
Risultato in uno dei seguenti netstat
uscite...
$ netstat -tunla | grep LISTEN | grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
$ netstat -tunla | grep LISTEN | grep 80
tcp 0 127.0.0.1:80 127.0.0.1:80 LISTEN
$ netstat -tunla | grep LISTEN | grep 80
tcp 0 192.0.2.1:80 192.0.2.1:80 LISTEN
Un ascoltatore bello, ma non pronto per IPv6. L'impostazione sopra è solitamente impostata in /etc/apache2/ports.conf
(o direttamente in apache2.conf
per le versioni precedenti). Il valore predefinito è Listen 80
, che esegue un automatico vincolante, ovvero conforme alle specifiche IPv6 riportate nella documentazione.