httpd 443端口为什么只监听在tcp6上


https://segmentfault.com/q/1010000007087853/a-1020000007089455


系统redhat7,httpd已经启动

[root@rhcsa conf.d]# netstat -tnpl | grep 443
tcp6       0      0 :::443            :::*          LISTEN      1229/httpd

为什么如上命令只显示tcp6,而没有tcp ?

==============================================

回答

监听了tcp6后,tcp也可以用的。

虽然这个只显示了IPv6的端口监听,但并不代表只接受IPv6的连接,实际上,apache会以mapped address (::FFFF:a.b.c.d) 方式来接受IPv4的连接。除了少部分平台上,例如FreeBSD,NetBSD,OpenBSD之外, Apache在编译时,默认启用了 --enable-v4-mapped 选项。所以,Apache会同时接受IPv6和IPv4的连接请求。
除非是 IPV6_V6ONLY 模式开启,才需要两个不同的socket来分别监听IPv6和IPv4.IPV6_V6ONLY模式可以通过 sysctl net.ipv6.bindv6only 来控制,默认是关闭的。如果你实在愿意在netstat中只看到IPv4端口的监听,那么,你可以修apachezhttp.conf 中,将
Listen 80
修改为
Listen 0.0.0.0:80

具体信息,请参考 http://httpd.apache.org/docs/...


原文地址:https://www.cnblogs.com/ztguang/p/12644880.html