因此,我有一个使用 openVPN 连接到付费 VPN 服务的 WD MyCloud EX2,但我仍然希望使用端口转发从外部网络访问我的 ssh、ftp 和 plex 端口 (22,20-21,32400)本地网络。我知道我可以在 VPN 服务器上设置端口转发,并且我的提供商允许这样做,但 IP 总是会变化,我不想通过 VPN 提供商。默认情况下,当在带有 NAS 的本地网络上时(以及使用 openVPN 路由到本地网络时),我可以访问这些端口,但我无法使用端口转发进行连接(一旦启用 NAS VPN,它就会停止工作) 。我尝试了一些基本的 Iptables 规则,例如,iptables -A OUTPUT -p tcp -m tcp --dport 32400 -j AC
但它们似乎不起作用。我看过各种关于尝试类似事情的帖子,但它们似乎要么是supes,有人对如何允许 NAS 绕过特定端口的 openVPN 有任何想法吗?谢谢
答案1
该问题可能是由于路由造成的。最有可能的是,您的 VPN 提供商会推送强制您的设备使用 VPN 服务器作为默认网关的路由。通常,它会推送0.0.0.0/1
和128.0.0.0/1
,因为这两个路由组合起来将覆盖整个 IPv4 地址空间,并且仍然允许您与直接上游网关和本地网络通信,因为它们具有更大的前缀(例如 / 24)。
这意味着,例如,如果您的 VPN 客户端在其接口上收到来自互联网上的主机(例如 1.2.3.4)的数据包eth0
,它将匹配路由0.0.0.0/1
并发送到您的 VPN 服务器。 1.2.3.4 不需要来自 VPN 服务器的数据包,因此无法建立连接。您想要的是将回复数据包从 发出eth0
,按照初始数据包传入的方式返回。
这可以通过您需要通过端口转发访问的 VPN 客户端计算机上的路由策略来完成。请参阅这个类似的问题和第一个答案:在与传入相同的界面上回复?
去引用:
echo 200 isp2 >> /etc/iproute2/rt_tables
ip rule add from <interface_IP> dev <interface> table isp2
ip route add default via <gateway_IP> dev <interface> table isp2
答案2
您可以设置一个 ddns(动态 dns),它允许您为动态 IP 地址拥有一个域名,我个人使用 no-ip,它是免费的,您只需每 30 天按下一个按钮即可确认您仍然想要该域名, 免费。
您可以通过 win 计算机上的客户端或网络中的 Linux 服务器将其设置为您的主路由器。
您可以设置openvpn(如果您自己构建了它)并将其设置为带有隧道的vpn类型3,这将使您的设备与您的设备位于同一子网中,从您连接的每个网络,建议使用不同的ip您的家庭网络地址,如 10.10.1.0/24,这样您在使用它时就不会出现 ip 地址冲突。