Nginx/Apache 无法从外部访问,SSH 可以访问。防火墙已禁用

Nginx/Apache 无法从外部访问,SSH 可以访问。防火墙已禁用

我已将端口 37000-37100 重定向到我的计算机。监听这些端口中的任何一个时都可以访问 SSH(默认情况下我使用 37022,但尝试过 37080,没问题)。

不过,我只能通过本地 IP 访问 Nginx(例如:http://192.168.49.198:37080)。当我尝试从外部连接(http://our_network's_ip:37080)时,浏览器会在一段时间后超时。请阅读下面的更新。我安装了 Apache 只是为了确保它是一样的。库存安装,只有端口被更改。

UTF 已被禁用。

我在各种家庭网络上尝试过上百次,每次都能成功。这次是办公室网络,而且我不是配置路由器的人。我想说问题出在那里,但 SSH 可以正常工作……

Ubuntu 12.10。

有任何想法吗?

更新:实际上,我可以从外部网络访问我的计算机,只有当我使用我网络的“外部”IP 时,我才能从我自己的网络访问我的计算机。

答案1

在运行 Nginx 的主机上,尝试使用 tcpdump 来监控是否有任何数据包到达您期望的服务器。否则,问题几乎肯定是出在其他配置上,例如路由器或其他网络设备。

例如,要查看 TCP 端口 37080 上的数据包,则

tcpdump -i any tcp port 37080 

答案2

听起来好像路由器上设置了 NAT,为 http 设置了指定的端口号 这是我唯一能即兴想到的 说实话,你没有明确说明你的网络与工作网络的关系

show ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
tcp 172.16.10.8:80     172.16.10.8:8080   ---                ---

答案3

我猜想这是一个 NAT 问题。

假设网络网关有一个公网 IPgat_public_ip和一个私网 IP 192.168.49.1。网关配置了一条从的DNAT端口到 OP 的私网 IP 的简单规则。37000-37100gat_public_ip192.168.49.198

当我们尝试从内部网络连接时,假设发生以下192.168.49.2端口1234到端口37000的情况:gat_public_ip

  • 192.168.49.2:1234带有源和目标的SYN 数据包gat_public_ip:37000离开内部主机,
  • 网关应用 DNAT 并在内部网络上重新发送数据包:源192.168.49.2:1234和目标192.168.49.198:37000
  • OP 的工作站使用 SYN/ACK:源192.168.49.198:37000和目标进行应答192.168.49.2:1234,该应答直接发送到发起主机。
  • 192.168.49.21 drops the SYN/ACK since it never sent anything to192.168.49.198:37000的内核(它不知道网关上的 DNAT)。

从外部连接时,DNAT 工作正常:数据包的源地址不在内部网络上192.168.49/24,并且 OP 的工作站将答案发送到网关,从而逆转 DNAT。

相关内容