我正在尝试在Amazon Linux上使用OpenVPN将本地LAN连接到EC2上的VPC。 我有从OpenVPN实例到LAN上的任何机器的stream量,但VPC上的其他机器没有看到来自LAN的stream量。
这是一个networking的修剪版本:
Local network / EC2 VPC, 10.2.0.*/255.255.255.0 10.1.0.*/ ,' 255.255.255.0 ,' .' | +---------------+ | | OpenVPN on | | | firewall XXX | +---------------+ | 10.1.0.1 | XXXX | OpenVPN server| +------`.-------+ \ XX 10.2.0.10 `-. +-------------+ \ '. +---------------+ `-. Second server +--------`.---+ | | 10.2.0.12 | |Local server | \ +-------------+ | 10.1.0.3 | \ +-------------+ \
从EC2 OpenVPN服务器:
[root@ip-10-2-0-10 ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.2.0.1 0.0.0.0 UG 0 0 0 eth0 10.1.0.0 10.1.2.5 255.255.255.0 UG 0 0 0 tun0 10.1.2.0 10.1.2.5 255.255.255.0 UG 0 0 0 tun0 10.1.2.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 10.2.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 [root@ip-10-2-0-10 ~]# ping -c 2 10.1.0.3 PING 10.1.0.3 (10.1.0.3) 56(84) bytes of data. 64 bytes from 10.1.0.3: icmp_seq=1 ttl=127 time=488 ms 64 bytes from 10.1.0.3: icmp_seq=2 ttl=127 time=54.9 ms --- 10.1.0.3 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1056ms rtt min/avg/max/mdev = 54.925/271.767/488.609/216.842 ms
从局域网防火墙:
root@firewall:~# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 xxx.xxx.xxx.xxx 0.0.0.0 UG 0 0 0 eth0.2 10.1.0.0 0.0.0.0 255.255.255.0 U 0 0 0 br-lan 10.1.2.0 10.1.2.2 255.255.255.0 UG 0 0 0 tun0 10.1.2.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 10.2.0.0 10.1.2.2 255.255.255.0 UG 0 0 0 tun0
从EC2上的第二台服务器:
[root@ip-10-2-0-12 ~]# ping -c 3 10.1.0.3 PING 10.1.0.3 (10.1.0.3) 56(84) bytes of data. --- 10.1.0.3 ping statistics --- 3 packets transmitted, 0 received, 100% packet loss, time 12014ms
然而,这是踢球。 在EC2 OpenVPN服务器上执行tcpdump会显示所有stream量,因为它应该:
[root@ip-10-2-0-10 ~]# tcpdump -i eth0 -n host 10.1.0.3 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 13:46:58.779826 IP 10.2.0.12 > 10.1.0.3: ICMP echo request, id 21846, seq 1, length 64 13:46:58.852756 IP 10.1.0.3 > 10.2.0.12: ICMP echo reply, id 21846, seq 1, length 64 13:46:59.787467 IP 10.2.0.12 > 10.1.0.3: ICMP echo request, id 21846, seq 2, length 64 13:46:59.847424 IP 10.1.0.3 > 10.2.0.12: ICMP echo reply, id 21846, seq 2, length 64
EC2上第二台服务器上的Tcpdump只显示回显请求,没有回复。
无论安全组设置如何,此stream量都将由Amazon在VPC外部丢弃。
任何我想念会导致这个stream量被丢弃?
原来,EC2阻止了来自OpenVPN服务器的转发数据包。
networking和安全 – >networking接口 – >操作 – >更改源/目标下的EC2控制板上有一个设置。 检查。
当我禁用这个在我的所有情况下通过VPNstream量按预期stream动。
希望这会帮助别人。
你打我自己的答案,所以我会扩大一点…
如果需要将其构build到实例引导脚本中,可以将以下内容添加到用户数据块中(启动实例时,在步骤3,configuration实例详细信息…展开页面底部的高级详细信息部分)为实例…更新行3为正确的区域:
#!/bin/bash export my_instance=`curl http://169.254.169.254/latest/meta-data/instance-id` export AWS_DEFAULT_REGION=us-east-1 aws ec2 modify-instance-attribute --instance-id $my_instance --no-source-dest-check
…如果是NAT实例,则可以通过添加以下行来修改路由表(更新route-table-id用于VPC使用的路由表ID):
aws ec2 replace-route --route-table-id rtb-01234567 --destination-cidr-block 0.0.0.0/0 --instance-id $my_instance
为此,您的实例需要权限来更新属性并replace路由…您可以使用以下策略语句使EC2angular色发生这种情况,然后在“IAMangular色”框中指定策略名称(也位于EC2向导的步骤3,configuration实例详情):
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1413415456000", "Effect": "Allow", "Action": [ "ec2:ModifyInstanceAttribute", "ec2:ReplaceRoute" ], "Resource": "*" } ] }