当我这样做时,netstat -ntlp
会有一个名为Local Address
:
- 有时它会输出 IP 地址为
0.0.0.0:7180
- 有时
127.0.0.1:9001
这两种符号的含义是什么?
特定 IP 地址是否充当传入连接的过滤器?例如,127.0.0.1:9001
它只接受来自端口 9001 上的本地主机的连接?
答案1
我想你已经回答了你自己的问题。
例如,apache
它有Listen
一个选项告诉它要侦听哪个地址和端口。根据设置方式,apache
将侦听任何 IP 地址、特定地址:-
Listen *:80
Listen 0.0.0.0:80
Listen 127.0.0.1:80
Listen 192.168.0.5:80
上述选项显示为:-
:::80
0.0.0.0:80
127.0.0.1:80
192.168.0.5:80
并翻译为:-
- 侦听任何 IP 地址(IPv4 或 IPv6)
- 侦听该服务器上的任何 IPv4 地址
- 仅在 IPv4 本地主机上侦听
- 监听外部 IPv4 地址 192.68.0.5
localhost
如果您不希望外部任何人访问它,您可以将您的服务配置为仅侦听该接口。例如,如果您正在运行 LAMP 服务器,您将apache
侦听所有 IP 地址(以便您的用户可以访问它),而mysql
数据库可以配置为只能从localhost
(使用它的bind=127.0.0.1
指令)访问。这样,php
在同一服务器上运行的用户将能够访问数据库,而外部(和不受信任的)用户将无法访问它。
答案2
127.0.0.1 和 0.0.0.0
127.0.0.1
表示本地接口或环回地址。只能从您的本地主机访问。
0.0.0.0
是每个接口的通配符地址。
Onnetstat -ntlp
Local Address
表示“打印活动侦听 tcp 连接,将 IP 显示为数值,并显示使用此连接的程序的 PID 和名称。”
举例说明差异
例如,如果我有
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN 1189/prog1
tcp 0 0 0.0.0.0:6666 0.0.0.0:* LISTEN 1188/prog2
这意味着:
prog1
具有 PID 的服务使用 protocol1189
侦听端口。它只能从您的本地主机访问。53
tcp
prog2
具有 PID 的服务使用 protocol1189
侦听端口。允许该计算机所属的所有网络上的任何其他计算机访问此端口。6666
tcp
答案3
0.0.0.0
表示该进程绑定到所有接口。
127.0.0.1
表示进程仅绑定到127.0.0.1
接口(环回)。
如果您有其他接口,您可能会有x.y.z.a
指示该进程绑定到这些特定接口的条目。
仅当流量到达其绑定的接口时才会通知进程,因此,是的,它是一种过滤器,尽管通常不会用这些术语进行描述。
答案4
正如您所说,本地主机的 IP 只接受本地这些端口的连接,而 IP0.0.0.0指对所有人开放的端口。
例如
当地的
127.0.0.1:8307 VMWARE
127.0.0.1:25 MASTER
致所有人
0.0.0.0:80 HTTP
0.0.0.0:443 SKYPE