使用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
谢谢!
答案 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。