big ICMP requests get disrupted on IPSec tunnel activation

From: Bartschies, Thomas
Date: Fri Sep 13 2019 - 08:25:19 EST


Hello together,

since kenel 4.20 we're observing a strange behaviour when sending big ICMP packets. An example is a packet size of 3000 bytes.
The packets should be forwarded by a linux gateway (firewall) having multiple interfaces also acting as a vpn gateway.

Test steps:
1. Disabled all iptables rules
2. Enabled the VPN IPSec Policies.
3. Start a ping with packet size (e.g. 3000 bytes) from a client in the DMZ passing the machine targeting another LAN machine 4. Ping works 5. Enable a VPN policy by sending pings from the gateway to a tunnel target. System tries to create the tunnel 6. Ping from 3. immediately stalls. No error messages. Just stops.
7. Stop Ping from 3. Start another without packet size parameter. Stalls also.

Result:
Connections from the client to other services on the LAN machine still work. Tracepath works. Only ICMP requests do not pass the gateway anymore. tcpdump sees them on incoming interface, but not on the outgoing LAN interface. IMCP requests to any other target IP address in LAN still work. Until one uses a bigger packet size. Then these alternative connections stall also.

Flushing the policy table has no effect. Flushing the conntrack table has no effect. Setting rp_filter to loose (2) has no effect.
Flush the route cache has no effect.

Only a reboot of the gateway restores normal behavior.

Is this a bug?

Best regards,
--
i. A. Thomas Bartschies
IT Systeme

Cornelsen Verlagskontor GmbH
Kammerratsheide 66
33609 Bielefeld
Telefon: +49 (0)521 9719-310
Telefax: +49 (0)521 9719-93310
thomas.bartschies@xxxxxx
http://www.cvk.de