为什么“nmap 192.168.1.97”返回的服务比“nmap 127.0.0.1”少?

为什么“nmap 192.168.1.97”返回的服务比“nmap 127.0.0.1”少?

根据https://networkengineering.stackexchange.com/a/57909/,发送到 192.168.1.97 的数据包“不会离开主机,而是被视为从网络接收到的数据包,地址为 192.168.1.97”。与发送数据包环回 127.0.0.1 相同。

为什么nmap 127.0.0.1返回的服务比 多nmap 192.168.1.97

是否也一定会nmap 127.0.0.1返回那些由 所返回的服务nmap 192.168.1.97?侦听的服务器是否192.168.1.97也必须侦听127.0.0.1

$ nmap -p0-65535 192.168.1.97

Starting Nmap 7.60 ( https://nmap.org ) at 2019-03-23 19:18 EDT
Nmap scan report for ocean (192.168.1.97)
Host is up (0.00039s latency).
Not shown: 65532 closed ports
PORT      STATE SERVICE
22/tcp    open  ssh
111/tcp   open  rpcbind
3306/tcp  open  mysql
33060/tcp open  mysqlx

Nmap done: 1 IP address (1 host up) scanned in 9.55 seconds

$ nmap -p0-65535 localhost

Starting Nmap 7.60 ( https://nmap.org ) at 2019-03-23 19:18 EDT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00033s latency).
Other addresses for localhost (not scanned):
Not shown: 65529 closed ports
PORT      STATE SERVICE
22/tcp    open  ssh
111/tcp   open  rpcbind
631/tcp   open  ipp
3306/tcp  open  mysql
5432/tcp  open  postgresql
9050/tcp  open  tor-socks
33060/tcp open  mysqlx

Nmap done: 1 IP address (1 host up) scanned in 5.39 seconds

谢谢。

答案1

简而言之,它们是两个不同的接口(192.168.1.97 与 127.0.0.1),并且可能应用不同的防火墙规则和/或服务侦听。在同一台机器上的意义相对较小。

答案2

不,侦听外部接口上的端口的服务不一定也侦听 上的该端口localhost

你可以用类似的东西来测试这个

nc -l external-ip-address port-number

然后nmap针对运行localhost,然后针对外部 IP 地址运行。

答案3

为什么 nmap 127.0.0.1 返回的服务比 nmap 192.168.1.97 更多?

因为为了提高安全性,许多服务默认配置为仅侦听 127.0.0.1(和/或 IPv6 等效 ::1)

侦听 192.168.1.97 的服务器是否也一定侦听 127.0.0.1?

一般来说,服务可以创建一个监听套接字来监听。

  1. 特定 IP(例如侦听套接字)将仅接受发往该特定 IP 的流量。
  2. 0.0.0.0 ,这将接受分配给该计算机的所有 IPv4 IP 的流量。
  3. :: 这将接受分配给该计算机的所有 IPv6 IP 的流量。它可能接受也可能不接受发往机器上 IPv4 IP 的流量,具体取决于特定操作系统、系统范围配置和套接字特定选项。

答案4

127 类型的地址仅供内部使用,根据RFC1122:

内部主机环回地址。这种形式的地址不得出现在主机外部。

这意味着这些服务正在本地监听。这192.168.1.97是您的公开地址,路由器和其他计算机就是通过这个地址认识您的。127.0.0.1/8 在某种意义上是网络的“模拟”。您可以用它进行测试,可以在其上运行本地服务并在它们之间交换数据包 - 基本上与实际互联网资源相同。事实上,这就是网络开发人员做:他们设置本地环境并在本地运行 XAMP 或 LAMP 堆栈,然后再转移到生产环境,此时精美的产品实际上将面向互联网。

现在,您应该不会在面向公共的接口(如 eth0 或 wlan0)上收到来自 127.xxx 类型地址的数据包。如果发生这种情况,这称为火星小包,并且很可能有人正在尝试攻击您的主机或网络。

从某种意义上说,您可以将其类比为路由器和计算机。在 LAN 上,您的路由器有 192.168.1.0 地址,但在互联网上它被称为 68.125.xx.yy(免责声明:随机示例,不是此处的实际 IP 地址)。路由器可能仅向互联网公开端口 53 ( DNS ),但在内部您可以使用端口 80 ( HTTP 控制面板 ) 和 53 。与您的计算机的想法相同。

当然,服务必须配置为仅侦听公共或本地接口。例如,Redis服务器出于安全原因,预配置为仅侦听 127.0.0.1。

也可以看看

相关内容