我在 FreeBsd 11 的 5555 端口上运行了一个 ruby webapp。由于某种原因,它在互联网上根本看不到,尽管 ipfw 没有运行。
$ curl -i 12.34.55.66:5555
curl: (7) Failed to connect to 12.34.55.66:5555 port 5555: Connection refused
但是该应用程序可以从该服务器(从本地主机)看到:
curl -i 0.0.0.0:5555
[....returns data]
curl -i 127.0.0.1:5555
[....returns data]
原因何在?
更新:
$ sockstat
USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS
user123 ruby 93839 7 tcp6 ::1:5555 *:*
user123 ruby 93839 8 tcp4 127.0.0.1:5555 *:*
答案1
我不太确定这是否适用于此处,但某些 ruby web 服务器webrick
(例如 Rails 的默认 web 服务器)默认情况下不绑定到您的外部 IP。因此,这可能不是您的防火墙的问题,而只是缺少配置。鉴于 的输出sockstat
,这里可能就是这种情况。对于webrick
,您应该传递-b x.x.x.x
给命令以将服务器绑定到您的外部 IP 地址。