如何通过具有 VPN 连接的单独笔记本电脑从家庭计算机访问 VPN 中的服务器

如何通过具有 VPN 连接的单独笔记本电脑从家庭计算机访问 VPN 中的服务器

对于我的本地工作环境,我想直接从其他地方的工作站访问我公司的所有服务器。为了让这变得真正有趣,唯一可能的访问是通过公司管理的笔记本电脑上的 VPN,并且笔记本电脑不允许连接到本地网络。

显然,没有 IT 部门可以帮助您解决此类问题。

答案1

如果您可以从家庭计算机通过 SSH 连接到公司笔记本,那么您可以使用SSH 隧道或者SSH 跳转主机

答案2

有很多 ssh 隧道文档,但它们没有涵盖这个特定场景。

因此,为了从工作站<->笔记本电脑<->公司网络,我们需要在 N 上安装一个额外的系统,它充当路由器来连接独立的网络。

我们需要在笔记本电脑上添加一个具有 2 个网络端口的虚拟机。一个通过 NAT 连接到主机网络,另一个通过桥接连接到 LAN。

所以我们可以得到一个连接 W <-> VM1 <-> VM2 <-> N1 <-> N2 <-> CN

这可以通过 ssh 配置进行配置。一些伪造 IP 的示例。

W =   192.0.0.3   <LAN>      VM1 = 192.0.0.2
VM1 = 192.0.0.2   <route>    VM2 = 10.0.0.3
VM2 = 10.0.0.3    <NAT>      NATRouter = 10.0.0.1
NR =  10.0.0.1    <nat2host> N1 = 20.0.0.4
N2 = 20.0.0.4     <vpnroute> CN 0.0.0.0/0

这是系统之间网络跃点的描述。
因此,要连接到 CN 中的服务器,我们需要解决 2 个单独的步骤。我们需要为中间跃点设置 ssh 配置。 .ssh/配置条目:

# reaching the VM
Host VM
    User            vmuser
    IdentityFile    ~/.ssh/vm_id_rsa
    ForwardX11      yes

# reaching a host inside the CN
Host CNhost
    User            companyuser
    IdentityFile    ~/.ssh/cnhost_id_rsa
    ForwardX11      yes
    ProxyCommand    ssh -A vm nc %h %p 2>  /dev/null    

另一个重要问题是虚拟机内的正确路由。到桥接 LAN 192.0.0.0/24 的路由需要具有比到 NAT 10.0.0.1 的默认路由更低的度量。

vm$ ip route
default via 10.0.0.1 metric 100
10.0.0.0/24 dev nat1 metric 100
192.0.0.0/24 dev bridge1 metric 99

现在有趣的情况是,当我们还想访问内部网络上的服务器时,该服务器只能从公司网络内部的服务器访问。经典的跳跃主机配置。为此,我们需要另一个 .ssh/config 条目

# reaching a host on a CN internal network
Host CNInternalhost
    User            cnInternalUser
    IdentityFile    ~/.ssh/cninternalhost_id_rsa
    ForwardX11      yes
    ProxyCommand    ssh -A CNhost nc %h %p 2>  /dev/null

现在我们应该能够简单地通过 ssh 进入 CNInternalhost。
如果没有,则需要检查路由表。 (例如缺少路线或错误的指标)


但我们还想直接从本地工作站访问此内部主机上的服务!

为此,我们现在使用 .ssh/config 中预配置的跃点创建隧道

ssh -L <portOnLocalhost>:CNInternalhost:<portOnCNInternalHost> CNhost

现在我们可以在 localhost:< portOnLocalhost > 上访问 CNInternalhost: < portOnCNInternalHost >

如果我们想在本地设置中重用额外的网络名称 (ServerX),我们可以在本地主机上为 LAN IP 添加一个主机别名,并为其创建一个额外的隧道。

echo 192.0.0.3 ServerX >> /etc/hosts

这还需要一个附加的 .ssh/config 条目:

# configuring another host on the CN internal network
Host serverX
    User            cnInternalUser
    IdentityFile    ~/.ssh/serverX_id_rsa
    ForwardX11      yes
    ProxyCommand    ssh -A CNhost nc %h %p 2>  /dev/null

通过这个 ssh 配置,我们现在可以创建一个像这样的隧道

ssh -L serverX:<portOnLocalhost>:serverX:<portOnLocalhost> CNhost

只要可以从 CNhost 访问 serverX。
我们可以做:

$ wget serverX:<portOnLocalhost>

相关内容