I’m trying to get three Cisco 7941’s working behind NAT with a hosted installation of FreePBX on Amazon EC2.
I have FreePBX installed on Amazon EC2 and have configured the NAT settings (under Settings > Asterisk SIP Settings). I’ve got NAT set to “Yes”, IP Configuration set to “Static IP” and the External IP set to my EC2 instance’s public IP. I’ve then added the IP range of my internal network (hosted at my office), which is behind a NAT router.
I’m using OSS Endpoint Manager to create the configuration files, and I can confirm that the files are valid XML and contain the correct SIP credentials (by manually editing the files in a text editor on the VM itself).
When the phone boots up it correctly connects to the TFTP server (also hosted on the EC2 box) and pulls down the config file. I’m verifying this by checking the logs on the Cisco’s web interface. It also updates the phones display name and updates the line buttons. However it just won’t register. And I can register a softphone (Zoiper) on my Android phone successfully and make and receive calls.
I’ve tried changing the NAT settings for the extension to “yes”, “no” and “never” without success. I’ve tried changing the NAT settings for asterisk to “no” as well as changing the IP Configuration to “Public IP” (however when I do that I can’t hear audio on a softphone). I can register these phones with a different PBX (hosted locally), so it seems to be something to do with the NAT traversal.
If I do a
sip set debug on I can see the phone is successfully communicating with the FreePBX server and is sending a registration request. However the server is sending back a 401/Unauthorized.
I don’t understand why it’s sending this so if anyone has any suggestions I’d be very appreciative. If you need other console/debug output let me know.