Published on

在群晖NAS上搭VPN

Authors
  • avatar
    Name
    wellsleep (Liu Zheng)
    Twitter

发现 VPN 这个词被妖魔化,完全指代为翻墙,正经的 VPN 教程极少,很糟糕。

L2TP 服务端(Synology NAS)

  1. 手工到英文网站下载对应 DSM 版本的 VPN Server 应用(国内区被屏蔽)
  2. 在 L2TP/IPSec 栏目中啥也不用改,设置共享密钥(PSK)即可
  3. 为了减少后面的麻烦,安装 Proxy Server 套件,并设定 http 代理端口(比如 12345)

默认 VPN 网关是 10.2.0.0,着陆网段 10.2.0.0/24

L2TP 客户端(iOS)

  1. 设置服务器地址为服务端固定 IP
  2. 账户名为 NAS 中的用户名(邮箱前缀)
  3. 密码填 NAS 中对应用户的密码
  4. 密钥填服务端中设置的 PSK
  5. 打开 发送所有流量
  6. 设置 代理-手动,填入 VPN 网关和代理 IP,即 10.2.0.0:12345

打开 VPN,即可登录内网。

L2TP 客户端(Windows 10)

参考 https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/clients-zh.md

其中可能发生以下错误,需要运行注册表脚本。

另外需要设置代理服务器,类似 iOS。

Windows 错误 809

错误 809:无法建立计算机与 VPN 服务器之间的网络连接,因为远程服务器未响应。这可能是因为未将计算机与远程服务器之间的某种网络设备(如防火墙、NAT、路由器等)配置为允许 VPN 连接。请与管理员或服务提供商联系以确定哪种设备可能产生此问题。

注: 仅当你使用 IPsec/L2TP 模式连接到 VPN 时,才需要进行下面的注册表更改。对于 IKEv2IPsec/XAuth 模式,不需要 进行此更改。

要解决此错误,在首次连接之前需要修改一次注册表,以解决 VPN 服务器 和/或 客户端与 NAT (比如家用路由器)的兼容问题。请下载并导入下面的 .reg 文件,或者打开 提升权限命令提示符 并运行以下命令。完成后必须重启计算机。

  • 适用于 Windows Vista, 7, 8, 10 和 11 (下载 .reg 文件)

    REG ADD HKLM\SYSTEM\CurrentControlSet\Services\PolicyAgent /v AssumeUDPEncapsulationContextOnSendRule /t REG_DWORD /d 0x2 /f
    
  • 仅适用于 Windows XP (下载 .reg 文件)

    REG ADD HKLM\SYSTEM\CurrentControlSet\Services\IPSec /v AssumeUDPEncapsulationContextOnSendRule /t REG_DWORD /d 0x2 /f
    

另外,某些个别的 Windows 系统配置禁用了 IPsec 加密,此时也会导致连接失败。要重新启用它,可以运行以下命令并重启。

  • 适用于 Windows XP, Vista, 7, 8, 10 和 11 (下载 .reg 文件)

    REG ADD HKLM\SYSTEM\CurrentControlSet\Services\RasMan\Parameters /v ProhibitIpSec /t REG_DWORD /d 0x0 /f
    

中间发现的问题

在 L2TP 服务端未设置代理服务器时,发生在 VPN 内可以 Ping 通所有上级和外网地址,却无法使用浏览器访问的问题。 通过在各级网络设备设置静态路由均未能解决,但在一次偶然开启翻墙代理后发现访问正常。因此为了简化客户端设置,直接在 NAS 上设置一个 http 代理服务器,并将客户端的所有访问流量转向该代理服务器即可。