Apache2 为fuser指定IPv6地址

Apache2 为fuser指定IPv6地址,apache2,ipv6,fuser,Apache2,Ipv6,Fuser,使用CentoS 5.5 我有一个Apache2.x服务器运行在端口9999上,我正在尝试使用fuser查找它 我可以使用netstat找到它,即: netstat-an | grep 9999 产出: tcp 0 0 :::9999 :::* LISTEN 问题1:为什么netstat使用IPv6语法显示端口 问题2:我可以使用什么fuser命令来查找服务器的pid?以下工作均未

使用CentoS 5.5

我有一个Apache2.x服务器运行在端口9999上,我正在尝试使用fuser查找它

我可以使用netstat找到它,即:

netstat-an | grep 9999

产出:

tcp        0      0 :::9999                     :::*                        LISTEN  
问题1:为什么netstat使用IPv6语法显示端口

问题2:我可以使用什么fuser命令来查找服务器的pid?以下工作均未完成:

定影器-n tcp:::9999

fuser-n tcp 9999

定影器-4-n tcp 9999

定影器-6-n tcp 9999

定影器-6-n tcp:::9999


谢谢

为什么它要监听IPv6?在Linux上,默认情况下,绑定到
[::]
不仅会绑定到IPv6,还会绑定到与IPv4兼容的地址。IPv6中的
::ffff:0.0.0.0/96
空间用于IPv4兼容的连接

软件这样做的优点是它只需要绑定到一个套接字。它使编码稍微简单一些

并非所有发行版或操作系统都这样做。例如,Windows要求您显式绑定到
[::]
0.0.0
以支持IPv6或IPv4。在Linux上,如果将
net.ipv6.bindv6only
sysctl设置为
1
(就像在Debian上一样,但不是大多数其他发行版,包括CentOS或Ubuntu),则需要显式绑定到
[:]
0.0.0
,以支持这两个版本

至于如何在
fuser
中查找它,请按如下方式操作:

# fuser 80/tcp
80/tcp:               3052  3143  3144  3146  3147  3148
或显示绑定到端口的进程:

# fuser -v 80/tcp
                     USER        PID ACCESS COMMAND
80/tcp:              root       3052 F.... apache2
                     www-data   3143 F.... apache2
                     www-data   3144 F.... apache2
                     www-data   3146 F.... apache2
                     www-data   3147 F.... apache2
                     www-data   3148 F.... apache2

其中一个问题是禁用ipv6:

添加到/etc/modprobe.conf:

别名net-pf-10关闭


我认为fuser不喜欢ipv6。

我有一个进程监听TCP端口9999,而“fuser-v 9999/TCP”对我来说很有用。还要确保您以root用户身份运行它(您是否注意到我在上面的shell提示符中使用了#而不是$)?听起来fuser没有正确编译。也就是说,它应该使用--enable-ipv6作为参数来编译。/configure。