为什么阻塞阀在 Win10 上无法正常工作?

Why a blocking valve, does not work as expected on Win10?

我试图阻止从笔记本电脑外部访问我的 REST 开发 - 应用 Tomcat。我发现有前途的解决方案是 :

<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1"/>

它适用于 Linux:目的是,localhost:8080 访问本地 Tomcat 安装,而任何访问<my-laptop-IP>:8080 来自 Intranet 的任何地方都将被拒绝。

不幸的是,这在我的 Buster 笔记本电脑(Linux VirtualBox 客人)上运行良好,但在我的 Win10 来宾安装或本机 Win10 笔记本电脑:Windows 上的阀门阻止 localhost:8080 访问 Tomcat 也一样,虽然我认为 allow 属性应该允许它。 (意味着我的 REST 开发人员在 Win10 上被那个阀门阻止了。)

我的问题是:为什么上述阀门在 Win10 安装上的表现不如预期?

p.s。我用 tomcat-9 和 tomcat-10.

进行了测试

在大多数现代 OS 中,localhost 首先解析为 IPv6 地址 ::1,然后解析为 IPv6 地址 127.0.0.1

根据您使用的连接器,localhost 的 IPv6 地址可能会以缩写形式 ::1 或完整形式 0:0:0:0:0:0:0:1 出现,因此您的正则表达式应允许这两种表示形式:

<Valve className="org.apache.catalina.valves.RemoteAddrValve"
       allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1"/>