OS X 阻止对本地服务的调用

OS X 阻止对本地服务的调用

使用除 之外的任何方式访问本地服务(例如基于 Web 的 CUPS 配置(端口 631)或 Apache Tomcat(端口 8080))http://localhost:<port>都会失败。但是,使用 OS X 附带的 Apache httpd 执行相同操作却没有问题。这是怎么回事?

http://192.168.1.5:631/ - fails

http://localhost:631/ - works

http://192.168.1.5:8080/ - fails

http://localhost:8080/ - works

http://192.168.1.5:80/ - works!!!

http://localhost:80/ - works

我知道“localhost”使用环回网络接口,而 192.168.1.5 不使用。因此,理论上 OS X 防火墙可能会干扰。但是,日志没有显示丢弃的请求。此外,防火墙关闭时的行为完全相同。

答案1

是的,我不知道端口不一定绑定到任何地址或任何接口,而是绑定到特定地址。

杯子

CUPS 配置默认专门绑定到 localhost。请参阅 /private/etc/cups/cupsd.conf 中的配置:

# Only listen for connections from the local machine.
Listen localhost:631
Listen /private/var/run/cupsd 

如果您在“首选项”->“共享”中启用打印机共享,则 CUPS 也将在本地主机之外可用。

雄猫

我还不知道哪个设置可以让 Tomcat 仅绑定到本地主机。不过,目前我设置了 mod_jk,让 Tomcat 位于 Apache 后面。

答案2

监听端口可以绑定到特定的接口地址,也可以绑定到任意地址。

尝试命令:netstat -anp TCP

(可能略有不同——我现在不在 Mac 前面。您想显示所有监听的 TCP 端口及其数字地址。)

你应该看到类似这样的内容:

TCP 0.0.0.0:80 ...

TCP 127.0.0.1:631 ...

端口号前面带有 0.0.0.0 表示它将接受来自任何地方的连接。如果前面带有 127.0.0.1,则表示它只接受来自环回接口的连接。

相关内容