根据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?
不
一般来说,服务可以创建一个监听套接字来监听。
- 特定 IP(例如侦听套接字)将仅接受发往该特定 IP 的流量。
- 0.0.0.0 ,这将接受分配给该计算机的所有 IPv4 IP 的流量。
- :: 这将接受分配给该计算机的所有 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。
也可以看看