我只是与Apache玩,我把它开始工作,这是我可以通过浏览连接到服务器http://127.0.0.1和http://192.168.1.5我没有运行IPv6
然而这是 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]
Run Code Online (Sandbox Code Playgroud)
我期待看到它在正常的 TCP 上监听,它显然是这样做的!?
编辑:
$ 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
Run Code Online (Sandbox Code Playgroud)
Edit2: 为什么投反对票?我错过了什么有人可以详细说明吗?
Joh*_*ith 21
Apache确实出现在您的netstat输出中,并且正在运行。这就是为什么你的wget电话有效。但是,它绑定到您的 IPv6 地址而不是您的 IPv4 地址。地址映射在必要时处理转换。
这里显然有一些 IPv6-IPv4 回退机制。事实上,我没有在本地网络上使用 IPv6,但是:
$ netstat -tunla | grep LISTEN | grep 80
tcp6 0 0 :::80 :::* LISTEN
Run Code Online (Sandbox Code Playgroud)
重要的是要注意,无论您如何寻址您的机器,它最终仍然是相同的服务和端口。剩下的主要取决于您的浏览器和 DNS 解析服务。但是,有关 Apache 如何处理此问题的更多信息,您可能需要查看他们的文档:
Apache 管理员的一个复杂因素是 IPv6 套接字是否可以同时处理 IPv4 连接和 IPv6 连接。使用 IPv6 套接字处理 IPv4 连接使用 IPv4 映射的 IPv6 地址,在大多数平台上默认允许,但在 FreeBSD、NetBSD 和 OpenBSD 上默认不允许,以便匹配这些平台上的系统范围策略。在默认情况下不允许的系统上,特殊的配置参数可以更改 Apache 的此行为。
基本上,这是关于处理 IPv4 和 IPv6 套接字的方式,以避免与跨平台兼容性和套接字处理相关的大多数问题。正如您所读到的,在像 Ubuntu 这样的 Linux 平台上,这个问题是使用IPv4 映射的 IPv6 地址解决的。该文件还指出:
如果您希望 Apache 仅处理 IPv4 连接,而不管您的平台和 APR 支持什么,请在所有 Listen 指令中指定 IPv4 地址。
这会在ports.conf文件中给出类似的内容:
Listen 0.0.0.0:80 # Or...
Listen 127.0.0.1:80 # Or...
Listen 192.0.2.1:80
Run Code Online (Sandbox Code Playgroud)
导致以下netstat输出之一...
$ 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
Run Code Online (Sandbox Code Playgroud)
一个漂亮但尚未准备好 IPv6 的侦听器。上述设置通常设置在/etc/apache2/ports.conf(或直接在apache2.conf旧版本中设置)。默认值为Listen 80,它执行自动绑定,即符合文档中给出的 IPv6 规范。