无法使用 pfSense 从 VPN 访问 Synology 文件服务器

无法使用 pfSense 从 VPN 访问 Synology 文件服务器

好的,情况是这样的:我的家庭网络上有一个 Synology 文件服务器/NAS,由 pfSense(路由器/防火墙)监控。我正在尝试设置一个通过 pfSense 的 VPN,这样我就可以连接到我的家庭网络并访问 NAS 上的共享文件夹,就像我在家里一样。

我终于能够使用 OpenVPN 设置 VPN,并使用运行 Windows 11 的测试笔记本电脑成功连接。我已在下面添加了客户端的常规设置:

dev tap
persist-tun
persist-key
data-ciphers *relevant ciphers used*
data-ciphers-fallback *relevant fallback ciphers*
auth *authorization cipher*
tls-client
client
resolv-retry infinite
remote *vpn-address* *port* udp4
nobind
auth-user-pass
ca *certificate info*
tls-auth *key*
remote-cert-tls server
explicit-exit-notify

就我而言,我不能:

  1. 使我的 NAS 出现在 Windows 文件资源管理器的“网络”部分下。过去,每当我在文件资源管理器中单击“网络”时,任何网络设备(如我的 NAS)都会显示出来:然后我可以单击该图标,输入我的 NAS 用户凭据,然后会出现一个可用的共享文件夹列表供我访问(双击其中一个文件夹会自动将其“映射”到资源管理器中)。出于某种原因,我无法再在文件资源管理器的“网络”区域中看到我的 NAS 设备。

  2. 在文件资源管理器中手动将共享文件夹映射到网络驱动器。 即使没有发生上述情况,我通常也可以单击“映射网络驱动器”以明确添加 NAS 上的共享文件夹。这也不起作用:Windows 报告找不到该服务器名称。

关键是: 当我从笔记本电脑 ping NAS 的 IP 地址时,可以访问:我获得了快速的响应时间,并且没有丢失数据包。

我检查了多个设置/解决方案:

  • 最新:根据我在这里收到的评论和回答,我意识到我需要将我的 VPN 配置为 TAP 连接,并在 pfSense 中在 VPN 和我的 LAN 之间建立桥梁。我已经完成了所有这些,但情况并没有改变。
  • 该网络在Windows中配置为专用网络。
  • 我尽力检查了 pfSense 的防火墙设置,甚至做出了更改以明确允许笔记本电脑的指定 IP 访问防火墙。
  • 最初,我按照一篇网络帖子的建议在 Windows 中启用了 SMB 1.0 协议,但后来我按照这里其他人的建议禁用了它。
  • 我已确保在 Windows 的网络适配器高级设置中选中了 TCP/IP 上的 NetBIOS。
  • 我已确保 Windows 服务中的功能发现服务、SSDP 发现和 UPnP 设备主机服务已启用并设置为自动运行。

我错过了什么? 感谢您的所有建议和意见!

答案1

让我的 NAS 出现在 Windows 文件资源管理器的“网络”部分下。过去,每当我在文件资源管理器中单击“网络”时,任何网络设备(如我的 NAS)都会显示出来:然后我可以单击该图标,输入我的 NAS 用户凭据,然后会出现一个可供我访问的可用共享文件夹列表(双击其中一个文件夹会自动将其“映射”到资源管理器中)。出于某种原因,我无法再在文件资源管理器的“网络”区域中看到我的 NAS 设备。

网络发现仅在同一广播域内有效,并且通常 VPN不是直接连接到以太网。(即使它们共享相同的 IP 子网号,通常也是通过一些代理 ARP 魔法来实现的;IPsec VPN 根本无法处理广播。)最常见的机制是 WS-Discovery(在 Windows 中用于 SMB2)、NetBIOS(仅限 SMB1)和 mDNS(Windows 不支持然而用于 SMB)。

为了使发现功能正常工作,您需要一个“第 2 层”VPN 协议(例如轻敲模式),确保服务器上的 VPN 接口(例如 tap0)已桥接到以太网 LAN 接口。但这样做有很多陷阱,我真的不想费心。只需直接创建网络共享 UNC 地址的快捷方式即可。

在文件资源管理器中手动将共享文件夹映射到网络驱动器。即使上述操作没有发生,我通常也可以单击“映射网络驱动器”以明确添加 NAS 上的共享文件夹。这也不起作用:Windows 报告找不到该服务器名称。

根据网络的设置方式,“查找服务器名称”可能依赖于与上述相同的发现协议。(不完全相同,但非常接近,并且具有相同的属性。)您的 NAS 可能通过 LLMNR 或 mDNS 或 NetBIOS 宣传其名称,所有这些都使用 IP 多播或 IPv4 广播,并且仅限于单个子网、单个广播域。

通过 VPN,你需要设置DNS服务器具有某种内部域,其中包含您要访问的服务器名称。我建议这样做,但只能作为确保访问后的第二步通过 IP 地址工作中。

(如果您无法通过 IP 地址访问服务器,那么分配名称根本无济于事。)

答案2

您可以在 synology 的 samba 服务器的全局配置中启用 WINS 服务器以使 Netbios 名称解析正常工作,然后使用您的 vpn 服务器推送 WINS 服务器 DHCP 选项。

要启用 WINS,请将这两行添加到 /etc/samba/smb.conf 中的 [global] 部分:

wins support=yes

name resolve order=wins lmhosts hosts bcast

为了使您的 openvpn 服务器传播 wins 服务器的地址,请将其添加到其配置中:

push "dhcp-option WINS <IP-Address of the synology device>"

为了正确分析问题,我建议你使用wireshark并查看当您尝试通过按 Windows+R 并输入来访问 Synology 设备以从 Windows 客户端访问共享时发生的 Netbios 查询\\<SYNOLOGY HOSTNAME goes here>

我偶然发现了这个解决方案synology 论坛

相关内容