Project

General

Profile

Issue #2931

No child SA negotiated when pool is temporarily full

Added by Robert Dahlem over 6 years ago. Updated over 6 years ago.

Status:
Closed
Priority:
Normal
Category:
configuration
Affected version:
5.5.1
Resolution:
No change required

Description

I have a server running Debian 9 and strongSwan 5.5.1. My Client is a Raspberry Pi running Raspbian 9 and strongSwan 5.5.1.

The server has an official IP address (94.x.y.z). The Raspi is on a private network where it uses 192.168.1.11. This private network is connected to the internet through a NAT dial-up router that gets disconnected for some minutes every night and then gets a new IP address. Don't ask, it is like it is. I have edited the dial-up routers IP address to 95.x.y.z before the disconnection and to 96.x.y.z after the reconnect.

The client gets a fixed private address 172.29.254.1 from the server, so the "pool size" is 1.

About once a week the client has problems to reconnect after the disconnection. In the server log I see:

peer requested virtual IP 172.29.254.1
pool '172.29.254.1' is full, unable to assign address
no virtual IP found for 172.29.254.1 requested by 'raspi'
no virtual IP found, sending INTERNAL_ADDRESS_FAILURE
looking for a child config for 94.x.y.z/32 === 0.0.0.0/0
proposing traffic selectors for us:
 94.x.y.z/32
proposing traffic selectors for other:
 dynamic
[…]
configuration payload negotiation failed, no CHILD_SA built
failed to establish CHILD_SA, keeping IKE_SA
generating IKE_AUTH response 5 [ AUTH N(AUTH_LFT) N(MOBIKE_SUP) N(ADD_4_ADDR) N(ADD_4_ADDR) N(ADD_6_ADDR) N(INT_ADDR_FAIL) ]

and only after a while:

lease 172.29.254.1 by 'raspi' went offline

while the client logs:

received INTERNAL_ADDRESS_FAILURE notify, no CHILD_SA built
failed to establish CHILD_SA, keeping IKE_SA

So basically, the server did not free the lease from the "pool" yet, refuses to assign another virtual IP because the "pool" is full and no Child SA is established.

After that they keep happily sending DPD requests and keep alive packets to each other but make no attempts to establish a new child SA. Shouldn't the server drop the IKE SA in this case? Or do I have a configuration issue?

client.conf (527 Bytes) client.conf client configuration Robert Dahlem, 19.02.2019 17:05
client.log (20.4 KB) client.log client log Robert Dahlem, 19.02.2019 17:05
client.status (1.5 KB) client.status client: ipsec statusall Robert Dahlem, 19.02.2019 17:05
server.conf (672 Bytes) server.conf server configuration Robert Dahlem, 19.02.2019 17:05
server.log (9.65 KB) server.log server log Robert Dahlem, 19.02.2019 17:05
server.status (2.17 KB) server.status server: ipsec statusall Robert Dahlem, 19.02.2019 17:05

History

#1 Updated by Tobias Brunner over 6 years ago

  • Category set to configuration
  • Status changed from New to Feedback

Shouldn't the server drop the IKE SA in this case?

Eventually it will (after DPD kills it, also see Retransmission), but not when the client re-connects because you told it not to do so: uniqueids=never.

#2 Updated by Robert Dahlem over 6 years ago

I have uniqueids=never so that my road warriors can connect multiple times simultaneously using the same credentials. Unfortunately, this is a global option, so I can't configure it for the road warrior connections only. It seems like I'm stuck. Or do you have a better suggestion?

#3 Updated by Tobias Brunner over 6 years ago

Unfortunately, this is a global option,

It is with the deprecated ipsec.conf, it's not with swanctl.conf.

#4 Updated by Robert Dahlem over 6 years ago

I migrated my configuration from ipsec.conf to swanctl.conf. As you said I can configure unique per connection. Thank you!

You can close this issue.

#5 Updated by Tobias Brunner over 6 years ago

  • Status changed from Feedback to Closed
  • Assignee set to Tobias Brunner
  • Resolution set to No change required