带有 Windows 7 客户端的 strongSwan 服务器不路由流量

带有 Windows 7 客户端的 strongSwan 服务器不路由流量

我有一台在 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 频道的帮助。

  1. 我的 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 服务器作为网关。

  2. 我需要leftsubnet=172.16.0.0/17在服务器上指定,否则无论路由是什么,IPsec 策略都不会允许流量进入子网。

  3. 我需要leftfirewall=yes在服务器上指定,以便它将适当的规则插入到 iptables 中。

  4. 我需要禁用我的 Amazon 实例上的“源/目标检查”。虽然我允许从我的 VPN 子网到/从安全组在 Amazon VPC 仪表板中,我没有意识到还有另一个设置。在 EC2 仪表板上,您可以右键单击实例并转到“更改源/目标检查”。此检查默认启用,并阻止我的 VPN 流量离开 VPN 服务器(并且它阻止从其他 VPC 主机到我的 VPN 子网的流量进入 VPN 服务器)。

相关内容