handshake always happens, it has nothing to do with PersistentKeepalive which is used for heartbeat purpose(let the middlebox not drop the wireguard UDP connection).

I guess I don’t understand when a handshake is supposed to happen; does it happen data is sent or does it happen at some other time as well (and what triggers it)?
AND
Apologies, I am not sure what was being asked of me with respect to the statement: “(let the middlebox not drop the wireguard UDP connection)”. Could you please clarify?

Could you export and send me the full log to email handongming@gl-inet

I could. Are you asking for something other than the log I posted in the original post at the top?
If so, how and where do you want me to get that from?

By the way, you can tweak the MTU to smaller one(go to page VPN dashboard - WireGuard Client Options), and change PersistentKeepalive smaller, eg, 15(edit the configuration file)

Ok. I did both. MTU 1320 and PersistentKeepalive to 15.
No change. Same problem.