Nat has to be no for Cisco phones but yes for Softphones!

Hey everyone,

For Cisco phones to work nat has to be no for each extension, if it’s yes then it doesn’t work at all. However, every softphone or SIP phone for iPhone I’ve tried will only work if nat = yes, otherwise it never connects. Is there any way around this?

I don’t believe that Cisco phones support NAT environments - they are designed for business environment where SIP traffic is internal or over VPNs.

You need to provide more information to work out what is happening.

Sure! Maybe I wasn’t clear enough. So in my office we have all Cisco SIP phones. For them to work though, in Asterisk each user extension needs to be nat=no as you said, which works fine. If it’s yes then as you mentioned as well it doesn’t work at all. That all works fine.

The problem is with softphones when I’m say at home or working remotely. So for example, using x-lite, or various SIP phones for iPhone and so on. Because nat=no, they never connect. They just say registering… failed. If I go into the extension and make nat=yes, then the softphones connect immediately no problem at all.

So just wondering if there’s any work around? Right now I have a separate extension made for when I’m remote but sort of a pain since defeats the purpose. Thanks!

Workaround implies something is wrong. Everything seems to be behaving as one would expect it to; you are likely to find that other sip.conf setting vary for such significantly different devices.

However, you do seem to be misusing “extension”, i.e confusing extension and device. You can, for example, have the same extension ring both devices in parallel, or you could make the extension call different devices depending on the time and date.

You could use a VPN to avoid having to configure the home phones as using NAT.

Let me clarify then, when I say extension I mean device because in FreePBX when I go to Extensions for each one, I have to put nat=no for the Cisco phones to work. The issue I’m saying is with softphones they need in the extension for it to be nat=yes. It’s not that important that I have SoftPhones and is a lot of work to get VPN at home just for this.

If I understand correctly though, what you’re suggesting is make an extension for home, or for my softphone, and then just use follow me so that when someone calls my main extension, it rings on my home or softphone extension at the same time? That definitely does work as well, except placing calls will show the house or whatever extension it is as calling vs myself. I was just wondering if I was missing something but doesn’t seem to be that way. Thanks!

You need NAT because they are at home, not because they are soft phones.

FreePBX may well confuse devices and extensions.

The suggestions I’m making are based on configuring Asterisk directly, namely either using & in the Dial application parameters, or using the GotoIfTime application.

what David said was correct; Cisco devices are design for VPN and LAN environments.

They can be extremely problematic for remote phones.

Internally or not they need NAT set to ‘no’, I am well aware of the issue at hand. I deal with this all the time.

If you want a hard phone remote, look at something else, preferably that doesn’t use TFTP or that has the ability to use FTP if you are going with a file transfer type phone. I would recommend something like an SPA942 however as it is a lot easier to configure form a remote standpoint.


Thanks everyone. Again I’m aware how it works, Cisco phones have to be Nat = no in the office. I don’t want to use a Cisco phone at home though. PRoblem I was having is that because nat has to be no for the phones to work in the office, no other sip phone or softphone will work from my home since they require nat to be yes so was wondering if there were any tricks but seems that this is by design. Thanks!


As I was said before, Cisco phones doe not support NAT environments they were designed for Internal LAN / VPN. If you want to have a mix local devices (In the same LAN) and remote devices, I would suggest that you specify NAT per device.

As an Example:



[101] ; Remote device

[102]; Local device

The problem is he is trying to overload two very different devices onto the same sip.conf entry, rather than just using the same extension and making the dial plan cope with routing to the one that is active at the time.