Вынужден настраивать сабжевую дичь. И эта дичь мне уже успела надоесть. Вот конфиг сервера:
include /var/lib/strongswan/ipsec.conf.inc
config setup
charondebug="ike 1, knl 1, cfg 0"
uniqueids=yes
conn ikev2-vpn
auto=add
compress=no
type=tunnel
keyexchange=ike
fragmentation=yes
forceencaps=yes
ike=aes256-sha1-modp1024,3des-sha1-modp1024!
esp=aes256-sha1,3des-sha1!
dpdaction=clear
dpddelay=300s
rekey=no
left=%any
leftid=@vpn.myhost.com
leftcert=/etc/ipsec.d/certs/vpn.myhost.com.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
leftfirewall=yes
right=%any
rightid=%any
rightauth=eap-mschapv2
rightdns=8.8.8.8,8.8.4.4
rightsourceip=10.10.102.0/24
rightsendcert=never
eap_identity=%identity
В ipsec.secrets указан приватный ключ сервера и связка логин+пароль: user01 : EAP «mypassword»
Клиент: Android 7.1. Настроен VPN «IPsec Hybrid RSA». Сертификат сервера импортирован на девайс. Но подключится не может. В логах сервера:
remote host is behind NAT
found 1 matching config, but none allows HybridInitRSA authentication using Main Mode
Эта дичь не может через NAT пробиться?
И что за HybridInitRSA ? В манах по ipsec такой опции нет.
Сервер на Debian 9.
IPtables на сервере:
-t nat -A POSTROUTING -s 10.10.102.0/24 -o eth0 -j MASQUERADE
-t nat -A POSTROUTING -s 10.10.102.0/24 -o eth0 -m policy --pol ipsec --dir out -j ACCEPT
-A FORWARD --match policy --pol ipsec --dir in --proto esp -s 10.10.102.0/24 -j ACCEPT
-A FORWARD --match policy --pol ipsec --dir out --proto esp -d 10.10.102.0/24 -j ACCEPT
-t mangle -A FORWARD --match policy --pol ipsec --dir in -s 10.10.102.0/24 -o eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
-A INPUT -p udp -m multiport --dports 500,4500 -j ACCEPT
P.S CN в сертификате сервера совпадает с адресом на который подключаюсь.
P.P.S CN указывает именно на домен, а не на IP.
P.P.P.S Strongswan приложение из маркета вообще не хочет подключаться. Под «вообще» подразумеваю нулевую активность как на сервере в логах, так и в самом приложении.