根据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
谢谢。
简而言之,它们是两个不同的接口(192.168.1.97 与 127.0.0.1),并且可能应用了不同的防火墙规则和/或服务侦听。在同一台机器上意味着相对较少。
不,侦听外部接口上的端口的服务不一定也侦听
localhost
.你可以用类似的东西来测试它
然后
nmap
针对localhost
,然后针对外部 IP 地址运行。因为为了提高安全性,许多服务默认配置为仅侦听 127.0.0.1(和/或 IPv6 等效 ::1)
不
通常,服务可以创建一个侦听套接字来侦听。
根据RFC1122,127类型的地址仅供内部使用:
这意味着这些服务正在本地侦听。这
192.168.1.97
是您面向公众的地址,这就是路由器和其他计算机认识您的方式。127.0.0.1/8在某种意义上是一个网络的“模拟”。您可以使用它进行测试,您可以在其上运行本地服务并在它们之间交换数据包 - 与您对实际互联网资源所做的事情基本相同。事实上,这就是Web 开发人员所做的:他们设置本地环境并在本地运行 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。
也可以看看