如何在 AWS VPC 和 Linode 之间设置 ssh -w 隧道 VPN?

如何在 AWS VPC 和 Linode 之间设置 ssh -w 隧道 VPN?

我可能不会长期使用它,但我仍然想知道为什么它不起作用。

我已经设置了一个简单的远程控制从我的 Linode 实例到我的 VPC 内的一个 AWS EC2 实例的隧道。我有三个正在运行的实例,其中一个有公共 IP(不是弹性 IP,只是公共 IP)。我的伊夫普命令使用类似以下命令启动隧道:

manual tun0
iface tun0 inet static
    pre-up /usr/bin/ssh -i /root/.ssh/awsvpn -S /var/run/ssh-aws-vpn-control -NMfw 0:0 jump.aws.mydomain.org
    pre-up sleep 5
    address     192.168.11.2
    pointopoint 192.168.11.1
    broadcast   255.255.255.0
    up  route add -net 10.11.0.0 netmask 255.255.0.0 gw 192.168.11.2
    post-down /usr/bin/ssh -i /root/.ssh/awsvpn -S /var/run/ssh-aws-vpn-control -O exit jump.aws.mydomain.org

... 从 Linode 运行到 awsgw ( jump.aws.mydomain.org)。 IP 地址通过 进行解析/etc/hosts

此后,我可以从两侧看到我的隧道。我可以 ping 到隧道的另一端(192.168.11)。) 以及远端的 eth0(AWS 端的 10.11.0.xx,123.45.67。在 Linode 端)。 (注意:这里的所有地址都已清理)。 我也可以ssh从任一侧通过隧道。

无法正常工作的部分是尝试通过该隧道到达我的 VPC 中的其他两个节点。我可以从 jump.aws.* ping 和 ssh 到其中任何一个节点(anode 和 bnode)。

关于跳跃系统我已经做过:

net.ipv4.ip_forward = 1

... 和

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  10.0.0.0/8           0.0.0.0/0

...并且在另外两个节点上我将其设置为我的默认路由器/网关:

## From anode:
root@anode:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.11.0.35      0.0.0.0         UG    0      0        0 eth0
10.11.0.0       0.0.0.0         255.255.255.0   U     0      0        0 eth0
10.11.0.0       0.0.0.0         255.255.255.0   U     0      0        0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0

路由jump表如下所示:

## From jump:
root@ip-10-11-0-35:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.11.0.1       0.0.0.0         UG    0      0        0 eth0
10.11.0.0       0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0
192.168.11.2    0.0.0.0         255.255.255.255 UH    0      0        0 tun0

...最后,在Linode上它看起来像这样:

## From linode
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         123.45.67.89    0.0.0.0         UG    0      0        0 eth0
10.11.0.0       0.0.0.0         255.255.0.0     U     0      0        0 tun0
192.168.11.1    0.0.0.0         255.255.255.255 UH    0      0        0 tun0
123.45.67.89    0.0.0.0         255.255.255.0   U     0      0        0 eth0

目前这些节点上没有其他iptables规则处于活动状态。唯一处于活动状态的规则位于jump我的 VPC 中的框上。AWS SG 允许 VPC 节点之间的所有流量(我已经确定我可以从 jump 到达 anode 和 bnode,然后从那里到达 linode。

如果我在(我尝试配置的 NAT 路由器)tcpdump -n -v dst 10.11.0.39上运行(阳极)并尝试通过它从 Linode 到阳极,我确实会看到流量到达跳转/路由器。我也看到了成功的 ARP 流量。但我没有看到任何流量传到阳极,也没有看到任何从阳极本身的 tcpdump 接收到的流量(除了跳转和阳极之间)。jumpsshssh

就此而言,NAT/伪装根本不起作用。无论使用哪种隧道,我的 anode(和 bnode)上的默认路由都好像被忽略了。

这是亚马逊 AWS VPC SDN(软件定义网络)的产物吗?我如何配置默认路由以指向我的一个节点……我可以 ping 和 ssh 到的节点……但我的流量没有被路由到该节点?

(此配置中的所有 AWS EC2 节点都是带有“shellshock”补丁的 Debian Wheezy 7.1 AMI...并且 VPC 位于 us-west-2(俄勒冈州))。

我错过了什么?

答案1

听起来像是路由问题,因为隧道已启动且正常。我这样做了,它起作用了……现在它不再起作用了 :-)。我还没有适应新的 tun 设备方式,或者我的服务器已经崩溃了。

路由部分应该还可以。

在这里获取 ssh 演示,它有一个关于 ssh VPN 的部分,整个设置(iptables、路由等)都在 .ssh/config 中的一个脚本 blob 中:https://wiki.hackerspace.lu/wiki/SSH_-_Secure_Shell

相关内容