Apache-2.2

apache2 mod ssl 不響應 wan 請求

  • January 10, 2014

WAN =====> 路由器(使用我的公共 IP 設置介面 WAN1)==> NAT 傳入 443 連接到 ====> Apache2 Web 伺服器

apache2 在埠上配置了一個虛擬主機,在埠 443 上偵聽 mysite.com

問題:

我的 /etc/hosts 文件說:

172.16.xxx.xxx mysite.com

所以我打開瀏覽器,輸入*https://mysite.com*後一切正常,伺服器使用 https 協議在指定的虛擬主機上響應。

現在我想嘗試使用我的公共 IP 連接到伺服器。

更新的 /etc/hosts 文件現在說:

xxpublicipxx mysite.com

當我打開瀏覽器時,出現超時錯誤。我的路由器防火牆顯示接受 443 連接

當我在 /etc/hosts 文件中使用私有 ip 時,伺服器的 netstat commad 在 https 請求之後說:

Proto Local Address           Foreign Address         State       User       PID/Program   name</br>
tcp6  172.16.xxx.xxx:https    172.16.xxx.xxx.57154    ESTABLISHED www-data   8105/apache2

這很好。

當我用我的公共 IP 更新主機時,我得到了

Proto  Local Address           Foreign Address         State       User       PID/Program
tcp    172.16.10.20:https      xxx.xxx.xxx.xxx:53618 SYN_RECV    root       -  

連接卡在 SYN_RECV 和客戶端我收到超時錯誤,並且您看不到 PID/程序。

有什麼建議嗎?

問題解決了

我的路由器是 Zyxel ZyWALL USG 100。為了獲得有效的 WAN 連接,必須設置策略路由。

使用網頁界面:

Configuration -> Network -> Routing -> Policy Route -> +Add

User: any
Incoming: any (Exluding ZyWALL)
Source Address: any
Destination address: ***LAN IP OF YOUR NAT(ted) LAN SERVER
DSCP Code: any
Schedule: none
Service: HTTPS

非常感謝你!

這似乎是一個路由問題。客戶端發送SYN連接伺服器;伺服器接收它並發送它的ACK;但客戶端永遠不會收到 ACK。一個wireshark 會話將證實這一點。它適用於 LAN IP 地址但不適用於公共 IP 地址的事實也強烈表明路由器有問題。

很難確定路由器配置出了什麼問題,但合理的猜測是它通過 WAN 介面發送 ACK,因此它永遠不會到達客戶端。換句話說,路由器的 NAT 被破壞了。

你能從區域網路外部連接到伺服器嗎?

引用自:https://serverfault.com/questions/566337