Apache-2.2
apache2 mod ssl 不響應 wan 請求
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 被破壞了。
你能從區域網路外部連接到伺服器嗎?