为热熔器指定IPv6地址

时间:2011-03-31 21:50:09

标签: apache2 ipv6 fuser

使用CentoS 5.5。

我有一个在端口9999上运行的Apache 2.x服务器,我试图使用热熔器找到它。

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

netstat -an | grep 9999

输出:

tcp        0      0 :::9999                     :::*                        LISTEN  

问题1:为什么netstat使用IPv6语法显示端口?

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

fuser -n tcp ::: 9999

fuser -n tcp 9999

fuser -4 -n tcp 9999

fuser -6 -n tcp 9999

fuser -6 -n tcp ::: 9999

谢谢!

2 个答案:

答案 0 :(得分:0)

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

软件执行此操作的优点是它只需要绑定到一个套接字。它使编码稍微简单。

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

至于如何在0.0.0.0中查找,请按照以下方式进行查找:

fuser

或者显示绑定到端口的进程:

# fuser 80/tcp
80/tcp:               3052  3143  3144  3146  3147  3148

答案 1 :(得分:0)

一个是修复是禁用ipv6:

添加到/etc/modprobe.conf:

alias net-pf-10 off

我认为fuser不喜欢ipv6。