Issues with Server with Public IP

I just installed the latest version of the Distro and upgraded all of the modules. The server has a public IP and is not nated. The phones that are connecting are nated and are not working properly. When I do sip show peers it is showing their internal IP and not the public IP as it should be showing.

Under Asterisk SIP Settings
NAT - Yes
IP Configuration - Public IP
(I have tried multiple variations with the same result)

Can someone please point me in the right direction.

This is a problem at the remote end with the firewall and or router configuration.

Make sure all ALG/SIP transform functionality is disabled in the router.

You also should not have the FreePBX distro connected to the Internet without a firewall (software or hardware).

I have IPTables with Fail2Ban running for now and plan on implementing a hardware firewall later. I have multiple sites doing the same thing with different routers. If I have them connect to a trixbox 2.6 or elastix box I do not have the problem. I am pretty certain it is a problem with the configuration on the FreePBX distro. I am not sure how to proceed with troubleshooting.

Are there any other NIC’s in the box?

Please post output of ‘sip show settings’ with the [code]tags[/code] so it’s easy to read.

 sip show settings


Global Settings:
----------------
  UDP Bindaddress:        0.0.0.0:5060
  TCP SIP Bindaddress:    Disabled
  TLS SIP Bindaddress:    Disabled
  Videosupport:           No
  Textsupport:            No
  Ignore SDP sess. ver.:  No
  AutoCreate Peer:        No
  Match Auth Username:    No
  Allow unknown access:   Yes
  Allow subscriptions:    Yes
  Allow overlap dialing:  Yes
  Allow promisc. redir:   No
  Enable call counters:   No
  SIP domain support:     No
  Realm. auth:            No
  Our auth realm          asterisk
  Use domains as realms:  No
  Call to non-local dom.: Yes
  URI user is phone no:   No
  Always auth rejects:    Yes
  Direct RTP setup:       No
  User Agent:             FPBX-2.9.0(1.8.7.1)
  SDP Session Name:       Asterisk PBX 1.8.7.1
  SDP Owner Name:         root
  Reg. context:           (not set)
  Regexten on Qualify:    No
  Legacy userfield parse: No
  Caller ID:              Unknown
  From: Domain:
  Record SIP history:     Off
  Call Events:            Off
  Auth. Failure Events:   Off
  T.38 support:           No
  T.38 EC mode:           Unknown
  T.38 MaxDtgrm:          -1
  SIP realtime:           Disabled
  Qualify Freq :          60000 ms
  Q.850 Reason header:    No
  Store SIP_CAUSE:        No

Network QoS Settings:
---------------------------
  IP ToS SIP:             CS3
  IP ToS RTP audio:       EF
  IP ToS RTP video:       AF41
  IP ToS RTP text:        CS0
  802.1p CoS SIP:         4
  802.1p CoS RTP audio:   5
  802.1p CoS RTP video:   6
  802.1p CoS RTP text:    5
  Jitterbuffer enabled:   No

Network Settings:
---------------------------
  SIP address remapping:  Disabled, no localnet list
  Externhost:             <none>
  Externaddr:             PUBLICIP:0
  Externrefresh:          10

Global Signalling Settings:
---------------------------
  Codecs:                 0x10e (gsm|ulaw|alaw|g729)
  Codec Order:            g729:20,ulaw:20,alaw:20,gsm:20
  Relax DTMF:             No
  RFC2833 Compensation:   No
  Symmetric RTP:          Yes
  Compact SIP headers:    No
  RTP Keepalive:          0 (Disabled)
  RTP Timeout:            30
  RTP Hold Timeout:       300
  MWI NOTIFY mime type:   application/simple-message-summary
  DNS SRV lookup:         No
  Pedantic SIP support:   Yes
  Reg. min duration       60 secs
  Reg. max duration:      3600 secs
  Reg. default duration:  120 secs
  Outbound reg. timeout:  20 secs
  Outbound reg. attempts: 0
  Notify ringing state:   Yes
    Include CID:          No
  Notify hold state:      Yes
  SIP Transfer mode:      open
  Max Call Bitrate:       384 kbps
  Auto-Framing:           No
  Outb. proxy:            <not set>
  Session Timers:         Accept
  Session Refresher:      uas
  Session Expires:        1800 secs
  Session Min-SE:         90 secs
  Timer T1:               500
  Timer T1 minimum:       100
  Timer B:                32000
  No premature media:     Yes
  Max forwards:           70

Default Settings:
-----------------
  Allowed transports:     UDP
  Outbound transport:     UDP
  Context:                from-sip-external
  Force rport:            Yes
  DTMF:                   rfc2833
  Qualify:                0
  Use ClientCode:         No
  Progress inband:        Never
  Language:
  MOH Interpret:          default
  MOH Suggest:
  Voice Mail Extension:   *97

You did not answer the question about how many NIC’s in the system?

Thanks for formatting the output, it is easy to read.

You don’t have a localnet setting, so Asterisk is not rewriting the packet.

It has two NICs but only one is being used and it has the public IP there is not private / nated IP on the system.

I just built my first PBX using the distro and I have the exact same problem. Just like you, my server is on a public IP and my phones is in a remote location using a NATed ip. I can connect this remote phone to a different server running FreePBX 2.7 just fine but when I connect the same remote phone to my newly built Distro it registers at it’s private IP rather than its public IP.

I’m wondering if you found a solution to his problem.

Under the extension what do you have NAt set to. It needs to be set to yes for any phone that is natted.

I should have thought to look there but on my other servers this is not a setting I have ever had to change. Maybe it defaults to yes on the older versions of FreePBX. Since all of my extensions will be NATed, do you know if there a place in the distro where I can set NAT=yes as a default setting for new extensions?

Changing the setting on the extension setup page solved the problem.

Thank you

I just found the answer to my question above. The default NAT setting is under Settings/Advanced Settings/Device settings.

Thanks again for the help.

Yes that is where you can set the default. Yes prior to FreePXB 2.9 the default was set to yes but due to security concerns we changed it.