Configuring External Extensions with 3CX PhoneSystem
Connecting an External Extension to 3CX PhoneSystem is often requested, and can be extremely useful for linking small remote offices and home workers. Here we get a shot at using other phones as External Extensions.
Using a SIP Hardphone as a Direct External Extension
For a SIP Phone to work as an External Extension, it will be necessary to configure some additional phone features – assuming that the features are available.
STUN Client Functionality
This is an absolute requirement for a phone to be able to function as an External Extension. The phone will use the services of a STUN Server to understand what its public IP Address is, and what port address translations will occur as the traffic it sends and receives to/from the PBX traverses the WAN-to-LAN boundary at the remote location.
Without STUN support, it will be necessary to perform some custom configurations on the WAN-to-LAN device in the remote location. This implies that you will need, for each phone in the remote location, to configure on the phones SIP and RTP ports that are unique for each unit, then also statically configure on the phone what is the public IP Address it is using, and then create the necessary port forwarding rules on the remote location’s WAN-to-LAN device. This is inconvenient to say the least, requires a static public IP Address at the remote location, and is definitely to be avoided for anything beyond casual use, or if you have absolutely no other option. Troubleshooting such setups can rapidly consume so much time that purchasing a phone device that has STUN support is a more cost-effective option.
Keep-Alive Functionality
A phone which is NAT-aware will almost always provide Keep-Alive functionality. The phone will periodically send keep-alive messages to the PBX. The scope of sending keep-alive messages is to ensure that the NAT mappings which the WAN-to-LAN device (between the phone and its internet connection) creates remain the same. Without this, shortly after the phone registers the NAT mapping on the WAN-to-LAN device would expire, and there would be no way for the WAN-to-LAN device to know where to route incoming SIP messages from the PBX to the phone.
RPort Functionality
RPort functionality is a SIP extension to add extra information about IP Address and Port translations. The device generating a SIP request adds a blank “rport” parameter to the VIA line in the packet indicating that RPort functionality is available before transmitting the SIP Packet. The receiving entity will detect this, and populate the “rport” field with the port number which was declared in the IP header as the source port, and also add a new “received” parameter and populate it with the IP Address which was declared in the IP header as the source IP Address.
A phone that has this functionality implemented can help reduce NAT traversal issues in several situations.
This functionality is not a necessity, but will allow the phone to work behind wider range of WAN-to-LAN devices.
Configuring an Aastra as an External Extension
To configure an Aastra as an External Extensions, you will need to start as if configuring for a LAN Extension, then do the following:
- In the “Advanced Settings -> Global SIP” page, go to the “Basic SIP Network Settings” section, and set the “Proxy Server” and “Registrar Server” fields to the public IP Address of the 3CX PhoneSystem machine
- In the “Advanced Settings -> Network” page, go to the “Advanced Network Settings” section, and set:
- “STUN Server” field to “stun.3cx.com”
- “Rport (RFC3581)” field to Enabled
Configuring a Cisco (or Linksys) SPA as an External Extension
To configure a Cisco SPA as an External Extensions, you will need to start as if configuring for a LAN Extension, then do the following:
- In the “Ext1″ page, go to the “Proxy and Registration” section, and set the Proxy IP Address to the public IP Address of the 3CX PhoneSystem machine
- In the “Ext1″ page, go to the “NAT Settings” section, and set the “NAT Mapping Enable” and the “NAT Keep Alive Enable” fields to “yes”
- In the “SIP” page, go to the “NAT Support Parameters” section, and set:
- “Handle VIA rport” field to “yes”
- “Insert VIA rport” field to “yes”
- “STUN Enable” field to “yes”
- “STUN Server” to “stun.3cx.com”
- “NAT Keep Alice Intvl” to “15″
Configuring a Grandstream GXP as an External Extension
To configure a Grandstream GXP as an External Extensions, you will need to start as if configuring for a LAN Extension, then do the following:
- In the “Advanced Settings” page, set:
- “keep-alive interval” field to “15″
- “STUN server” field to “stun.3cx.com”
- In the “Account 1″ page, set the “SIP Server” field to the public IP Address of the 3CX PhoneSystem machine
- In the “Account 1″ page, set:
- “Use RFC3581 Symmetric Routing” field to “Yes”
- “NAT Traversal (STUN)” field to “Yes”
Configuring a Polycom as an External Extension
Current firmware versions do not allow this functionality, since the Polycom does not have STUN functionality.
Configuring a Snom as an External Extension
To configure a Snom as an External Extension, you will need to start as if configuring for a LAN Extension, then do the following:
- In the “Identity 1″ page, go to the “Login” tab, and set the “Registrar” field to the public IP Address of the 3CX PhoneSystem machine
- In the “Identity 1″ page, go to the “NAT” tab, and set:
- “STUN server” field to “stun.3cx.com”
- “Keepalive interval” field to “15″
Configuring a Yealink as an External Extension
To configure a Yealink as an External Extension, you will need to start as if configuring for a LAN Extension, then do the following:
- In the “Account” page, select “Account 1″
- Go to the “Basic” section and set:
- “SIP Server” field to the public IP Address of the 3CX PhoneSystem machine (in this example 212.213.214.215)
- SIP Server “Port” field to the SIP listening port of the 3CX PhoneSystem machine (in this example 5060)
- “NAT Traversal” field to “STUN”
- “STUN Server” field to “stun.3cx.com”
- STUN Server “Port” field to 3478
- Go to the “Advanced” section and set:
- “UDP Keep-alive Message” field to “Enabled”
- “UDP Keep-alive Interval” field to “15″
- “RPort” field to “Enabled”
Using a SIP Hardphone as a Tunnelled External Extension
Using a phone as a Tunnelled External Extension will require you to have first established a 3CX Tunnel connection to the 3CX PhoneSystem from the Remote Office, by installing, on one of the PCs in the Remote Office, the 3CX SIP Proxy Manager.
Since the phone will communicate with the 3CX PhoneSystem machine locally, the phone must have STUN disabled.
Configuring the 3CX SIP Proxy Manager
At the remote site choose a PC that has internet access and install the 3CX SIP Proxy Manager. This is a simple application that will install the 3CX Tunnel Service and start it.
- On the machine which will be running the tunnel to the 3CX PhoneSystem, install the SIP Proxy Manager.
- Launch the SIP Proxy Manager.
- In the “SIP Listener IP address” field choose the IP Address on the SIP Proxy Tunnel machine which has internet access (in this example: 192.168.0.2).
- Leave the “SIP Listener Port” as default on 5080 – unless you have a need to change this.
- In the “Server Public IP address” field enter the public IP Address of the Office LAN (in this example: 213.165.190.51).
- Leave the “Server Tunnel Port” at the default value “5090”, unless you have changed your 3CX Phone System Tunnel Port while configuring the 3CX Phone System side.
- In the “Server Tunnel Password” to the same password used while configuring the 3CX Phone System side (in this example: “abc”)
- Click on the “Save Settings” button to commit your settings to the configuration file.
- Select the “File > Tunnel Proxy > Stop Tunnel” menu option to stop the Tunnel Service.
- Select the “File > Tunnel Proxy > Start Tunnel” menu option to start the Tunnel Service with the new settings.
Configuring a Cisco (or Linksys) SPA as a Tunnelled External Extension
To configure a Cisco SPA as a Tunnelled External Extension, you will need to start as if configuring for a LAN Extension, then do the following:
- In the “Ext1″ page, go to the “Proxy and Registration” section, and set:
- “Proxy” field to PRIVATE IP Address and SIP listening port of the 3CX PhoneSystem machine (in this example 10.0.0.11:5060)
- “Outbound Proxy” field to PRIVATE IP Address and SIP listening port of the 3CX SIP Proxy Manager machine (in this example 192.168.0.2:5080)
- “Use Outbound Proxy” field to “yes”
- “Use OB Proxy In Dialog” field to “yes”
Configuring a Grandstream GXP as a Tunnelled External Extension
To configure a Grandstream GXP as a Tunnelled External Extension, you will need to start as if configuring for a LAN Extension, then do the following:
- Go to the “Account 1″ page, and set:
- “SIP Server” field to the PRIVATE IP Address and SIP listening port of the 3CX PhoneSystem machine (in this example 10.0.0.11:5060)
- “Outbound Proxy” field to PRIVATE IP Address and SIP listening port of the 3CX SIP Proxy Manager machine (in this example 192.168.0.2:5080)
Configuring a Polycom SoundPoint / SoundStation as a Tunnelled External Extension
To configure a Polycom SoundPoint / SoundStation as a Tunnelled External Extension, you will need to start as if configuring for a LAN Extension, then do the following:
- Go to the “SIP” page
- In the “Server 1″ section, set:
- “Address” field to the PRIVATE IP Address of the 3CX PhoneSystem machine (in this example 10.0.0.11)
- “Port” field to the SIP listening port of the 3CX PhoneSystem machine (in this example 5060)
- In the “Outbound Proxy” section, set:
- “Address” field to the PRIVATE IP Address of the 3CX SIP Proxy Manager machine (in this example 192.168.0.2)
- “Port” field to the SIP listening port of the 3CX SIP Proxy Manager machine (in this example 5080)
Configuring a Snom as a Tunnelled External Extension
To configure a Snom as a Tunnelled External Extension, you will need to start as if configuring for a LAN Extension, then do the following:
- Go to the “Identity 1″ page, and in the “Login” tab, set:
- “Registrar” field to the PRIVATE IP Address of the 3CX PhoneSystem machine (in this example 10.0.0.11:5060)
- “Outbound Proxy” field to the PRIVATE IP Address and SIP listening port of the 3CX SIP Proxy Manager machine (in this example 192.168.0.2:5080)
Configuring a Yealink as a Tunnelled External Extension
To configure a Snom as a Tunnelled External Extension, you will need to start as if configuring for a LAN Extension, then do the following:
- In the “Account” page, select “Account 1″
- Go to the “Basic” section and set:
- “SIP Server” field to the PRIVATE IP Address of the 3CX PhoneSystem machine (in this example 10.0.0.11)
- SIP Server “Port” field to the SIP listening port of the 3CX PhoneSystem machine (in this example 5060)
- “Enable Outbound Proxy Server” field to “Enabled”
- “Outbound Proxy Server” field to the PRIVATE IP Address of the 3CX SIP Proxy Manager machine (in this example 192.168.0.2)
- Outbound Proxy Server “Port” field to the SIP listening port of the 3CX SIP Proxy Manager machine (in this example 5080)
External Extensions – Summary Table
| Brand | STUN | RPort | Direct Mode | Tunnel Mode |
| Aastra | YES | YES | YES | NO |
| Cisco | YES | YES | YES | YES |
| Grandstream | YES | YES | YES | YES |
| Linksys | YES | YES | YES | YES |
| Polycom | NO | NO | NO | YES |
| Snom | YES | YES | YES | YES |
| Yealink | YES | YES | YES | YES |



















[...] See original here: Configuring External Extensions with 3CX PhoneSystem [...]
One doubt:
On “Configuring a Grandstream GXP as an External Extension” section, one of the last items is:
In the “Account 1″ page, set:
* “Use RFC3581 Symmetric Routing” field to “Yes”
However, the picture shows this setting on “No”. What’s the correct one?
Fábio