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

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

我已经从我的Linode实例设置了一个简单的ssh隧道到我的VPC中的一个AWS EC2实例。 我有三个正在运行的实例,一个拥有公共IP(不是弹性IP,只是一个公共IP)。 我的ifup命令使用类似于以下内容的方式启动隧道:

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/hostsparsing。

之后我可以看到我的隧道从两边。 我可以ping到隧道的远端(192.168.11。 )和远端的eth0(AWS端的10.11.0.xx, Linode端的123.45.67。 )。 (注意:这里所有的地址都已经过消毒处理)。 我也可以通过任何一方的隧道ssh

不工作的部分是通过该隧道到达VPC内的其他两个节点的任何尝试。 我可以从jump.aws。* ping和ssh到任一个(阳极和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规则是活动的。 唯一有效的规则在我的VPC的jump框中。 AWS SG允许VPC节点之间的所有stream量(并且我已经证实,我可以从那里跳到跳转点和林德点。

如果我运行tcpdump -n -v dst 10.11.0.39 (阳极) jump (我正在尝试configurationNAT路由器)并尝试从Linode通过ssh到阳极,我确实看到了stream量跳转/路由器。 我也看到成功的ARPstream量。 但是我没有看到任何stream向阳极的stream量,也没有看到从阳极本身的tcpdump(跳跃和阳极之间的ssh除外)接收到任何stream量。

对于这个问题,NAT /伪装根本不起作用。 不pipe隧道如何,我的默认路由(阳极和bnode)都被忽略。

这是亚马逊的AWS VPC SDN(软件定义networking)的一些神器吗? 我怎么能configuration默认路由指向我的一个节点…一个节点,我可以ping和SSH到…和我的stream量没有路由到该节点?

(这个configuration中的所有AWS EC2节点都是带有“shellshock”修补程序的Debian Wheezy 7.1 AMI,而VPC位于us-west-2(Oregon))。

我错过了什么?

听起来像一个路由问题,因为隧道是好的。 我做了这个,它的工作…它不再工作:-)。 我还没有适应tun设备的新方式,或者我的服务器只是borked。

路由部分应该还可以。

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