通过 VPN 连接的 SSH

tur*_*two 12 vpn ssh pptp

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

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

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

我的另一个选择是通过 ssh 连接到办公室网络中的一台机器,然后使用该机器通过 ssh 连接到 EC2 实例,但我一直犹豫是否这样做,因为这似乎太过分了。

Dam*_*lli 17

假设您的 AWS 可以通过 SSH 访问 IP“your.ec2.ip.address”。假设您的办公室网络通过应用了一些 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);
  • 一个 PPP0 地址,由您的远程 PPTP 服务器分配给您的笔记本电脑(一旦您的 VPN 隧道成功建立)。让我们假设 PPP0 是 .local.ppp0.ip,远程 P2P 是.remote.pptp.address。换句话说,您的笔记本电脑知道是 .local.ppp0.ip 并且也知道在 VPN 隧道的另一端,您的 PPTP 服务器可以通过 VPN 访问,位于 .remote.pptp.address。

在这种情况下,如果您无法——从笔记本电脑——到达位于“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的流量;