我刚刚在 AWS VPC 子网中配置了一个 PPTP VPN 服务器。但是,我无法 ping 通同一子网(作为 VPN 服务器)中的其他主机。我不确定我是否忽略了一般网络配置、pptp / ppp 配置,或者我是否遗漏了与 AWS 特别相关的内容。
VPN 服务器配置在 VPC 子网 172.16.0.0/24 中,并关联了公共 EIP。从客户端建立 VPN 连接后,我可以 ping VPN 服务器的 172.16 接口,但除此之外什么都做不了。
VPN 服务器 IP:172.16.0.235。VPN 客户端 IP:192.168.11.11(通过 VPN 接口使用路由 172.16.0.0/16)
vpnserver$ ping 172.16.0.200
64 bytes from 172.16.0.200
vpnclient$ ping 172.16.0.235
64 bytes from 172.16.0.235
vpnclient$ ping 172.16.0.200
timed out
在 172.16.0.0/24 子网上的任何其他主机上,我从未收到 ICMP 回显请求数据包,尽管我在 vpn 服务器上看到了该数据包:
vpnserver$ tcpdump -nn icmp
13:53:07.714010 IP 192.168.11.11 > 172.16.0.200: ICMP echo request, id 1, seq 1, length 40
172-16-0-200$ tcpdump -nn icmp
<no packet>
我已检查 iptables - 没有规则,默认策略为 ACCEPT(对于 filter 和 nat 表中的所有链)。已启用转发:
vpnserver$ cat /proc/sys/net/ipv4/ip_forward
1
vpnserver$ route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.16.0.1 0.0.0.0 UG 0 0 0 eth0
172.16.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.11.11 0.0.0.0 255.255.255.255 UH 0 0 0 pptp0
我已经配置了一个 AWS 安全组,VPN 服务器和测试目标 (172.16.0.200) 都位于其中,并且没有任何限制(允许所有流量)。我已经在 VPC 路由表中为 172.16.0.0/24 配置了一条路由,以通过 VPN 服务器进行路由,这对于没有 NAT 的 icmp echo 答复是必需的,但 echo 请求甚至没有到达主机。
你知道我做错了什么吗?ppp 配置中需要一些允许路由的东西吗?我看不出网络配置有什么问题,我想知道 AWS 是否可能在 vpnserver 和其他主机之间做了一些阻止数据包的事情?或者比这更简单?
答案1
AWS 正在启用源/目标检查,从而阻止了流量。
http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html#EIP_Disable_SrcDestCheck
每个 EC2 实例默认执行源/目标检查。这意味着实例必须是其发送或接收的任何流量的源或目标。但是,当源或目标不是其自身时,NAT 实例必须能够发送和接收流量。因此,您必须禁用 NAT 实例上的源/目标检查。