我用 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 而不是 80,替換Listen 80
為listen 50005
答案1
為什麼我錯了
我說無法ping通的原因是:路由器從不將echo請求轉送到你的伺服器,但這並不能解釋為什麼路由器本身不回覆echo要求。在我的家庭網路上,我可以直接 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。
您可以使用 telnet 25 來解決問題,而不是使用 ping 檢查您的伺服器是否已啟動並運行。
我讓它工作了嗎? 我沒有進行連接埠轉發,而是轉到“防火牆”>“IP 直通”,將分配模式從“直通”更改為“預設伺服器”,並將預設伺服器設定為我的筆記型電腦伺服器正在使用的內部IP( 192.168.1.99 )。
現在可以 ping 通了。老實說,我不確定我的情況是否與您的情況相似,所以我希望盡快得到您的回覆。