If your public IP address is not static, it may have changed. Confirm that Asterisk SIP Settings → External Address is correct. If you change this, you must restart (not just reload) Asterisk.
Otherwise: Almost certainly, Asterisk is not seeing the 401 or is rejecting it.
At the Asterisk command prompt, type
pjsip set logger on
and see whether the 401 appears in the normal Asterisk log. It it does, there is likely an error message about its rejection. If the 401 does not appear, check whether it is seen by a tcpdump running on the Asterisk machine. If not there, either, it’s being blocked by something in your network infrastructure, or the outgoing request was malformed. If tcpdump does see the 401, it’s being blocked by the FreePBX firewall (very strange since replies are normally not filtered).
The REGISTER request (as shown by the pjsip logger) has a Via header, which must either contain Asterisk’s correct public IP address and port, or have the rport parameter. If this is wrong, check that in Asterisk SIP Settings, External Address and Local Networks are correctly set.
Also, make sure that any SIP ALG is turned off in your router or firewall.
If you still have trouble, please post: Cloud or on-site? If cloud, which platform?
For on-site systems: Physical or virtual? If virtual, which platform? If not using bridged networking, please explain. Router/firewall make/model? Any special VoIP-related settings? Does it have a public IP on its WAN interface? If not, please explain (modem is configured as router, ISP does NAT, etc.)
Was this installed from the Distro ISO? If not, how did you build it?
Anything else that may be relevant (Country, ISP, Modem make/model, trunking provider, etc.)?