如果运行像ss -tunlp
(或netstat -tunlp
)这样的程序,就会得到一个监听端口的列表。
标准格式应该是:
,例如。127.0.0.3:5000
。
但你也可以看到0.0.0.0:
和[::]:
。这两个是什么意思?
特别是,如果您看到[::]:22
、0.0.0.0:22
或*:22
,这是否意味着任何人都可以进入该机器?
发布于 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的套接字:
tcp LISTEN 0 1 *:8080 *:* users:(("nc",pid=317808,fd=3))
$ nc -4 localhost -zv
Connection to localhost 8080 port [tcp/http-alt] succeeded!
但是,将net.ipv6.bindv6only
设置为1 (sysctl -w net.ipv6.bindv6only=1
,nc -kl6 :: 8080
只接受IPv6:
tcp LISTEN 0 1 [::]:8080 [::]:* users:(("nc",pid=318444,fd=3))
我们得到了
$ 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!
https://askubuntu.com/questions/1370548
复制相似问题