Mis*_*iev 27 linux debian ipv6 netstat ipv4
我有一台电脑:
Linux superhost 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
它在所有接口上的端口 80 上运行 Apache,并且它没有出现在 中netstat -planA inet,但意外地可以在 中找到netstat -planA inet6:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp6 0 0 :::5672 :::* LISTEN 2402/beam.smp
tcp6 0 0 :::111 :::* LISTEN 1825/rpcbind
tcp6 0 0 :::9200 :::* LISTEN 2235/java
tcp6 0 0 :::80 :::* LISTEN 2533/apache2
tcp6 0 0 :::34611 :::* LISTEN 1856/rpc.statd
tcp6 0 0 :::9300 :::* LISTEN 2235/java
...
tcp6 0 0 10.0.176.93:80 10.0.76.98:53704 TIME_WAIT -
tcp6 0 0 10.0.176.93:80 10.0.76.98:53700 TIME_WAIT -
Run Code Online (Sandbox Code Playgroud)
如上所示,我可以通过 TCP4 很好地访问它。但是,即使是这些连接也列在 下tcp6。为什么?
beg*_*ner 20
默认情况下,如果您没有为 ApacheListen参数指定地址,它将使用IPv4-mapped IPv6地址处理 ipv6 地址。你可以看看Apache ipv6
的输出netstat并不意味着 Apache 没有监听 IPv4 地址。这是一个IPv4-mapped IPv6地址。
phe*_*mer 18
这是因为所有 IPv4 地址也是 IPv6 地址。留出一小部分 IPv6 地址用于 IPv4 地址的一对一映射。例如,IPv4 地址192.0.2.128可通过 IPv6 地址访问::ffff:192.0.2.128。这样做是为了任何仅支持 IPv6 的应用程序仍然可以侦听 IPv4 地址。请注意,这不能用于 IPv6 地址(非映射)与 IPv4 地址通信而不涉及其他事情,因为 IPv4 不知道如何处理 IPv6 地址(您可以使用 NAT 或其他解决方案尽管)。
由于所有 IPv4 地址都以 IPv6 表示,因此在要求netstat列出使用 IPv6 的应用程序时,您也将获得 IPv4。
它可以表示10.0.176.93为::ffff:10.0.176.93,甚至可以表示::ffff:a00:b05d,但应用程序开发人员选择将其显示为常规的点分表示法 IPv4 地址。
| 归档时间: |
|
| 查看次数: |
46930 次 |
| 最近记录: |