apache2 mod ssl 不响应 wan 请求

apache2 mod ssl 不响应 wan 请求

WAN =====> 路由器(WAN1 接口使用我的公共 IP 设置)==> 将传入的 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 命令在 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 连接,必须设置策略路由。

使用 Web 界面:

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

非常感谢!

答案1

这似乎是路由问题。客户端发送 SYN 以连接到服务器;服务器接收它并发送其 ACK;但客户端从未收到 ACK。wireshark 会话将证实这一点。它与 LAN IP 地址一起工作但与公共 IP 地址一起工作的事实也强烈表明路由器有问题。

很难确定路由器配置出了什么问题,但合理的猜测是它通过 WAN 接口发送 ACK,因此它永远不会到达客户端。换句话说,路由器的 NAT 坏了。

您能从 LAN 外部连接到服务器吗?

相关内容