我们正在使用 VPN 将远程办公室连接到我们的总部,并且远程办公室中的一台机器需要将端口 22 公开到外部互联网。
并发症:
- 主办公室有固定的 IP 地址。
- 远程办公室有一个浮动 IP 地址。
- 远程办公室位于我们无法控制的路由器后面。
- 来自远程办公室的所有流量都需要通过总部的 VPN。
总部和远程办公室均配备 DrayTek Vigor2925 系列路由器,并采用最新固件。远程办公室 Draytek 的上游路由器是一个廉价的黑盒子,没有 DDNS 或 VPN 功能,或者任何看似有用的东西。
有用的方法:
- 我们已能够使用拨入 VPN 将远程办公室连接到我们的网络。完成后,我们可以从主办公室连接到目标计算机。
- 我们可以使用路由器的端口转发设置将固定 IP 地址的连接转发到主办公室的一台机器。
- 我们可以从固定IP地址转发到远程办公室的一台机器。
我的理解是,DrayTek 的文档 而在其他地方,NAT 与 IPSec 隧道不兼容,特别是身份验证标头,但如果两个设备都支持 NAT-T,那么应该可以使用 L2TP 和 IPSec 封装建立 VPN,路由器声称支持。
因此:我们已将远程办公室设置为拨入,使用“带有 IPsec 策略的 L2TP”,关闭身份验证标头,将主办公室路由器设置为将端口转发到目标机器,并使用 telnet 接口检查 vpn-passthrough 是否已关闭,但我们仍然无法连接。
或者,如果我们可以读取远程办公室的浮动 IP 地址,我们可以使用动态 DNS 解决方案。但是,我们无法控制远程办公室上游的路由器,并且我们通过办公室的 VPN 转发所有流量:远程办公室中的所有计算机都认为其面向公众的 IP 地址是属于主办公室的固定地址。
我们几乎要购买一台 Raspberry Pi 插入上游路由器,并用它来运行wget
icanhazip.com 的 cron 作业。
那么...我在路由器配置中是否遗漏了某个步骤?或者有没有一种不那么坑爹的方法可以从 VPN 内部读取 IP 地址?
答案1
来自远程办公室的所有流量是否都通过 VPN,例如,VPN 是否是默认网关?如果不是,那么您可能需要对来自互联网的所有连接到远程计算机的端口 22 进行 SNAT。否则,连接将通过远程办公室的互联网连接返回。
另一种可能性是通过 SSH 进行远程端口转发,例如
ssh -R 22:127.0.0.1:22 <main gateway>
: