![为什么 WebDAV 在家庭网络内部失败](https://linux22.com/image/1410282/%E4%B8%BA%E4%BB%80%E4%B9%88%20WebDAV%20%E5%9C%A8%E5%AE%B6%E5%BA%AD%E7%BD%91%E7%BB%9C%E5%86%85%E9%83%A8%E5%A4%B1%E8%B4%A5.png)
在我的 OSX 服务器上,有一个文件夹在服务器应用程序中配置为可通过 WebDAV 访问。此文件夹用于同步 OmniFocus。我在路由器上设置了动态 DNS。当我在家庭网络之外时(物理上远离或通过 VPN 连接),我可以通过以下方式连接和同步:
https://<server name from dyndns>/<username>/<path to WebDAV folder>
但是,当我在家庭网络中时,与 WebDAV 的连接不起作用(其他连接,例如 AFP,可以起作用)。
我无法从家庭网络内连接到 WebDAV 的原因可能有哪些?哪些日志文件可以提供提示?它们存储在哪里?
我正在运行 OSX server 10.9.3。和 server.app。感谢您的帮助。
答案1
您的路由器(NAT 网关)可能未正确执行 Hairpin NAT。Hairpin NAT 是指 NAT 必须对同一数据包同时执行出站和入站 NAT。在您的情况下需要这样做,因为您的 WebDAV 客户端正在尝试连接到 NAT 的外部 IP 地址。因此,您的 NAT 必须对数据包执行出站 NAT 才能将其发送到该公共 IP 地址。但随后它意识到公共 IP 地址是它自己的地址,并且它有一个端口转发条目,用于如何将连接尝试转发到端口 80(或 443 或其他),因此它必须对同一数据包执行入站 NAT 才能将其正确转发到您的 WebDAV 服务器。
一些在大多数端口上正确执行 Hairpin NAT 的家庭网关会在端口 80 上阻塞,因为它们的基于 Web 的管理 UI 在该端口上运行。有时,您可以通过禁用 WAN 接口上的基于 Web 的管理或将基于 Web 的 UI 移至其他端口(如果允许您配置)来停止阻塞。但有些不允许您更改端口,即使您没有在 WAN 端口上启用基于 Web 的管理,它们仍然会阻塞。
您还可以尝试以下其他方法:
- 如果 Hairpin NAT 未默认启用,请查看 NAT 网关的 UI 或在线帮助,了解如何启用它。如果您使用 Linux 上的 iptables 等工具构建了自己的 NAT 网关,请在线查找有关将 Hairpin NAT 规则添加到 iptables 配置的提示。
- 确保您使用的是家庭网关盒的品牌/型号/硬件版本的最新固件,以防 Hairpin NAT 是他们最近修复的问题。
- 如果以上方法均不起作用,请考虑购买更好的家庭网关,或在您的机器上加载售后固件发行版(如 DD-WRT)。
我猜你没有使用 AirPort 基站 (Extreme/Express/Time Capsule) 作为家庭网关。根据我的经验,Apple 始终在其所有网关上正确使用 Hairpin NAT。
如果您的有线或 DSL 调制解调器盒与充当 NAT 网关的盒相同,并且您可以访问 AirPort 基站,请考虑禁用调制解调器盒的 NAT 和 DHCP 服务器功能,使其成为透明桥。然后将 AirPort 基站的 WAN 端口插入调制解调器盒的 LAN 端口,并将 AirPort 基站配置为执行 NAT。您可以使用几乎任何 Wi-Fi 路由器执行此操作,但我不能保证其他路由器是否能正确执行 Hairpin NAT。