我可能不会长期使用它,但我仍然想知道为什么它不起作用。
我已经设置了一个简单的远程控制从我的 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 接收到的流量(除了跳转和阳极之间)。jump
ssh
ssh
就此而言,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