根据 netstat,HTTPD 在 IPv6 中侦听,但在 IPv4 中可达

Ant*_* M. 9 httpd ipv6 netstat ipv4

使用 Openstack,我在我的服务器 (HTTPS) 上托管了一个 Web GUI(地平线)。

当我做 a 时netstat -lt | grep https,我有:

tcp6       0      0 [::]:https              [::]:*                  LISTEN
Run Code Online (Sandbox Code Playgroud)

随着lsof -i :443,我有:

COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
httpd    5250   root    6u  IPv6  27390      0t0  TCP *:https (LISTEN)
httpd   17675 apache    6u  IPv6  27390      0t0  TCP *:https (LISTEN)
httpd   17676 apache    6u  IPv6  27390      0t0  TCP *:https (LISTEN)
httpd   17677 apache    6u  IPv6  27390      0t0  TCP *:https (LISTEN)
httpd   17678 apache    6u  IPv6  27390      0t0  TCP *:https (LISTEN)
httpd   17679 apache    6u  IPv6  27390      0t0  TCP *:https (LISTEN)
httpd   17680 apache    6u  IPv6  27390      0t0  TCP *:https (LISTEN)
httpd   17681 apache    6u  IPv6  27390      0t0  TCP *:https (LISTEN)
httpd   17682 apache    6u  IPv6  27390      0t0  TCP *:https (LISTEN)
httpd   27444 apache    6u  IPv6  27390      0t0  TCP *:https (LISTEN)
Run Code Online (Sandbox Code Playgroud)

但是,在 IPv4 中可以访问服务器。对我来说没问题,但我想知道为什么没有像这样的 netstat 条目:

tcp       0      0 0.0.0.0:https              0.0.0.0:*                  LISTEN
Run Code Online (Sandbox Code Playgroud)

Eig*_*ony 19

我相信在 Linux 上,绑定到 [::] (IPv6) 会导致同时接收 IPv6 和 IPv4 流量(默认情况下)。我相信这些被称为IPv4-mapped IPv6 地址netstat只显示 IPv6 条目,因为技术上只有一个绑定,恰好支持 IPv4 和 IPv6。

Apache 站点上有一些信息。

软件可能不使用 IPv4 映射的 IPv6 地址并分别绑定到 0.0.0.0 和 [::],因此在 中出现两次netstat,但这是开发人员的设计选择。

  • 投反对票是不合适的。这是正确答案。软件可以绑定到 IPv6 上的通配符地址,并在其上接受 IPv4 和 IPv6 连接。在 Linux 上,这甚至是默认设置。您示例中的 SSH 软件选择不这样做。 (7认同)