Právě si hraji s Apache a mám to zprovozněno, to znamená, že se mohu připojit k serveru procházením na http://127.0.0.1
a http://192.168.1.5
NEPOUŽÍVÁM IPv6
Přesto je to výsledek 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]
Očekával jsem, že bude naslouchat na běžném TCP, což jasně dělá!?
Upravit:
$ 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
Úprava2:
Proč hlasovat proti? Co mi chybí, může to někdo upřesnit?
Přijatá odpověď:
TL;DR
Apache dělá zobrazí se ve vašem netstat
výstup a je běh. Proto váš wget
volání funguje. Je však vázán na vaši adresu IPv6 namísto vaší adresy IPv4. Mapování adres se v případě potřeby postará o překlad.
Přejít na dokumenty
Zjevně zde existuje nějaký záložní mechanismus IPv6-IPv4. Ve skutečnosti zatím IPv6 ve své místní síti nepoužívám:
$ netstat -tunla | grep LISTEN | grep 80
tcp6 0 0 :::80 :::* LISTEN
Je důležité si uvědomit, že bez ohledu na to, jak svůj stroj oslovíte, je to nakonec stále stejná služba a port. Zbytek je především na vašem prohlížeči a službách rozlišení DNS. Pro více informací o tom, jak s tím Apache nakládá, se však možná budete chtít podívat do jejich dokumentace:
Jedním komplikujícím faktorem pro administrátory Apache je, zda soket IPv6 dokáže zpracovat jak připojení IPv4, tak připojení IPv6. Zpracování připojení IPv4 pomocí soketu IPv6 používá adresy IPv6 mapované IPv4, které jsou ve výchozím nastavení povoleny na většině platforem, ale ve výchozím nastavení jsou zakázány na FreeBSD, NetBSD a OpenBSD, aby odpovídaly celosystémové politice na těchto platformách. Na systémech, kde je to ve výchozím nastavení zakázáno, může toto chování pro Apache změnit speciální konfigurační parametr.
V zásadě se jedná o manipulaci se sokety IPv4 i IPv6 způsobem, který zabrání většině problémů souvisejících s kompatibilitou mezi platformami a manipulací se sokety. Jak si můžete přečíst, na platformách Linux, jako je Ubuntu, je tento problém vyřešen pomocí IPv6 mapovaných adres IPv4. V dokumentaci je také uvedeno:
Pokud chcete, aby Apache zpracovával pouze připojení IPv4, bez ohledu na to, co bude vaše platforma a APR podporovat, zadejte adresu IPv4 ve všech direktivách Listen.
Což by v ports.conf
dalo něco takového soubor :
Listen 0.0.0.0:80 # Or...
Listen 127.0.0.1:80 # Or...
Listen 192.0.2.1:80
Výsledkem je jeden z následujících netstat
výstupy…
$ 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
Krásný, ale IPv6 nepřipravený posluchač. Výše uvedené nastavení se obvykle nastavuje v /etc/apache2/ports.conf
(nebo přímo v apache2.conf
pro starší verze). Výchozí hodnota je Listen 80
, která provádí automatické vázání, tj. vyhovující specifikacím IPv6 uvedeným v dokumentaci.