<div dir="ltr"><div><div><div>Hello,<br><br>I am trying to set up strongswan as a client to connect to a vpn server using EAP-TLS authentication. I have my connection set up as follows:<br><br><i>conn client<br>     keyexchange=ikev2<br>     right=<a href="http://myvpnserver.domain.com">myvpnserver.domain.com</a><br>     rightid=%<a href="http://myvpnserver.domain.com">myvpnserver.domain.com</a><br>     rightsubnet=<a href="http://0.0.0.0/0">0.0.0.0/0</a><br>     leftsourceip=%config<br>     leftauth=eap<br>     left=<a href="http://myclient.domain.com">myclient.domain.com</a><br>     leftid=username<br>     leftcert=server.crt.pem<br>     auto=add</i><br><br></div>When I enter "ipsec up client" I get a failure on the client side:<br><br><i>initiating IKE_SA client[1] to <vpn_server_ip><br>generating IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) ]<br>sending packet: from <client_ip>[500] to <vpn_server_ip>[500] (708 bytes)<br>received packet: from <vpn_server_ip>[500] to <client_ip>[500] (38 bytes)<br>parsed IKE_SA_INIT response 0 [ N(INVAL_KE) ]<br>peer didn't accept DH group MODP_2048, it requested MODP_1024<br>initiating IKE_SA client[1] to <vpn_server_ip><br>generating IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) ]<br>sending packet: from <client_ip>[500] to <vpn_server_ip>[500] (580 bytes)<br>received packet: from <vpn_server_ip>[500] to <client_ip>[500] (381 bytes)<br>parsed IKE_SA_INIT response 0 [ SA KE No V V N(NATD_S_IP) N(NATD_D_IP) CERTREQ ]<br>received cert request for "CN=rootCA, CN=Common Name, O=Company Name, OU=Organization, C=Country, ST=State, L=City, E=<a href="mailto:admin@domain.com">admin@domain.com</a>"<br>received 1 cert requests for an unknown ca<br>sending cert request for "CN=rootCA, CN=Common Name, O=Common Name, OU=Organization, C=Country, ST=State, L=City, E=<a href="mailto:admin@domain.com">admin@domain.com</a>"<br>establishing CHILD_SA client<br>generating IKE_AUTH request 1 [ IDi N(INIT_CONTACT) CERTREQ CPRQ(ADDR DNS) SA TSi TSr N(MOBIKE_SUP) N(NO_ADD_ADDR) N(EAP_ONLY) ]<br>sending packet: from <client_ip>[4500] to <vpn_server_ip>[4500] (380 bytes)<br>received packet: from <vpn_server_ip>[4500] to <client_ip>[4500] (1420 bytes)<br>parsed IKE_AUTH response 1 [ V IDr CERT AUTH EAP/REQ/ID ]<br>received end entity cert "CN=<a href="http://myvpnserver.domain.com">myvpnserver.domain.com</a>, C=Country, ST=State, O=Company, OU=Organization"<br>  using certificate "CN=<a href="http://myvpnserver.domain.com">myvpnserver.domain.com</a>, C=Country, ST=State, O=Company, OU=Organization"<br>  using trusted ca certificate "CN=rootCA, CN=Common Name, O=Company Name, OU=Organization, C=Country, ST=State, L=City, E=<a href="mailto:admin@domain.com">admin@domain.com</a>"<br>checking certificate status of "CN=<a href="http://myvpnserver.domain.com">myvpnserver.domain.com</a>, C=Country, ST=State, O=Company, OU=Organization"<br>certificate status is not available<br>  reached self-signed root ca with a path length of 0<br>authentication of '<vpn_server_ip>' with RSA signature successful<br>server requested EAP_IDENTITY (id 0x3B), sending 'username'<br>EAP_IDENTITY not supported, sending EAP_NAK<br>generating IKE_AUTH request 2 [ EAP/RES/NAK ]<br>sending packet: from <client_ip>[4500] to <vpn_server_ip>[4500] (76 bytes)<br>received packet: from <vpn_server_ip>[4500] to <client_ip>[4500] (76 bytes)<br>parsed IKE_AUTH response 2 [ N(AUTH_FAILED) ]<br>received AUTHENTICATION_FAILED notify error<br>establishing connection 'client' failed</i><br><br></div>On the server side, I am using remote authentication with RADIUS. The EAP request seems to be incomplete, or fails somehow:<br><br><i>rad_recv: Access-Request packet from host 10.89.150.210 port 1645, id=131, length=135<br>    Service-Type = Login-User<br>    Cisco-AVPair = "service-type=Login"<br>    Calling-Station-Id = "L2L40A5996D2ZO2L40A5996E3ZH11941194ZN1D"<br>    User-Name = "username"<br>    EAP-Message = 0x023b0006030d<br>    Message-Authenticator = 0xf62fa0a5eaba2ea387bd90c3cfe46c7f<br>    NAS-IP-Address = <vpn_server_ip><br># Executing section authorize from file /etc/raddb/sites-enabled/default<br>+- entering group authorize {...}<br>++[preprocess] returns ok<br>++[chap] returns noop<br>++[mschap] returns noop<br>++[digest] returns noop<br>[suffix] No '@' in User-Name = "username", looking up realm NULL<br>[suffix] No such realm "NULL"<br>++[suffix] returns noop<br>[eap] EAP packet type response id 59 length 6<br>[eap] No EAP Start, assuming it's an on-going EAP conversation<br>++[eap] returns updated<br>[files] users: Matched entry DEFAULT at line 50<br>++[files] returns ok<br>++[expiration] returns noop<br>++[logintime] returns noop<br>[pap] WARNING: Auth-Type already set.  Not setting to PAP<br>++[pap] returns noop<br>Found Auth-Type = EAP<br># Executing group from file /etc/raddb/sites-enabled/default<br>+- entering group authenticate {...}<br>[eap] Either EAP-request timed out OR EAP-response to an unknown EAP-request<br>[eap] Failed in handler<br>++[eap] returns invalid<br>Failed to authenticate the user.<br>Using Post-Auth-Type Reject<br># Executing group from file /etc/raddb/sites-enabled/default<br>+- entering group REJECT {...}<br>[attr_filter.access_reject]     expand: %{User-Name} -> username<br>attr_filter: Matched entry DEFAULT at line 11<br>++[attr_filter.access_reject] returns updated<br>Delaying reject of request 129 for 1 seconds<br>Going to the next request<br>Waking up in 0.9 seconds.<br>Sending delayed reject for request 129<br>Sending Access-Reject of id 131 to 10.89.150.210 port 1645<br>Waking up in 4.9 seconds.<br>Cleaning up request 129 ID 131 with timestamp +64810<br>Ready to process requests.<br><br></i></div>So here is my impression of what's happening, and correct me if I'm wrong: I think that on the strongswan side, EAP authentication is being used but there is no TLS happening. It seems like RADIUS is trying to determine whether the client is using TLS, MD5, etc. but fails to determine this. From the strongswan documentation I have gotten the idea that the client does not initiate EAP-TLS but it is enforced on the server side. Is there a way to do what I am trying to do?<br><br>Thanks in advance.<br></div>