我正在尝试将 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设置)你不想设置右子网因为客户端的地址是动态分配的。因此只需删除该设置或将其设置为%动态的。