我有一台在 Amazon EC2 实例上运行 strongSwan 的服务器,我想使用 Windows 7 连接到该服务器。strongSwan 服务器位于私有网络上(网络 172.16.0.0/17 上的 IP 地址为 172.16.1.15),并且流量从公共 IP 地址转发到其私有地址 - 这就是亚马逊所称的“弹性 IP”。
我想从另一个私有子网(10.127.0.0/22)分配客户端地址,并在两个私有子网之间路由流量。请注意,172.16.0.0/17 子网由 Amazon 管理,但 10.127.0.0/22 子网目前不受任何管理(除了我的 ipsec.conf)。
我的 Windows 客户端确实连接到了 VPN,但无法连接到私有网络上的任何主机。我的理论是,这与客户端路由问题或服务器上缺少某些 iptables 调用有关,但我对这两个领域都不太了解,所以我陷入了困境。
- 我已经在服务器上安装了 Ubuntu 12.04 和 strongswan-ikev2。
ipsec version
报告Linux strongSwan U4.5.2/K3.2.0-52-virtual
- 请注意,客户端和服务器均位于 NAT 后面(客户端位于本地办公网络中,服务器位于 Amazon 云中)。我已在 Amazon 仪表板和客户端防火墙上解除了 UDP 端口 500 和 4500 的阻止。
- 我已在服务器上启用了 IPv4 转发:
echo 1 > /proc/sys/net/ipv4/ip_forward
- 我已经进入 Amazon 的 172.16.0.0/17 子网的 VPC 管理 UI,并允许所有往返于 10.127.0.0/23 子网的流量。
这是 /etc/ipsec.conf:
config setup plutostart=no conn %default keyexchange=ikev2 dpdaction=clear dpddelay=300s rekey=no conn dlpvpn left=172.16.1.15 leftauth=pubkey leftcert=openssl-cert.pem leftid=vpn.example.com leftsubnet=172.16.0.0/17 right=%any rightsourceip=10.127.0.0/22 rightauth=eap-mschapv2 rightsendcert=never eap_identity=%any auto=add
这是/etc/ipsec.secrets:
: RSA openssl-key.rsa TESTDOMAIN\testuser : EAP "testpassword"
这是 /etc/strongswan.conf:
charon { threads = 16 dns1 = 172.16.3.246 }
我想使用分割隧道 - 其中只有专用 172.16.0.0/17 网络的流量通过 VPN,而发往 Internet 的流量使用客户端的本地网关。为此,我在 Windows 客户端上取消选中“在远程网络上使用默认网关”,并选中“禁用基于类的路由添加”。
连接成功完成。
ipconfig /all
显示:PPP adapter strongswan: Description . . . . . . . . . . . : strongswan IPv4 Address. . . . . . . . . . . : 10.127.0.1(Preferred) Subnet Mask . . . . . . . . . . . : 255.255.255.255 Default Gateway . . . . . . . . . : DNS Servers . . . . . . . . . . . : 172.16.3.246
但是,我无法 ping 172.16.0.0/17 网络上的任何主机。事实上,如果我执行 nslookup,它会尝试联系我在 strongswan.conf 中指定的 DNS 服务器,但该 DNS 服务器上的 Wireshark 显示它没有收到任何信息。我甚至无法 ping strongSwan 服务器本身的 172.16.1.15 地址。
据我所知,在 Windows 上必须手动添加路由规则。但是,它们需要是什么呢?我能想到的唯一答案是尝试使用命令添加 172.16.0.0/17 网络的路由以使用 VPN 服务器的地址作为网关
route add 172.16.0.0/17 172.16.1.15 if 45
。但是,这并没有改变任何东西 - 来自我的 VPN 客户端的流量没有到达 172.16.0.0/17 网络。
我会很感激任何帮助。谢谢。
答案1
我终于完成了这个工作,感谢这里@ecdsa 的帮助以及#strongswan irc 频道的帮助。
我的 VPN 客户端的路由规则不完整。我需要添加以下两条规则:
route add 172.16.1.15/32 10.127.0.1 route add 172.16.0.0/17 172.16.1.15
第一个为 VPN 服务器的私有 IP 地址添加路由,指定我的客户端的 VPN 分配 IP 地址作为网关(
route print
然后将显示on-link
为该接口的 AKA 本地 IP 地址)。第二个执行我在问题中使用路由规则尝试执行的操作 - 它为整个私有网络添加路由,指定 VPN 服务器作为网关。我需要
leftsubnet=172.16.0.0/17
在服务器上指定,否则无论路由是什么,IPsec 策略都不会允许流量进入子网。我需要
leftfirewall=yes
在服务器上指定,以便它将适当的规则插入到 iptables 中。我需要禁用我的 Amazon 实例上的“源/目标检查”。虽然我允许从我的 VPN 子网到/从安全组在 Amazon VPC 仪表板中,我没有意识到还有另一个设置。在 EC2 仪表板上,您可以右键单击实例并转到“更改源/目标检查”。此检查默认启用,并阻止我的 VPN 流量离开 VPN 服务器(并且它阻止从其他 VPC 主机到我的 VPN 子网的流量进入 VPN 服务器)。