首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >地址0.0.0.0、[::]和*之间有什么区别?

地址0.0.0.0、[::]和*之间有什么区别?
EN

Ask Ubuntu用户
提问于 2021-10-20 18:04:43
回答 1查看 1.8K关注 0票数 0

如果运行像ss -tunlp (或netstat -tunlp)这样的程序,就会得到一个监听端口的列表。

标准格式应该是:,例如。127.0.0.3:5000

但你也可以看到0.0.0.0:[::]:。这两个是什么意思?

特别是,如果您看到[::]:220.0.0.0:22*:22,这是否意味着任何人都可以进入该机器?

EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2021-10-20 18:35:58

0.0.0.0:是IPv4,[::]:是IPv6,方括号是将地址与端口分开。当它们列在Local Address下时,它们意味着特定进程正在侦听所有本地地址。*:指的是任何地址,包括IPv4和IPv6 (谢谢@raj指出我忽略了标题中的问题,并在评论中填写了答案)。

现在,监听所有接口/地址并不意味着每个人都可以连接到您的计算机。例如,如果它是你的个人电脑,那么它很可能是由路由器屏蔽的,远离可怕的世界。此外,任何防火墙/iptable都将决定哪些数据包将被接受,哪些包将被丢弃。

倾听和可接触是两件不同的事情。

编辑:关于@QianChen关于[::]意味着IPv4连接也被接受的评论,可以使用nc执行一个简单的测试。根据您的nc的版本,您可以指定它是应该使用IPv4、IPv6还是同时使用两者。运行nc -kl6 :: 8080,(my) nc将创建一个同时接受IPv4和IPv6的套接字:

代码语言:javascript
运行
复制
tcp   LISTEN 0       1                    *:8080               *:*     users:(("nc",pid=317808,fd=3))
代码语言:javascript
运行
复制
$ nc -4 localhost -zv
Connection to localhost 8080 port [tcp/http-alt] succeeded!

但是,将net.ipv6.bindv6only设置为1 (sysctl -w net.ipv6.bindv6only=1nc -kl6 :: 8080只接受IPv6:

tcp LISTEN 0 1 [::]:8080 [::]:* users:(("nc",pid=318444,fd=3))

我们得到了

代码语言:javascript
运行
复制
$ nc -4 localhost 8080 -zv
nc: connect to localhost port 8080 (tcp) failed: Connection refused
nc: connect to localhost port 8080 (tcp) failed: Connection refused

$ nc -6 localhost 8080 -zv
Connection to localhost 8080 port [tcp/http-alt] succeeded!
票数 3
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1370548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档