I've been trying to diagnose a mysterious issue where a UDP state disappears before it's supposed to expire. I finally tracked it down to pfsync. On the primary server, the state entries look like:

all udp 198.148.6.55:9430 <- 10.128.110.73:9430       MULTIPLE:MULTIPLE
age 00:02:21, expires in 00:04:59, 34:34 pkts, 17887:20606 bytes, rule 64 all udp 96.251.22.157:58308 (10.128.110.73:9430) -> 198.148.6.55:9430 MULTIPLE:MULTIPLE age 00:02:21, expires in 00:04:59, 34:34 pkts, 17887:20606 bytes, rule 49

They shouldn't expire for five minutes. However, the same states, at the same time, on the backup server:

Thu Jun  4 18:17:27 PDT 2020
all udp 198.148.6.55:9430 <- 10.128.110.73:9430       MULTIPLE:MULTIPLE
   age 00:02:22, expires in 00:00:00, 0:0 pkts, 0:0 bytes
all udp 96.251.22.157:58308 (10.128.110.73:9430) -> 198.148.6.55:9430 MULTIPLE:MULTIPLE

expire. And then the synchronization from the backup to the primary removes them.

These two systems share a carp vip, and other than the macro defining the local IP address of each individual system, pf.conf is exactly the same on both.

How come when the state is transferred to the backup after initially being created on the primary, the state on the backup has the default timeout for udp multiple rather than the custom one defined in my rules:

match out on $ext_if from 10.128.0.0/16 nat-to $ext_vip
pass out quick on $ext_if proto udp tagged VOIP_UDP keep state (udp.multiple 360) pass in quick on vlan110 proto udp from any to port = 9430 tag VOIP_UDP keep state (udp.multiple 360)


That doesn't seem right. Am I missing something?

Thanks much.

Reply via email to