Strongswan 数据包未路由

Strongswan 数据包未路由

我正在尝试将 strongswan 配置为 NAT 后面的 IKEv2 VPN 服务器。网络拓扑如下所示:

VPN 服务器 (10.0.0.1) 位于 NAT(默认网关 10.0.0.138)后面,它将 UDP 端口 4500 和端口 500 转发到 VPN 服务器。VPN 服务器运行 Fedora 28,并将 SELinux 设置为宽容。

我安装了 StrongSwan,并启用了 DHCP 和 FARP 插件。我的移动用户能够连接到我的 VPN 服务器,对其进行身份验证,甚至获取 IP 地址(我正在尝试从我的 iPhone 上获取)。

由于某种原因,我无法从我的工作电脑访问任何本地网络设备。此外,当我尝试从本地笔记本电脑 ping iPhone 时,我可以通过 tcpdump 在 VPN 服务器上看到已发送 ARP 请求,但我也可以在笔记本电脑上的 Wireshark 中看到从未发送任何响应。所以我猜想是 FARP 插件没有正常工作。

我在 VPN 服务器上启用了 IP 转发。是否需要采取其他步骤来激活 FARP 并使其正常工作?如有任何建议,我们将不胜感激!

顺便说一下,这是我的 IPSec.conf 文件:

config setup
    charondebug="ike 1, knl 1, cfg 0"
    uniqueids=no
conn ikev2-vpn
    auto=add
    compress=no
    # type=tunnel
    keyexchange=ikev2
    fragmentation=yes
    forceencaps=yes
    rekey=no
    left=%any
    [email protected]
    leftcert=server-cert.pem
    leftsendcert=always
    leftsubnet=0.0.0.0/24
    right=%any
    rightid=%any
    rightauth=eap-mschapv2
    rightsourceip=%dhcp
    rightsubnet=10.0.0.0/24
    rightdns=10.0.0.1,8.8.8.8,8.8.4.4
    rightsendcert=never
    eap_identity=%identity
    ike=aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024!
    esp=aes256-sha256,aes256-sha1,3des-sha1!
    # Dead peer detection. For MOBIKE, let high delay
    dpdaction=clear
    dpddelay=300s
    leftfirewall=yes

下面是输出ipsec statusall

Status of IKE charon daemon (strongSwan 5.6.3, Linux 4.17.14-202.fc28.x86_64, x86_64):
  uptime: 25 minutes, since Aug 29 10:24:12 2018
  malloc: sbrk 2695168, mmap 0, used 835536, free 1859632
  worker threads: 11 of 16 idle, 5/0/0/0 working, job queue: 0/0/0/0, scheduled: 4
  loaded plugins: charon pkcs11 aes des rc2 sha2 sha1 md5 mgf1 random nonce x509 revocation constraints pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem openssl gcrypt fips-prf gmp curve25519 agent xcbc cmac hmac attr kernel-netlink resolve socket-default farp stroke vici updown eap-identity eap-md5 eap-mschapv2 eap-tls eap-ttls xauth-generic dhcp addrblock counters
Listening IP addresses:
  10.0.0.1
  172.18.0.1
  172.17.0.1
Connections:
   ikev2-vpn:  %any...%any  IKEv2, dpddelay=300s
   ikev2-vpn:   local:  [server.somename.com] uses public key authentication
   ikev2-vpn:    cert:  "CN=server.somename.com"
   ikev2-vpn:   remote: uses EAP_MSCHAPV2 authentication with EAP identity '%any'
   ikev2-vpn:   child:  0.0.0.0/24 === 10.0.0.0/24 TUNNEL, dpdaction=clear
Security Associations (1 up, 0 connecting):
   ikev2-vpn[4]: ESTABLISHED 12 seconds ago, 10.0.0.1[server.somename.com]...213.147.166.1[user]
   ikev2-vpn[4]: IKEv2 SPIs: 3cdf025026a86a29_i a2f389a38a5326d4_r*, rekeying disabled
   ikev2-vpn[4]: IKE proposal: AES_CBC_128/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024
   ikev2-vpn{4}:  INSTALLED, TUNNEL, reqid 2, ESP in UDP SPIs: cdb9b943_i 083b3ef7_o
   ikev2-vpn{4}:  AES_CBC_256/HMAC_SHA2_256_128, 0 bytes_i, 0 bytes_o, rekeying disabled
   ikev2-vpn{4}:   0.0.0.0/24 === 10.0.0.0/24

答案1

你的左|右子网配置不正确。

你想用leftsubnet=0.0.0.0/0隧道传输所有数据,/24只传输到0.0.0.0-0.0.0.255将会通过隧道传输(但请注意,iOS 永远不会向服务器的公共 IP 以及它本身通过 VPN 连接到的子网发送流量)。

并且使用时虚拟 IP正确的来源IP设置)你不想设置右子网因为客户端的地址是动态分配的。因此只需删除该设置或将其设置为%动态的

相关内容