SSH over VPN连接


11

我们有一个AWS EC2服务器,我们已将其配置为只能从我们的办公室网络内(通过SSH)访问。显然,对于需要有人连接到EC2实例并在办公室外(例如出差期间)远程工作的远程安排,这不是理想的选择。

我已经设法通过PPTP设置了VPN,并且无论我身在何处,都可以连接到办公网络(我从wlan0有两个本地IP,从ppp0有一个本地IP)。但是,当我SSH到EC2实例时,它仍然很有可能拒绝我,因为它看到我仍在尝试从网络外部进行ssh。

我想问题是我无法路由ssh流量通过VPN。有什么想法我可以做到这一点吗?

我的另一个选择是将SSH切换到办公室网络中的一台机器,然后使用该机器SSH到EC2实例,但是由于这样做似乎过于冗长,我一直很犹豫。


简短的答案是通过VPN路由SSH流量。并且使用比PPTP更安全的方法。
2014年

Answers:


15

假设您可以通过SSH通过IP“ your.ec2.ip.address”访问您的AWS。假设您的办公室网络可以通过应用某些NAT转换的路由器访问Internet,这样,您的办公室PC就可以在Internet上使用IP“ your.office.external.ip”进行访问。

让我们还假设你所在OUTSIDE你的办公室,你的笔记本电脑连接世界各地,有:

  • 由您当地的Internet提供商分配的主IP地址(假设192.168.0.33,网络掩码255.255.255.0和def-gw 192.168.0.1);
  • 由远程PPTP服务器分配给笔记本电脑的PPP0地址(成功建立VPN通道后)。假设PPP0是带有远程P2P the.remote.pptp.address的.local.ppp0.ip。换句话说,您的笔记本电脑知道是.local.ppp0.ip,并且还知道在VPN隧道的另一端,通过.remote.pptp.address可以通过VPN到达您的PPTP服务器。

在这种情况下,如果您无法从笔记本电脑通过“ your.ec2.ip.address”到达您的AWS,那么我敢打赌,问题就在于您所猜测的路由:将您的SSH流量定向到“ your.ec2.ip.address” 不会将您的上网本留在VPN内,而是会沿着公用的外部VPN路径(又名:发送到您的本地网关:192.168.0.1)离开。

要诊断此问题,可以使用以下方法轻松检查:

  • Linux:tracepath命令(例如:“ tracepath -n your.ec2.ip.address”)
  • Windows:“ tracert”命令(例如:“ tracert -d your.ec2.ip.address”)

从输出中,您可以检查第二步是否报告PPTP地址。

如果您的流量沿错误的路径传播,则在VPN中路由的简单方法是:

  • Linux:“路由添加-host your.ec2.ip.address gw the.remote.pptp.address”
  • Windows:“路由添加your.ec2.ip.address掩码255.255.255.255 the.remote.pptp.address”

配置完上述路由后,您可以使用tracert / tracepath再次检查路由

一旦正确配置了路由,您办公室内出现问题的可能性就很小:如果您的PPTP服务器没有进行IP转发和NAT转换,则很可能会遇到“过滤”的情况,笔记本和your.ec2.ip.address之间缺少ip转发或“不对称路由”(如果缺少NAT):

  • 从您到亚马逊的流量,沿着VPN到达您的办公室,再到亚马逊。
  • 将流量从亚马逊返回给您,沿着通用的互联网路径路由,并且...被丢弃的可能性很高。

同样:tracepath / tracert可以帮助您检查问题。

在Linux机器上,另一个非常有用的朋友是“ tcpdump”。一些有用的tcpdump命令是:

  • “ tcpdump -n -i interface icmp”检查传入/传出的PING请求/响应;
  • “ tcpdump -n -i host an.ip.add.ress ”检查到达/发送到an.ip.add.ress的流量;
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.