我有一台 QNAP 连接到远程网络上的路由器。在同一网络上,连接到同一路由器,还有一台 Linux 服务器。在远程网络中,一切正常。我可以访问 QNAP NAS 的 Web 界面。我还可以通过路由器上设置的端口转发访问 Linux 服务器。
但是,当我尝试连接到 VPN 并通过它连接到 Linux 服务器时,无论是通过 ping、SSH 还是 Web 界面,我都无法连接。一切都超时了。这不是 Linux 服务器上的任何防火墙,我在调试时检查或禁用了所有内容(firewalld、iptables、SELinux)。
问题是,Linux 服务器在回复 VPN 请求时不知道如何返回回复。它默认通过路由器而不是 QNAP NAS 上的 VPN 进行路由。要解决此问题,您可以在 Linux 服务器上设置路由,以确保通过 VPN 传入的信息也通过 QNAP NAS 上托管的 VPN 返回。
托管 Wireguard 的 QNAP NAS 默认使用 198.18.7.x IP 范围。通过查看 QNAP 上的 WireGuard 设置来确认这一点:
请注意,此 IP 地址使用的是 198... ,而不是 192... ,这很可能是您的 QNAP 正在运行的 IP。很有可能是拼写错误。
现在在你的 Linux 服务器上,我们需要找出你的网络接口的名称。连接到终端并输入
ifconfig
这将显示您机器上的网络接口。“:”前的第一个代码是网络接口的名称,例如 eth0、eno1 等:
忽略
lo
接口并记住eno1
- 或它在您的机器上的名称。'inet 192...' 应该与您正在使用的机器的 IP 地址相匹配。您还可以键入route -n
并查看标题下方显示的表格的最后一个元素Iface
。另请记下 QNAP NAS 的 IP 地址,例如 192.168.0.210
现在我们可以添加路线。输入以下命令:
sudo ip route add 198.18.7.0/24 via 192.168.0.210 dev eno1
以下是上述命令的解释:
sudo
:以管理员身份运行命令ip route add
:使用以下配置添加路线198.18.7.0/24
:这会告诉计算机重新路由来自任何 VPN 客户端(198.18.7.0 - 198.18.7.255)的所有流量。此 IP 地址的前 3 个部分(.0 除外)需要与您在 Wireguard VPN 屏幕上记下的 IP 地址相匹配via 192.168.0.210
:这将通过 QNAP NAS 的 IP 地址路由来自 VPN 的流量。当然,IP 需要与 QNAP NAS IP 匹配。dev eno1
:这确保您的 Linux 服务器上正在使用正确的网络适配器。如果你现在运行
route -n
,你应该会看到类似这样的内容:最后一行是你添加的路由。如果你输错了某个 IP 地址,你可以使用以下命令再次将其删除:
sudo route del -net 192.18.7.0 gw 192.168.0.210 netmask 255.255.255.0 dev eno1
请注意上述命令如何与上表最后一行的信息匹配。
现在不需要在 Linux 服务器上重新启动任何东西,它应该立即起作用。