我已将端口 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-37100
gat_public_ip
192.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 to
192.168.49.198:37000的内核(它不知道网关上的 DNAT)。
从外部连接时,DNAT 工作正常:数据包的源地址不在内部网络上192.168.49/24
,并且 OP 的工作站将答案发送到网关,从而逆转 DNAT。