在服务器之外发出路由 openswan vpn 流量

Ken*_*son 6 vpn ipsec openswan amazon-vpc

尝试在 Amazon VPC 集群中设置基于 openswan 的服务器。目标是让我们可以通过 VPN 连接到 VPC 并使我们的工作站就像在网络上一样,更像是一种公路战士配置。

我们选择的 VPN 客户端是适用于 Mac OS X 的Equinux VPN Tracker ( http://equinux.com/us/products/vpntracker/ )。我们已经使用它通过基于硬件的 VPN 连接到我们现有的网络,并希望继续使用它连接到我们的 VPC 网络。

到目前为止,我已经将它设置为可以成功连接到在 VPC 中运行的 openswan 服务器,但是我只能 ping openswan 服务器的内部 IP。我无法与网络上的其他任何内容交谈。我可以运行 tcpdump 并看到 ping 请求出现,但是它们从未到达其他主机。

我的第一个想法是它与只有一个网络接口的 EC2 实例有关,但是我之前设置了 OpenVPN 连接没有问题,尽管它们通常使用隧道设备,我还没有真正找到一个例子带有隧道或单个接口的 openswan。

任何帮助将不胜感激。

一些配置:

VPC Subnet: 10.10.1.0/24
VPC Gateweay: 10.10.1.1
Openswan Private IP: 10.10.1.11
Openswan Public IP: xxx.xxx.xxx.xxx
Run Code Online (Sandbox Code Playgroud)

Openswan 配置:

version 2.0

config setup
  interfaces=%defaultroute
  klipsdebug=none
  plutodebug=none
  dumpdir=/var/log
  nat_traversal=yes
  virtual_private=%v4:10.10.1.0/24

conn vpntracker-psk
  left=%any
  leftsubnet=vhost:%no,%priv
  right=10.10.1.11
  rightid=xxx.xxx.xxx.xxx
  rightsubnet=10.10.1.0/24
  rightnexthop=10.10.1.1
  auto=add
  authby=secret
  dpddelay=40
  dpdtimeout=130
  dpdaction=clear
  pfs=yes
  forceencaps=yes
Run Code Online (Sandbox Code Playgroud)

iptables/sysctl:

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)

tcpdump 输出:

09:13:25.346645 IP ROADWARRIOR_IP.4500 > ip-10-10-1-11.4500: UDP-encap: ESP(spi=0x38543e78,seq=0x6), length 116
09:13:25.346645 IP 10.200.0.30 > 10.10.1.251: ICMP echo request, id 21250, seq 0, length 64
09:13:25.346789 IP ip-10-10-1-11.4500 > ROADWARRIOR_IP.4500: UDP-encap: ESP(spi=0x07046a51,seq=0x6), length 148
09:13:26.506120 IP ROADWARRIOR_IP.4500 > ip-10-10-1-11.4500: UDP-encap: ESP(spi=0x38543e78,seq=0x7), length 116
09:13:26.506120 IP 10.200.0.30 > 10.10.1.251: ICMP echo request, id 21250, seq 1, length 64
09:13:26.506245 IP ip-10-10-1-11.4500 > ROADWARRIOR_IP.4500: UDP-encap: ESP(spi=0x07046a51,seq=0x7), length 148
09:13:27.332308 IP ROADWARRIOR_IP.4500 > ip-10-10-1-11.4500: UDP-encap: ESP(spi=0x38543e78,seq=0x8), length 116
09:13:27.332308 IP 10.200.0.30 > 10.10.1.251: ICMP echo request, id 21250, seq 2, length 64
09:13:27.332397 IP ip-10-10-1-11.4500 > ROADWARRIOR_IP.4500: UDP-encap: ESP(spi=0x07046a51,seq=0x8), length 148
Run Code Online (Sandbox Code Playgroud)

OS X 的 ping 输出:

:~> ping 10.10.1.251
PING 10.10.1.251 (10.10.1.251): 56 data bytes
92 bytes from 10.10.1.11: Destination Host Unreachable
Vr HL TOS  Len   ID Flg  off TTL Pro  cks      Src      Dst
 4  5  00 5400 6c64   0 0000  3f  01 f85a 10.200.0.30  10.10.1.251 

Request timeout for icmp_seq 0
92 bytes from 10.10.1.11: Destination Host Unreachable
Vr HL TOS  Len   ID Flg  off TTL Pro  cks      Src      Dst
 4  5  00 5400 1818   0 0000  3f  01 4ca7 10.200.0.30  10.10.1.251 

Request timeout for icmp_seq 1
92 bytes from 10.10.1.11: Destination Host Unreachable
Vr HL TOS  Len   ID Flg  off TTL Pro  cks      Src      Dst
 4  5  00 5400 1a09   0 0000  3f  01 4ab6 10.200.0.30  10.10.1.251 

Request timeout for icmp_seq 2
Run Code Online (Sandbox Code Playgroud)

Cra*_*aig 0

始终确保禁用 Openswan 实例上的源/目标检查。我没有看到有人提到这样做。