我用 LAMP 设置了一个 Ubuntu 服务器并尝试从外部访问它。
我做了什么:
问题
Ping Failed: TimedOut
从终端 ping 该 IP 地址,但之后它就冻结了,PING myhost.no-ip.org (66.XXX.XXX.XX) 56(84) bytes of data.
当我尝试通过浏览器连接到服务器时,我收到了Oops! Google Chrome could not connect to...
消息。
信息
我可以通过 ssh、sftp 和 http 本地连接到我的服务器(192.168.1.127)。
我有一个 Linksys E320 路由器,并且我禁用了防火墙。
如果我需要提供我的外部 IP,请告诉我。感谢您的帮助。
编辑
我修改了 /etc/apache2/ports.conf,将其替换为监听端口 50005,而不是Listen 80
80listen 50005
答案1
我为什么错了
我说您无法 ping 通的原因是:路由器从不将回显请求转发到您的服务器,但这并不能解释为什么路由器本身不回复回显请求。在我的家庭网络上,我可以直接 ping 我的路由器 (192.168.1.254),那么为什么当我尝试从外部 ping 它时它不起作用?
我最好的猜测
我仍在学习这个,所以这些信息可能不准确。我的答案主要来自https://community.spiceworks.com/topic/85353-forward-pings-from-the-router-to-the-server-behind-it
您无法 ping 通实际上并不是您的错,而是 IPv4 有限设计的错误。我假设您的路由器有一个指定的 IP 地址,并且您已将其设置为将端口 80、22 和 50005 转发到您选择的某台计算机;这是您的路由器使用端口地址转换 (PAT),这是一种特殊类型的网络地址转换 (NAT)。
当您 ping 服务器时,ping 会传输 Internet 控制消息协议 (ICMP) 回显请求消息并等待返回消息。
问题在于 ICMP 级别太低,没有端口。因此您的路由器不会将 ICMP 回显请求转发到您的服务器,因为您的路由器只转发端口,因此无法 ping。
除了使用 ping 来检查服务器是否已启动并正在运行之外,您还可以使用 telnet 25 来解决问题。我还没有在我的服务器上进行设置,所以我不确定如何进行设置。
我让它工作了吗? 我没有进行端口转发,而是转到防火墙 > IP 直通,并将分配模式从“直通”更改为“默认服务器”,并将默认服务器设置为我的笔记本电脑服务器正在使用的内部 IP(192.168.1.99)。
现在 ping 可以正常工作了。说实话,我不确定我的情况是否和你的情况一样,所以我希望尽快收到你的回复。