@alzhao
What I detected now is also that the Server keeps sending Keepalive-Requests when a Client gets disconnected.
This we detect on the wg0 (Wireguard Server from Interface) and also on the wg1 (S2S Wireguard Server):
interface: wg0
public key: xxxxxxxxxxxxxxxxxxxxx=
private key: (hidden)
listening port: 51820
peer: xxxxxxx=
endpoint: xxx.xxx.xxx.xxx:49543
allowed ips: 10.0.0.3/32
latest handshake: 6 days, 1 hour, 2 minutes, 43 seconds ago
transfer: 27.05 KiB received, 11.69 MiB sent
persistent keepalive: every 25 seconds
If we launch a tcpdump
on the source-port we see that the server is still sending keepalive-requests to this remote-ip-address:
root@FW-VPNGW:~# tcpdump port 49542
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on br-lan, link-type EN10MB (Ethernet), capture size 262144 bytes
19:38:28.033866 IP console.gl-inet.com.51820 > xxx.xxx.xxx.xxx.49542: UDP, length 148
19:38:33.068402 IP console.gl-inet.com.51820 > xxx.xxx.xxx.xxx.49542: UDP, length 148
19:38:38.353968 IP console.gl-inet.com.51820 > xxx.xxx.xxx.xxx.49542: UDP, length 148
19:38:44.108667 IP console.gl-inet.com.51820 > xxx.xxx.xxx.xxx.49542: UDP, length 148
In this case on the NAT-Firewall the Session will be kept open, because they still see this keepalive-traffic on the firewall. So in this case also if we have been disconnected since 6 days we cannot use this source-port to reconnect (in a S2S scenario).
So the question is:
- Why does the Server still keeps sending keepalives also when the client does a “clean” disconnect?
- Isn’t it enough if the client only sends this keepalive requests? Does the server also needs to send this?
I also found this thread on reddit
In your case I see that you always set the PersistentKeepalive to a fixed value of 25 - independently if it’s a server or if it’s a client:
wireguard_server startup script:
echo -e "PersistentKeepalive = 25\n" >>"$WFILE"
gl s2s startup script: (here it is a config-variable, but it’s not set on the s2s node)
config_get keepalive "${section}" "keepalive"
[ -n "${keepalive}" ] && echo "PersistentKeepalive = ${keepalive}" >> "${wg_cfg}"