Never seen this before, the only thing different in this setup than a dozen other ones I've done, is the version of FreePBX
I have another identical setup running FreePBX 22.214.171.124 - no problems
Same hardware, same firewall, same SIP provider
I've had the SIP provider look at it too. The symptoms:
Remote extension connecting over VPN, can dial out fine, but inbound calls ring straight to VM, because the phone is shown as "unavailable".
SIP trunk, inbound calls work fine, but outbound calls fail (congestions) due to trunk unavailable. The SIP provider see the registration as up.
when you run "sip show peers"
username, port, status "unreachable"
WARNING[0m: [1;37mapp_dial.c[0m:[1;37m2341[0m [1;37mdial_exec_full[0m: Unable to create channel of type 'SIP' (cause 20 - Subscriber absent)
Executing [s@macro-dialout-trunk:23] [1;36mNoOp[0m("[1;35mSIP/199-00000649[0m", "[1;35mDial failed for some reason with DIALSTATUS = CHANUNAVAIL and HANGUPCAUSE = 20[0m")
(sorry for the garbage, output got garbled some)