Courseware:IT Advanced - 07 Public access to PBX resources (practice)
How to setup your system for access from/through the internet
About this book
This book talks about setting up a reverse proxy from a practical point of view. As such, it talks mostly about how to set it up, not so much about why. While this is sufficient for setting up the system, a deeper understanding of how these things work is useful when it comes to troubleshooting. This is provided by the previous book
And as you know, you won't have the luxury to delve into concepts once it's time to troubleshoot. So we recommend to do it now ![]()
Providing access
Port forwarding
mobile phone with mobile internet access
), it can not connect to the devices within the private network (e.g. the PBX) directly.Reverse proxy
Selective forwarding
no way to differentiate.
messy and hard to maintain setup.Reverse proxy
receives connections from the internet router via port forwarding
and is able to filter legitimate requests and forward them to the appropriate target. - listens on the ports used by the protocols it handles (HTTP/S, H323 TCP/TLS, SIP/S, LDAP/S, SMTP/S)
- incoming connections are immediately accepted (that is, the TCP connection is terminated locally on the reverse proxy)
- incoming data is buffered and looked at until a routing decision can be taken (deep packet inspection)
- if there is a defined target for the incoming connection, a new connection is established to the target service (e.g. the PBX)
- if this connection is accepted and not disconnected immediately, the original connection is kept and all traffic is passed back and forth between the two ends
- otherwise, the original connection is closed
- if a requester sends too many rejected connection establishments in a period of time, the requester is put on a black-list for a while
- requests from requesters on the black-list are rejected no matter what
- a
port to listen to for each protocol (protocols where no port is defined are not used by the RP at all) - a set of
conditions the incoming request must match. The exact nature of the condition(s) depends on the protocol (we'll see that later) - a target (IP address and port) for each local connection depending on the fulfilled condition
Outgoing connections
do not pass through the reverse proxy
and also do not require any port forwarding on the internet router.Media data
media data behaves a bit different and therefore other solutions are required (if you feel like digging more in to the details, see STUN
peers within two different private networks need to communicate. Neither of the phones have a public IP address the data could be sent to.
send a request to the STUN server
that allows them to find out the public IP address of their respective routers. These addresses are then exchanged (using the SIP or H.323 signalling, not RTP) and both phones now know where to send their data to.
A STUN server is required and it must have a public IP address. Different peers can use the same STUN server or use different STUN servers.
It is not a good idea to use innovaphone's STUN server. Although this server would yield the same results, there is no guarantee of availability. Your ISP or SIP provider's STUN should do better.TURN
located in one of the customers locations
(usually the headquarters).
In this scenario it is essential that all peers use the same TURN server.
provided that all of them have a public IP address (that is, reside in the internet). This requirement is usually hard to fulfill for customers. STUN/TURN/RTP and Firewalls
Checking the candidates in myApps
see the result of an ICE negotiation in the settings and verify that it matches your expectations (especially the SRFLX (STUN) and RELAY (TURN) candidates cause those depend on your correct configuration). Summary
In order for the system to work properly, you must use proper STUN and TURN server!The full picture
Looks more difficult as it is, because you can run the PBX, TURN server, reverse proxy and SBC on the same innovaphone box!
One common setup is to
have the PBX in the private network and one additional box that runs SBC, reverse proxy and TURN server in a DMZ.Port conflicts
This is why the RP must be configured to listen on non-standard ports for all services when it runs on a box where a PBX runs.- clients will send their requests to standard ports (so that you don't have to fiddle around with non-standard protocol ports on all devices)
- therefore, your internet router needs port forwardings for standard ports
- however, it forwards them to the RP on non-standard ports
- the RP listens on those non-standard ports
- and forwards requests to the PBX (and other boxes) on the standard ports again
- the standard TURN port is forwarded on a standard port directly to the PBX
More details on RP conditions
HTTP
GET /somepathHost: hq.dvl-ckl2.net
rule for Host hq.dvl-ckl2.net with an http://<host> entry that matches /somepath.- one of the defined URLs must match the initial part of the requested URL (head match)
- if the matching defined URL ends with a slash (/), the remainder of the requested URL (the unmatched part) must not contain a slash
tick the Default check-mark. H.323
- the gatekeeper id has the format [physical-location@]domain[/registration-location]
(both physical-location and registration-location are optional) - the physical-location is ignored by the RP for routing decisions
- the registration-location is ignored by the PBX during registration
The physical-location specifies the (geographic) place where a user's device resides. The registration-location however specifies the PBX where the user's registration takes place. Often these two locations are identical but they don't need to be. These concepts are discussed in more detail in the Master-Slave Operation topic which is part of the
Plus subscription.
hq@dvl-ckl2.net/branch-b
dvl-ckl2.net/branch-b
two separate Hosts entries: - the first for dvl-ckl2.net, forwarding to the master PBX (172.31.31.2)
- the second for dvl-ckl2.net/branch-b, forwarding to the slave PBX (172.31.31.3)
- a third entry for dvl-ckl2.net/hq, which is a duplicate of the dvl-ckl2.net entry (as far as H.323 is concerned). This entry would be used for example when the slave PBX redirects a registration for a user who is on the master PBX
SIP
LDAP
SMTP
- SNI.
If the connection is made using TLS and the client sends an SNI, this is examined - EHLO hostname.
The client hostname found in the EHLO message is examined - AUTH.
If there is an AUTH PLAIN login, the username is examined - RCPT-TO.
Finally, both the full recipient address and the domain part of the recipient address are examined
DNS
simple scenario
where two IP phones A (local to the PBX) and B (remote) need to register with the master PBX. The master PBX has the domain name hq-dvl-ckl2.training.innovaphone.com. So this is configured as Primary Gatekeeper on all devices.
deploy additional internal DNS servers for each location with local resources. They are configured such that locally available devices resolve with their local IP address. All other name requests are forwarded to the official DNS and resolve to the respective public IP address.Where to run the internal DNS
Note however that this DNS must be used not only by all telephony devices but also by all PCs running myApps.How to make sure devices are using the "right" DNS?
You could be tempted to add both the internal and the external DNS as value for DHCP option 6 (DNS) so that the external DNS is used as a secondary DNS. However, specifying multiple DNS servers is like saying "here are some DNS servers, use whichever you like". This of course is not what you want to do.What if I can't run an internal DNS?
- it might just not work

For this to work, your internet router must support hair-pinning. Not all do - it imposes extra (and useless) load on your internet router
In a smaller scenario this is usually not an issue. However, for larger sites, this may create issues
Reverse proxy and certificates
Server certificate validation
The Connector for Let's Encrypt helps big time to maintain such certificates Client certificate validation
- the reverse proxy must trust the incoming client certificates (that is, their root certificate must be included in the RPs trust list)
- the RP rules for H.323 and SIP must always have both the plain and secure target ports defined (for details on this see the Reverse Proxy and PBX Interaction chapter in
Public Access to PBX Resources (theory) - optional ) - the PBX must have the
IP address and certificate CN of its RP set in PBX/Config/General/Reverse Proxy Addresses and the Assume TLS check-mark ticked
Sample scenario
So this is a good time to load the start configuration
See The complete reference
master-slave sample scenario in the training setup, we need to modify the
full public access scenario as discussed in chapter The full picture above: - we remove the phone in remote network (IP Phone B) as we do not have this in our training
- master PBX, RP for location hq, TURN server and SBC run on the IP411LEFT (172.31.31.2)
- the AP runs on the IP411LEFT (172.31.31.12)
- a slave PBX and RP for location branch-b is running on the IP811 (172.31.31.3)
- we use your trainee network (that is, the network you plugged your IP411RIGHT into) to simulate the internet
- your internet router for hq is the IP411RIGHT (172.31.31.2 with a fictitious public IP address 172.100.0.1)
- we simulate an official DNS on the IP411RIGHT
- we simulate an internal DNS for location hq on the IP411LEFT
- we simulate an internal DNS for location branch-b on the IP811
- both master and slave PBX are located in the same private network (hence behind the same internet router)
- your internet router for branch-b (with a fictitious public IP address of 172.200.0.1) does not exist, as we do not have enough devices. We therefore route IP traffic for branch-b also through 172.100.0.1 (the IP411RIGHT) to the RP at 172.31.31.2 which also handles branch-b.
This of course is not what happens in a real-life scenario. In a real-life scenario, the IP traffic would be sent though branch-b's internet router (172.200.0.1) to branch-b's RP (172.31.31.3). Sounds a bit confusing but in fact it does change the configuration only slightly - we'll come back to these details later on - as we have only one internet router (the IP411RIGHT), we can only forward IP traffic to one location behind it. We will forward packets to the hq RP. In other words: the RP in branch-b will never be used, instead the RP on hq must implement the settings for branch-b too
- devices in location branch-b will send traffic for devices in location hq to hq's internet router, which is the IP411RIGHT. As this is also the internet router for branch-b itself, we use hairpinning here (that is, packets sent to the external IP of the IP411RIGHT will be forwarded back to the hq devices through the same network (which is your trainee network))
- finally, we omit the SIP trunks as it adds complexity but does not change any of the mechanisms discussed in this book
Port forwardings on your internet router
| Service | Protocol | Port | Destination address Address | Destination port Int. Port (optional) |
| TURN | UDP | 3478 | TURN server on IP411LEFT 172.31.31.2 | + |
| TURN | TCP | 3478 | TURN server on IP411LEFT 172.31.31.2 | + |
| HTTP / WS§ | TCP | 80 | RP on IP411LEFT 172.31.31.2 | 90* |
| HTTPS / WSS§ | TCP | 443 | RP on IP411LEFT 172.31.31.2 | 453* |
| LDAP | TCP | 389 | RP on IP411LEFT 172.31.31.2 | 399* |
| LDAPS | TCP | 636 | RP on IP411LEFT 172.31.31.2 | 646* |
| SIP# | TCP | 5060 | RP on IP411LEFT 172.31.31.2 | 5070* |
| SIPS# | TCP | 5061 | RP on IP411LEFT 172.31.31.2 | 5071* |
| H.323 TCP | TCP | 1720 | RP on IP411LEFT 172.31.31.2 | 1730* |
| H.323 TLS | TCP | 1300 | RP on IP411LEFT 172.31.31.2 | 1310* |
| § WS/WSS may differ from HTTP/HTTPS when using a firewall # only required if SIP endpoints are used, not for SIP trunks + standard port used, can be left empty * non-standard port used by RP | ||||
If you intend to use a separate box for the RP and/or TURN server (e.g. one located in the DMZ), then you would forward to this box instead. STUN/Turn settings
| Setting | Recommended Value | Remark | Created OK by Install? |
| STUN server | STUN server provided by your SIP provider | You should avoid using stun.innovaphone.com as there is no service level agreement in place if you do so | |
| TURN server | hq-dvl-ckl2.training.innovaphone.com | The Install has set up a TURN server on your master PBX | |
| TURN username | your-choice | Your TURN server should not be used by 3rd parties easily, so better use a strong password | |
| TURN password | your-choice |
using hq-dvl-ckl2.training.innovaphone.com as DNS name for the TURN server implies that the TURN server runs on the master PBX. Local clients would resolve that to the local IP address of the master PBX, remote clients would resolve it to the external address of the headquarters internet router (from where it would be port-forwarded to the master PBX). DNS settings
DNS names in the official DNS
If you have a fixed IP address
| Remark | Type of entry | Name | Value |
| router hq | A | router-hq-dvl-ckl2.training.innovaphone.com | 172.100.0.1§ |
| router branch-b | A | router-branch-b-dvl-ckl2.training.innovaphone.com | 172.200.0.1# |
| master PBX | CNAME | hq-dvl-ckl2.training.innovaphone.com | router-hq-dvl-ckl2.training.innovaphone.com |
| AP | CNAME | apps-dvl-ckl2.training.innovaphone.com | router-hq-dvl-ckl2.training.innovaphone.com |
| slave PBX | CNAME | branch-b-dvl-ckl2.training.innovaphone.com | router-branch-b-dvl-ckl2.training.innovaphone.com |
| § external address of hq's internet router # external address of branch-b's internet router |
| Remark | Type of entry | Name | Value |
| master PBX | A | hq-dvl-ckl2.training.innovaphone.com | 172.100.0.1§ |
| AP | A | apps-dvl-ckl2.training.innovaphone.com | 172.100.0.1§ |
| slave PBX | A | branch-b-dvl-ckl2.training.innovaphone.com | 172.200.0.1# |
| § external address of hq's internet router # external address of branch-b's internet router |
If you don't have a fixed IP address
| Remark | Type of entry | Name | Value |
| router hq | CNAME | router-hq-dvl-ckl2.training.innovaphone.com | yourhost-hq.yourdyndns.tld |
| router branch-b | CNAME | router-branch-b-dvl-ckl2.training.innovaphone.com | yourhost-branch-b.yourdyndns.tld |
| master PBX | CNAME | hq-dvl-ckl2.training.innovaphone.com | router-hq-dvl-ckl2.training.innovaphone.com |
| AP | CNAME | apps-dvl-ckl2.training.innovaphone.com | router-hq-dvl-ckl2.training.innovaphone.com |
| slave PBX | CNAME | branch-b-dvl-ckl2.training.innovaphone.com | router-branch-b-dvl-ckl2.training.innovaphone.com |
| Remark | Type of entry | Name | Value |
| router hq | A | yourhost-hq.yourdyndns.tld | 172.100.0.1§ |
| router branch-b | A | yourhost-branch-b.yourdyndns.tld | 172.200.0.1# |
| § external address of hq's internet router # external address of branch-b's internet router |
We're not going to use DynDNS in this course though.DNS names in the internal DNS for hq
| Remark | Type of entry | Name | Value |
| master PBX | A | hq-dvl-ckl2.training.innovaphone.com | 172.31.31.2 |
| AP | A | apps-dvl-ckl2.training.innovaphone.com | 172.31.31.12 |
DNS names in the internal DNS for branch-b
| Remark | Type of entry | Name | Value |
| slave PBX | A | branch-b-dvl-ckl2.training.innovaphone.com | 172.31.31.3 |
If you run a separate TURN server
If you intend to use a separate box for TURN (e.g. one located in the DMZ), then you need another DNS name turn-dvl-ckl2.training.innovaphone.com. | Remark | Type of entry | Name | Value |
| TURN | CNAME | turn-dvl-ckl2.training.innovaphone.com | router-hq-dvl-ckl2.training.innovaphone.com |
In addition to that, you would add an entry in the headquarters' (or wherever you placed your TURN server) internal DNS that points to your extra box:
| Remark | Type of entry | Name | Value |
| local TURN | A | turn-dvl-ckl2.training.innovaphone.com | local-ip-of-your-turn-server |
The Install does not create any of these entries. This is because in real-life, you would probably use your existing DNS infrastructure for this. Firewall settings
Reverse Proxy settings
Service Ports
Set standard ports (public IP) is not ticked.| Service | TCP Port | TLS Port | Remark |
| H.323 | 1730 | 1310 | All services accepted on standard port + 10 |
| SIP | 5070 | 5071 | |
| LDAP | 399 | 646 | |
| HTTP | 90 | 453 |
In a real-world (not training) scenario, if you choose to run the RP on a dedicated box (e.g., in a DMZ), you could forward to standard ports (since there would be no port conflicts on that box). However, for simplicity and uniformity, you may still want to use non-standard ports. This way, the configuration of your RPs and Internet routers will be similar in all locations. | Setting | Recommended Value | Remark | Created by PBXManager? |
| No IPv4 | off | This flag disables IPv4 for the reverse proxy | |
| No IPv6 | off | This flag disables IPv6 for the reverse proxy | |
| Log Forwarded Requests | off | No normal logs should be turned on unless you are debugging an issue | |
| Log Rejected Requests | on | To see issues in the Logging App | |
| Blacklist Expiration (min) | 5 | To avoid manual intervention if a client ends up in the blacklist for whatever reason | |
| Suspicious Requests/min | 20 | | |
| Public NAT router address | 172.100.0.1 / 172.200.0.1 | must be set for incoming SIP requests to the public address of your NAT router, depending on the location (remember that 172.100.0.1/172.100.0.1 must be replaced by your internet routers IP address). You can leave this field empty if the RP also performs the NAT router function. If your NAT router offers different SIP ports (default 5060 and 5061), then you have to specify the port to be used. Since only one port can be specified, only either SIP/TCP or SIP/TLS will work. only if SIP is required (e.g. 3rd party devices).SIP trunks do not require this! | |
Hosts
As we already discussed before, the RP in branch-b won't be used at all as we do not have an internet router in branch-b which would forward traffic to this RP. Instead, all traffic is forwarded to the RP in hq and we will configure the host entries that are required for branch-b on the RP in hq. In real life however, you would obviously configure the entries required for branch-b on the RP in branch-b. Hosts for hq
apps-dvl-ckl2.training.innovaphone.com
| Service | Path | Target (Out) | TCP Port | TLS Port | Remark | Created by PBXManager? |
| H.323 | not forwarded | |||||
| SIP | not forwarded | |||||
| LDAP | 172.31.31.12 | 389 | 636 | to access Contacts, e.g. with a bind user apps-dvl-ckl2.training.innovaphone.com\contacts | ![]() | |
| HTTP | 172.31.31.12 | 80 | 443 | wildcard, e.g. https://apps-dvl-ckl2.training.innovaphone.com | |
hq-dvl-ckl2.training.innovaphone.com
| Service | Path | Target (Out) | TCP Port | TLS Port | Remark | Created by PBXManager? |
| H.323 | not forwarded | |||||
| SIP | not forwarded | |||||
| LDAP | 172.31.31.2 | 389 | 636 | to access the master PBX LDAP, e.g. with a bind user hq-dvl-ckl2.training.innovaphone.com\ldap-guest | | |
| HTTP | /PBX0/APPCLIENT/appclient.htm | 172.31.31.2 | 80 | 443 | myApps client, e.g. https://hq-dvl-ckl2.training.innovaphone.com/PBX0/APPCLIENT/appclient.htm | |
| HTTP | /PBX0/APPS | 172.31.31.2 | 80 | 443 | PBX apps | |
| HTTP | /PBX0/session. | 172.31.31.2 | 80 | 443 | myApps two-factor authentication | |
| HTTP | /PBX0/user.soap | 172.31.31.2 | 80 | 443 | only if TAPI or SOAP API is used | |
| HTTP | /OAUTH2/oauth2_login | 172.31.31.2 | 80 | 443 | only if OAuth2 authentication is used | |
dvl-ckl2.net
| Service | Path | Target (Out) | TCP Port | TLS Port | Remark | Created by PBXManager? |
| H.323 | 172.31.31.2 | 1720 | 1300 | Check Certificate must be ticked e.g. to register at the master PBX with a gatekeeper id location@dvl-ckl2.net or dvl-ckl2.net | | |
| SIP | 172.31.31.2 | 5060 | 5061 | only if SIP registration is required (e.g. 3rd party devices). SIP trunks do not require this!Check Certificate must be ticked e.g. to register at the master PBX with a From: address user@dvl-ckl2.net | | |
| LDAP | 172.31.31.2 | 389 | 636 | to access the master PBX LDAP, e.g. with a bind user dvl-ckl2.net\ldap-guest | | |
| HTTP | | not forwarded |
Note that the LDAP entry here is redundant to the LDAP entry for hq-dvl-ckl2.training.innovaphone.com. It is a convenient short-hand for addressing the LDAP server on the master PBX. However, being a redundant shorthand, it is optional. Hosts for branch-b
branch-b-dvl-ckl2.training.innovaphone.com
| Service | Path | Target (Out) | TCP Port | TLS Port | Remark | Created by PBXManager? |
| H.323 | not forwarded | |||||
| SIP | not forwarded | |||||
| LDAP | 172.31.31.3 | 389 | 636 | to access the slave PBX LDAP with a bind user branch-b-dvl-ckl2.training.innovaphone.com\ldap-guest | | |
| HTTP | /PBX0/APPCLIENT/appclient.htm | 172.31.31.3 | 80 | 443 | myApps client, e.g. https://branch-b-dvl-ckl2.training.innovaphone.com/PBX0/APPCLIENT/appclient.htm | |
| HTTP | /PBX0/APPS | 172.31.31.3 | 80 | 443 | PBX apps | |
| HTTP | /PBX0/session. | 172.31.31.3 | 80 | 443 | myApps two-factor authentication | |
| HTTP | /OAUTH2/oauth2_login | 172.31.31.3 | 80 | 443 | only if OAuth2 authentication is used | |
| HTTP | /PBX0/user.soap | 172.31.31.3 | 80 | 443 | only if TAPI or SOAP API is used | |
dvl-ckl2.net/branch-b
The Settings App will not create this entire host entry, so you need to configure it yourself. | Service | Path | Target (Out) | TCP Port | TLS Port | Remark | Created by PBXManager? |
| H.323 | 172.31.31.3 | 1720 | 1300 | Check Certificate must be ticked e.g. to register at the slave PBX with a gatekeeper id location@dvl-ckl2.net/branch-b or dvl-ckl2.net/branch-b | | |
| SIP | 172.31.31.3 | 5060 | 5061 | only if SIP registration is required (e.g. 3rd party devices). SIP trunks do not require this!Check Certificate must be ticked e.g. to register at the slave PBX with a From: address user@dvl-ckl2.net/branch-b | | |
| LDAP | not forwarded | |||||
| HTTP | | not forwarded |
Custom certificates
Installing the connector
To do this configuration, you need to login to myApps (http://hq-dvl-ckl2.training.innovaphone.com/PBX0/APPCLIENT/appclient.htm?lang=en) and login as user ckl with password ip411).
To install the connector, proceed as follows:- start the Settings App App
- start the AP app installer plugin
- type encrypt in to the search field on the upper right
- click on Connector for Let's Encrypt
- select the srTraining version
- accept the terms of use
- when the installation is done, close the entire Settings App App
- and start it again. You will see a new AP letsencrypt entry.
If the AP letsencrypt entry is missing, it is probably because either the instance or the entire service does not run. In this case, open the AP Manager and start both the service and the instance.
Here is how:- click on the new AP letsencrypt icon
- open the Settings area
- tick the Enable check-mark
- leave the Let's Encrypt directory URL as is (but see below!)
- agree to the subscriber agreement
- set a Client password
This password is the password all client devices (that is, the devices which shall receive a certificate) need to know. The connector is a bit picky here, so we cannot use our usual password here. Instead, in this course, use ip411ip411
- you can leave the value for Certificate installation before expiry (days) as is (which is 3)
This is done by changing the Let's Encrypt directory URL to the URL of their staging environment: https://acme-staging-v02.api.letsencrypt.org/directory.Using the LE staging environment ensures that we do not run into problems caused by misconfiguration (e.g. throttling imposed by LE if too many certificates are requested). On the other hand, LE will issue certificates that are not signed by a known CA. Your browser will therefore not trust these certificates unless you have manually added them to the browser's trust list (e.g. when accessing myApps with https). This is only an issue if you are using the staging environment. In real life this won't be necessary!
Requesting a certificate for your AP
see in the AP's Settings / Security menu (accessible from the Burger menu), your AP still has the hard-wired default certificate installed.
To change that, we need to configure the Let's Encrypt client on the AP as follows (use the AP manager App for this)- go to Settings / Let's Encrypt (accessible from the burger menu)
- tick the Enable check-mark
- set the Let's Encrypt App URL to the service URL of your Connector for Let's Encrypt App instance: wss://apps-dvl-ckl2.training.innovaphone.com/dvl-ckl2.net/letsencrypt/clients
You can copy this
from the Client URL field in the AP letsencrypt Settings App plugin - set the Let's Encrypt App Password to the value you have set as Client password in the Let's Encrypt App service instance configuration (didn't you take note of it? never mind, it is ip411ip411)
- set the Key length (bit) to 2048 bits. Never use another value unless you really know what you do
This is because changing the certificate's key length to a higher value would impact the performance of your system significantly, as it slows down each and any TLS connection establishment - set the DNS name(s) to the DNS name of your AP: apps-dvl-ckl2.training.innovaphone.com
- hit the Save button. Make sure there is no The changes have failed message near to the button. If so, make sure you filled in all the fields (including selecting the 2048bit key length)
The DNS name must be functional in your DNS system and must point to a device that allows external TCP access to the device for which the certificate is intended on port 80 (HTTP). LE will use this DNS to connect to it, thus verifying that you are the owner of this DNS domain. In practice, this will probably be your Internet router with port forwarding or a reverse proxy.It's a good time to have a cup of coffee now (well then, perhaps better an even quicker espresso) until you see the
new device certificate appearing in burger menu / Settings / Security.Deploying LE's trust list to all devices
the Certificates device configuration in the Devices App.
To deploy LE's root certificates to the trust list of all devices, you need to follow these steps:- open the Settings App App
- start the AP letsencrypt plugin
- click on Settings
- copy the content of
the URL for Let's Encrypt root certificates field -
open the Certificates configuration job editor in the Devices App - add the copied URL to the
list of Sources for certificates
added to the device's trust list, e.g. in Requesting a certificate for the reverse proxy
Our master PBX and RP runs on the IP411-LEFT. Usage of the Connector for Let's Encrypt can be configured in the - tick the Enable check-mark
- copy the
Client URL from the Settings App plugin (wss://apps-dvl-ckl2.training.innovaphone.com/dvl-ckl2.net/letsencrypt/clients) into the Let's Encrypt App URL field - type the Client password that you had entered in the Settings App plugin (ip411ip411) into the Let's Encrypt App Password field
- leave the Key length as-is
We also recommend that in your real-life projects. Before you consider to use different key length settings, be sure to read section Certificate Key Length and CPU Usage in
Certificate management ! - add the DNS names of the devices which will be reached through the RP in to the DNS Name table:
- hq-dvl-ckl2.training.innovaphone.com
- apps-dvl-ckl2.training.innovaphone.com
- make sure the Use as CN check-mark is ticket next to the hq-dvl-ckl2.training.innovaphone.com entry (this should always be ticked for the primary DNS name of the device, not for those names that are only added because the device also works as a reverse proxy)
new device certificate issued by LE in the
You will notice that both accessing the IP411LEFT and accessing the AP from the browser with HTTPS (i.e. from within myApps) requires you to accept a security warning from your browser.This is because the certificate issued by LE is not a true good & trusted certificate. It would be if we hadn't specified the staging URL to the Let's encrypt directory. In other words: this issue won't happen in real-life.
Requesting a certificate for the slave PBX
Our slave PBX runs on the IP811. Usage of the Connector for Let's Encrypt can be configured in the - tick the Enable check-mark
- copy the Client URL from the Settings App plugin (wss://apps-dvl-ckl2.training.innovaphone.com/dvl-ckl2.net/letsencrypt/clients) into the Let's Encrypt App URL field
- copy the Client password from the Settings App plugin (ip411ip411) into the Let's Encrypt App Password field
- leave the Key length as-is
We also recommend that in your real-life projects. Before you consider to use different key length settings, be sure to read section Certificate Key Length and CPU Usage in
Certificate management ! - add the following name in to the DNS Name table: branch-b-dvl-ckl2.training.innovaphone.com
new device certificate issued by LE.Note that LE will issue certificates which are derived from various root certificates. This is why the name you see might differ from (STAGING) Wannabe Watercress R11.
Again, you might notice that both accessing the IP811 and accessing the AP from the browser with HTTPS (i.e. from within myApps) requires you to accept a security warning from your browser.This is because the certificate issued by LE is not a true good & trusted certificate. It would be if we hadn't specified the staging URL to the Let's encrypt directory.
Finalizing the certificate on the reverse proxy
- hq-dvl-ckl2.training.innovaphone.com
- apps-dvl-ckl2.training.innovaphone.com
- branch-b-dvl-ckl2.training.innovaphone.com
Add the missing name branch-b-dvl-ckl2.training.innovaphone.com in the The magic
However, you can also choose to simply keep in mind that in a real installation, LE certificates would not be obtained until the RP is properly in place. Let's do it!
- we can call from Jean Dupont (12) to John Doe (10) as the call stays in hq.
But we can not call from John Doe (10) to Lisa Svensson (11) as this call would flow from hq to branch-b - also, we can connect myApps on the mobile phone neither to the master nor to the slave PBX.
To simulate the mobile phone being in the internet, we
add a WLAN access point
to our setup, so that it connects to the same network segment our IP411RIGHT is connected to through its ETH0 interface (you can open the full scenario in a new tab for reference).
you should be able to determine the mobile phone's IP address (something like 192.168...) as well as the subnet mask (something like 255.255.255.0) and ping to it:- on an iPhone, go to Settings / Wi-Fi
- then tap on the little i next to your WLAN name
- take note of the IPV4 ADDRESS / IP Address
- take note of the Subnet Mask
- on an Android, go to Settings / Network & connection
- then tap on Wi-Fi
- then tap on the network you're connected with
- scroll down and take note of the IP address
- take note of the Subnet Mask
Port forwardings
So- open
IP4 / NAT / General - to add Port specific forwardings, use the Add new map area and add maps for all relevant protocols which forward to the master PBX (which we intend to use as TURN server and reverse proxy later on), according to the following table
| Service | Protocol | Port | Destination address Address | Destination portInt. Port (optional) |
| TURN | UDP | 3478 | TURN server on IP411LEFT 172.31.31.2 | + |
| TURN | TCP | 3478 | TURN server on IP411LEFT 172.31.31.2 | + |
| HTTP / WS§ | TCP | 80 | RP on IP411LEFT 172.31.31.2 | 90* |
| HTTPS / WSS§ | TCP | 443 | RP on IP411LEFT 172.31.31.2 | 453* |
| LDAP | TCP | 389 | RP on IP411LEFT 172.31.31.2 | 399* |
| LDAPS | TCP | 636 | RP on IP411LEFT 172.31.31.2 | 646* |
| SIP# | TCP | 5060 | RP on IP411LEFT 172.31.31.2 | 5070* |
| SIPS# | TCP | 5061 | RP on IP411LEFT 172.31.31.2 | 5071* |
| H.323 TCP | TCP | 1720 | RP on IP411LEFT 172.31.31.2 | 1730* |
| H.323 TLS | TCP | 1300 | RP on IP411LEFT 172.31.31.2 | 1310* |
§ WS/WSS may differ from HTTP/HTTPS when using a firewall # only required if SIP endpoints are used, not for SIP trunks + standard port used, can be left empty * non-standard port used by RP | ||||
This is a hard work after which you deserve a coffee.
Keep in mind that in real-life, this has to be done on your real internet router!STUN/TURN
Media Global device configuration in the Devices App.
To see this configuration, you need to login to myApps (http://hq-dvl-ckl2.training.innovaphone.com/PBX0/APPCLIENT/appclient.htm?lang=en) and login as user ckl with password ip411).
| Setting | Recommended Value | Remark | Created OK by Install? |
| STUN server | STUN server provided by your SIP provider | You should avoid using stun.innovaphone.com as there is no service level agreement in place if you do so | ![]() |
| TURN server | hq-dvl-ckl2.training.innovaphone.com | The Install has set up a TURN server on your master PBX | ![]() |
| TURN username | your-choice | Your TURN server should not be used by 3rd parties easily, so better use a strong password | |
| TURN password | your-choice |
To fix this- choose a TURN username (in this course, use turn342823)
- choose a TURN password (in this course, use ip411 as always)
- change the TURN credentials in the
Media Global device configuration in the Devices App accordingly. This will make all your STUN client devices use the new credentials - also change the TURN User and Password in the STUN/TURN server settings in
IP4 / NAT / General accordingly (be sure to remove the turn user which the Install has created for you)
Reverse proxy
What the Reverse Proxies Settings App can do
To do the basic setup- log in to myApps on the master PBX (http://hq-dvl-ckl2.training.innovaphone.com/PBX0/APPCLIENT/appclient.htm?lang=en) using an account that has administration rights and has hq as login-PBX (either john.doe or ckl, both have password ip411)
- open the
Reverse Proxies Settings App plugin - click on Add a Reverse Proxy to add an RP
- A list of options is displayed (the IP411LEFT/master PBX hq, the IP811/slave PBX branch-b and the IP411RIGHT/Router and DHCP Server). As we want to run the reverse proxy on our master PBX, we
select the IP411LEFT (master PBX hq) - in the Settings area, we
enable all protocols (with Set standard ports (public IP) not ticked, as we want to use non-standard ports for the RP)
Note that these ports correspond to the internal ports (Int. Port (optional)) we used to configure the port forwarding in our (simulated) internet router before - click on Add a host
add both offered hosts- click OK
fair amount of configuration has been done by the Settings plugin (you can see that at
The easiest way to create the missing host entry for branch-b-dvl-ckl2.training.innovaphone.com therefore is to log-in to the slave PBX and use the Reverse Proxies plugin there: - Log in to myApps on the slave PBX (http://branch-b-dvl-ckl2.training.innovaphone.com/PBX0/APPCLIENT/appclient.htm?lang=en) using an account that has administration rights and has branch-b as login-PBX (this is lsv (Lisa Svensson) with password ip411). You may need to
log out from myApps if you were logged in there before - open the Settings App Reverse Proxies plugin again
- click
on Add a reverse proxy - select our existing reverse proxy (IP411LEFT: master PBX hq)
- click on Add a host
The missing host (branch-b-dvl-ckl2.training.innovaphone.com)
is suggested - add this host
- finish the configuration with OK
Reverse Proxy - manual changes
What needs to be fixed manually

Global settings
. | Service | TCP Port | TLS Port | Remark |
| H.323 | 1730 | 1310 | All services accepted on standard port + 10 |
| SIP | 5070 | 5071 | |
| LDAP | 399 | 646 | |
| HTTP | 90 | 453 |
| Setting | Recommended Value | Remark | Created by PBXManager? |
| No IPv4 | off | This flag disables IPv4 for the reverse proxy | ![]() |
| No IPv6 | off | This flag disables IPv6 for the reverse proxy | ![]() |
| Log Forwarded Requests | off | No normal logs should be turned on unless you are debugging an issue | ![]() |
| Log Rejected Requests | on | To see issues in the Logging App | ![]() |
| Blacklist Expiration (min) | 5 | To avoid manual intervention if a client ends up in the blacklist for whatever reason | ![]() |
| Suspicious Requests/min | 20 | ![]() | |
| Public NAT router address | 172.100.0.1 / 172.200.0.1 | must be set for incoming SIP requests to the public address of your NAT router, depending on the location (remember that 172.100.0.1/172.100.0.1 must be replaced by your internet routers IP address). You can leave this field empty if the RP also performs the NAT router function. If your NAT router offers different SIP ports (default 5060 and 5061), then you have to specify the port to be used. Since only one port can be specified, only either SIP/TCP or SIP/TLS will work. only if SIP is required (e.g. 3rd party devices).SIP trunks do not require this! | ![]() |
To fix the global settings, do the following changes:- tick the Log Rejected Requests for all service types used
- set Blacklist Expiration (min) to 5
- set Public NAT router address to the external IP address of your (simulated) internet router (the IP411RIGHT in this case)
You can find this IP address as IP address on the IP411RIGHT's IP4/ETH0/IP tab as well as on moodle's Devices page (IP411RIGHT external IP address (on your corporate network): x.x.x.x (this will be the external IP address of your router-hq))
look like this then. Hosts for hq
apps-dvl-ckl2.training.innovaphone.com
. hq-dvl-ckl2.training.innovaphone.com
| Service | Path | Target (Out) | TCP Port | TLS Port | Remark | Created by PBXManager? |
| H.323 | not forwarded | |||||
| SIP | not forwarded | |||||
| LDAP | 172.31.31.2 | 389 | 636 | to access the master PBX LDAP, e.g. with a bind user hq-dvl-ckl2.training.innovaphone.com\ldap-guest | ![]() | |
| HTTP | /PBX0/APPCLIENT/appclient.htm | 172.31.31.2 | 80 | 443 | myApps client, e.g. https://hq-dvl-ckl2.training.innovaphone.com/PBX0/APPCLIENT/appclient.htm | ![]() |
| HTTP | /PBX0/APPS | 172.31.31.2 | 80 | 443 | PBX apps | ![]() |
| HTTP | /PBX0/session. | 172.31.31.2 | 80 | 443 | myApps two-factor authentication | ![]() |
| HTTP | /PBX0/user.soap | 172.31.31.2 | 80 | 443 | only if TAPI or SOAP API is used | ![]() |
| HTTP | /OAUTH2/oauth2_login | 172.31.31.2 | 80 | 443 | only if OAuth2 authentication is used | ![]() |
However, when you use TAPI (or any other software using
SOAP), you need to add the entry for http://<host> /PBX0/user.soap towards the master PBX 172.31.31.2 on port 80 and 443, respectively. Here in the course, we assume that TAPI is used. dvl-ckl2.net
| Service | Path | Target (Out) | TCP Port | TLS Port | Remark | Created by PBXManager? |
| H.323 | 172.31.31.2 | 1720 | 1300 | Check Certificate must be ticked e.g. to register at the master PBX with a gatekeeper id location@dvl-ckl2.net or dvl-ckl2.net | ![]() | |
| SIP | 172.31.31.2 | 5060 | 5061 | only if SIP registration is required (e.g. 3rd party devices). SIP trunks do not require this!Check Certificate must be ticked e.g. to register at the master PBX with a From: address user@dvl-ckl2.net | ![]() | |
| LDAP | 172.31.31.2 | 389 | 636 | to access the master PBX LDAP, e.g. with a bind user dvl-ckl2.net\ldap-guest | ![]() | |
| HTTP | not forwarded |
To fix these issues - add the entry for LDAP towards the master PBX 172.31.31.2 on port 389 and 636, respectively
make sure all entries of dvl-ckl2.net point to the master (172.31.31.2). By using the Reverse Proxy plugin when connected to the slave PBX, the already existing configuration of dvl-ckl2.net was overwritten so that it points to the slave PBX now (which is wrong of course)
Hosts for branch-b
branch-b-dvl-ckl2.training.innovaphone.com
| Service | Path | Target (Out) | TCP Port | TLS Port | Remark | Created by PBXManager? |
| H.323 | not forwarded | |||||
| SIP | not forwarded | |||||
| LDAP | 172.31.31.3 | 389 | 636 | to access the slave PBX LDAP with a bind user branch-b-dvl-ckl2.training.innovaphone.com\ldap-guest | ![]() | |
| HTTP | /PBX0/APPCLIENT/appclient.htm | 172.31.31.3 | 80 | 443 | myApps client, e.g. https://branch-b-dvl-ckl2.training.innovaphone.com/PBX0/APPCLIENT/appclient.htm | ![]() |
| HTTP | /PBX0/APPS | 172.31.31.3 | 80 | 443 | PBX apps | ![]() |
| HTTP | /PBX0/session. | 172.31.31.3 | 80 | 443 | myApps two-factor authentication | ![]() |
| HTTP | /OAUTH2/oauth2_login | 172.31.31.3 | 80 | 443 | only if OAuth2 authentication is used | ![]() |
| HTTP | /PBX0/user.soap | 172.31.31.3 | 80 | 443 | only if TAPI or SOAP API is used | ![]() |
However, when you use TAPI, you need to add the entry for http://<host> /PBX0/user.soap towards the slave PBX 172.31.31.3 on port 80 and 443, respectively. Again, here in the course, we assume that TAPI is used. dvl-ckl2.net/branch-b
| Service | Path | Target (Out) | TCP Port | TLS Port | Remark | Created by PBXManager? |
| H.323 | 172.31.31.3 | 1720 | 1300 | Check Certificate must be ticked e.g. to register at the slave PBX with a gatekeeper id location@dvl-ckl2.net/branch-b or dvl-ckl2.net/branch-b | ![]() | |
| SIP | 172.31.31.3 | 5060 | 5061 | only if SIP registration is required (e.g. 3rd party devices). SIP trunks do not require this!Check Certificate must be ticked e.g. to register at the slave PBX with a From: address user@dvl-ckl2.net/branch-b | ![]() | |
| LDAP | not forwarded | |||||
| HTTP | not forwarded |
To fix that- add a new host dvl-ckl2.net/branch-b and forward both H.323 (ports 1720 and 1300) and SIP (ports 5060 and 5061) to the slave PBX (172.31.31.3). Make sure that Check Certificate is ticked for both rules!
Internal DNS
- on the IP411LEFT for hq
- on the IP811 for branch-b
- on the IP411RIGHT for the world
Now let us create the internal DNS for hq: - open
Services / DNS / Hosts - in the New Resource Record area, add A records according to this table
Remark Type of entry Name Value master PBX A hq-dvl-ckl2.training.innovaphone.com 172.31.31.2
AP A
apps-dvl-ckl2.training.innovaphone.com
172.31.31.12
tick Enable DNS Server Role to turn on the DNS server
Likewise, let us create the internal DNS for branch-b:- open
Services / DNS / Hosts - in the New Resource Record area, add A records according to this table
Remark Type of entry Name Value slave PBX A
branch-b-dvl-ckl2.training.innovaphone.com 172.31.31.3
tick Enable DNS Server Role to turn on the DNS server
Client DNS settings
How the DNS setting works
- the device uses DHCP and the DHCP offer includes a DNS Server 1 option.
This is the case in our training setup. All devices except the IP411RIGHT use DHCP, the IP411RIGHT works as DHCP server and
includes itself as Default Gateway, DNS Server 1 and Time Server 1 in the offer - or the devices does not use DHCP (or there is no DNS Server 1 option in the offer or there is the hidden option /no-dns present in the DHCP0 interface) and the DNS server is configured statically in IP4/ETH0/IP
- Even more, if a device has configured a native DNS server (that is, if it acts as a DNS server itself), it will first consult its own DNS database and then use a secondary DNS server provided as explained above
| Device | Location | Local DNS Server | configuration method |
| IP111 | branch-b | IP811 | DHCP /no-dns override with fixed configuration for 172.31.31.3 |
| IP112 | branch-b | IP811 | DHCP /no-dns override with fixed configuration for 172.31.31.3 |
| IP222 | hq | IP411LEFT | DHCP /no-dns override with fixed configuration for 172.31.31.2 |
| IP232 | hq | IP411LEFT | DHCP /no-dns override with fixed configuration for 172.31.31.2 |
| IP411LEFT | hq | IP411LEFT | native local DNS with secondary DNS provided via DHCP (IP411RIGHT) |
| IP811 | branch-b | IP811 | native local DNS with secondary DNS provided via DHCP (IP411RIGHT) |
| Your PC | external | IP411RIGHT | received from the IP411RIGHT via DHCP |
Official DNS
Keep in mind, that - as seen from our training network - the public IP address of the IP411RIGHT (which is our simulated internet router) is the IP address it receives from your corporate network. So it will likely be something like 192.168.x.y, 172.16.x.y or 10.x.y.z.
To determine your IP411RIGHT's external address- open
IP4 / ETH0 / IP and copy the value shown
right next to the IP Address input field
Now let us create the necessary official DNS entries:- open
Services / DNS / Hosts
Note that moodle has already inserted a number of A records, including all of the names we need - change the DNS records found in the following table and replace the IP address (which is currently something like 172.31.31.x) to your (pseudo) public IP address determined before (instead of 172.100.0.1 and 172.200.0.1)
Remark Type of entry Name Value master PBX A hq-dvl-ckl2.training.innovaphone.com 172.100.0.1§ AP A
apps-dvl-ckl2.training.innovaphone.com
172.100.0.1§ slave PBX A
branch-b-dvl-ckl2.training.innovaphone.com
172.200.0.1# § external address of hq's internet router# external address of branch-b's internet router
There are a lot more entries in the DNS name table of your IP411RIGHT. Please do not touch/remove/change them - and better don't ask why they are there Testing
You can test the respective DNS results using your cmd window as follows:C:\Users\ckl>nslookupDefault Server: whatever
Address: whatever
> server 172.31.31.1# this is our "official" DHCP server on the IP411RIGHTDefault Server: [172.31.31.1]
Address:172.31.31.1
> hq-dvl-ckl2.training.innovaphone.com
# query for hqServer: [172.31.31.1]
Address: 172.31.31.1
Non-authoritative answer:
Name: hq-dvl-ckl2.training.innovaphone.com
Address: 172.100.0.1# correct, the offical DNS on the IP411RIGHT delivers its own external address as address for hq> server 172.31.31.2# this is our "internal" DHCP server for hq on the IP411LEFTDefault Server: hq.dvl-ckl2.net
Address: 172.31.31.2
> hq-dvl-ckl2.training.innovaphone.com
Server: hq.dvl-ckl2.net
Address: 172.31.31.2
Non-authoritative answer:
Name: hq-dvl-ckl2.training.innovaphone.com
Address: 172.31.31.2# correct, the internal DNS for hq on the IP411LEFT delivers its own local address as address for hq
> server 172.31.31.3# this is our "internal" DHCP server for branch-b on the IP811Default Server: hq-standby.dvl-ckl2.net
Address: 172.31.31.3
> hq-dvl-ckl2.training.innovaphone.com
Server: hq-standby.dvl-ckl2.net
Address: 172.31.31.3
Non-authoritative answer:
Name: hq-dvl-ckl2.training.innovaphone.com
Address: 172.100.0.1# correct, the internal DNS for branch-b on the IP811 delivers the external address of the internet router (IP411RIGHT) as address for hq>
Port conflict
just to give you an idea how confusing this could be: currently, the DNS name apps-dvl-ckl2.training.innovaphone.com is resolved to the external IP address of your IP411RIGHT. We would expect to be connected to the app platform if we use this name. However, as the port forwarding is not yet functional in the IP411RIGHT, we're actually connected to the IP411RIGHT. Sort of confusing.
So to make the port forwarding functional, - open the LDAP settings on
Services / LDAP / Server - turn the LDAP server off by ticking the Off check-mark (we don't need LDAP on our router)
- open the PBX settings on
PBX / Config / General - check that the PBX Mode is set to OFF (we don't need a PBX on our router)
- open the Gateway settings on
Gateway / SIP andGateway / GK - check that neither SIPx nor GWx interfaces are defined (we don't need a such interfaces on our router)
- open the HTTP settings on
Services / HTTP / Server - change the Port and HTTPS-Port to 81 and 444, respectively
Note that from this moment on, the IP411RIGHT's advanced UI is not reachable any more, neither using http://172.31.31.1 nor http://00903340007e. You must use either http://172.31.31.1:81 from now on or use the Devices App to access your IP411RIGHT (device Christoph-IP411RIGHT: Router and DHCP Server)!
In a real-life installation where you don't use an innovaphone box as router, this or a similar step step may or may not be necessary. Consult your internet router's documentation.Registrations originating from the RP
How the PBX checks the client certificate for TLS registrations
the PBX always sees the certificate of the reverse proxy rather than the certificate of the registering client for remote registrations!
Check Certificate check-mark in the forwarding rules for SIP and H.323 is good for. If it is set, the reverse proxy will- check if the client certificate is trusted
- check if the name in the certificate matches the name found in the registration request
- the
Assume TLS check-mark is set - and a registration requests comes in using TLS
- and it origins from one of the reverse proxies listed in Reverse Proxy Addresses
Never touch the Assume TLS nor Check certificate check-mark, unless you really know what you are doing. Improper settings may result in false positive checking of certificate based registrationsAllowing registrations via Reverse Proxy
the Reverse Proxy check-mark in the object's Devices list. For a PBX type object however, there is no Devices list and hence you need to tick
the Reverse Proxy check-mark in the General configuration of the PBX object.
To allow the slave PBX to register via the reverse proxy, tick the Reverse Proxy check-mark in branch-b's PBX object. SBC registration
Fixing the slave PBX registration
20240923-193635 EP 0 REGISTRATION-DN(172.100.0.1:1300),GK-ID=dvl-ckl2.net,H323=branch-b,Reason=Timeout
This needs to be changed to the external IP address of your IP411RIGHT (which is the internet router for hq, the master PBX).
To activate your change, you must either reset the IP811 or (smarter) set the PBX mode to OFF and back to Slave again.Testing
Refer to
The last step to prepare is to install the myApps app. You must install it from the App Store (iPhone) or the Play Store (Android). Search for innovaphone myApps
You will probably find more than one App called innovaphone myApps. Install the one that has no release number in its name (it is simply called innovaphone myApps, not for example innovaphone myApps 14r2).
Let us see if we can run myApps from our master PBX- start the myApps app on your mobile phone
- should you be logged in (which can happen if you have used myApps before on your mobile), make sure that you log out and select the right server
- tap on the burger menu to open the myApps settings
- tap on Account security
- Logout from the Current session
- in the login form, tap on Switch server
- type hq-dvl-ckl2.training.innovaphone.com in to the Server field
- tap on Config
Debugging the reverse proxy
To enable:- tick all the Log Forwarded Requests and Log Rejected Requests for debugging at
Services / Reverse-Proxy on the IP411LEFT (the reverse proxy and PBX), - click on syslog on
Maintenance / Diagnostics / Logging (and keep this page open, it will show all routing decisions done by the reverse proxy in real-time)
myApps on the master PBX
To do so, on your mobile phone myApps- type ckl as Username
- type ip411 as Password
- tap on Sign in
...20240924-144109 REVERSE-PROXY 31 192.168.178.42 https://hq-dvl-ckl2.training.innovaphone.com GET /PBX0/APPCLIENT/1420338/websocket HTTP/1.1 -> 172.31.31.2:443(new)...20240924-144123 REVERSE-PROXY 27 192.168.178.42 https://apps-dvl-ckl2.training.innovaphone.com GET /dvl-ckl2.net/devices/innovaphone-devices.png HTTP/1.1 -> 172.31.31.12:443(new)...
Using Apps
To see if PBX Apps work- start the Settings App App
This is an App provided by the PBX, not by the AP
...20240924-150301 REVERSE-PROXY 28 192.168.178.42 https://hq-dvl-ckl2.training.innovaphone.com GET /PBX0/APPS/app_manager/app_manager.htm?name=pbxmanager&title=PBX%20Manager&scheme=dark&lang=en&originalUrl=http%3A%2F%2Fhq-d -> 172.31.31.2:443(new)...20240924-150302 REVERSE-PROXY 36 192.168.178.42 https://apps-dvl-ckl2.training.innovaphone.com GET /manager/1420322/manager-api HTTP/1.1 -> 172.31.31.12:443(new)...20240924-150302 REVERSE-PROXY 35 192.168.178.42 https://apps-dvl-ckl2.training.innovaphone.com GET /dvl-ckl2.net/contacts/innovaphone.ManagerContactsTexts.js HTTP/1.1 -> 172.31.31.12:443
...
To see how an App (in this case, the reverse proxy plugin plugin) talks, - Start the Reverse Proxy plugin
...20240924-153039 REVERSE-PROXY 27 192.168.178.42 https://hq-dvl-ckl2.training.innovaphone.com GET /PBX0/APPS/app_manager/1420338/innovaphone.ManagerRPs.js HTTP/1.1 -> 172.31.312:443(new)
20240924-153039 REVERSE-PROXY 27 192.168.178.42 https://hq-dvl-ckl2.training.innovaphone.com GET /PBX0/APPS/app_manager/1420338/ManagerRPs.css HTTP/1.1 -> 172.31.312:443
20240924-153039 REVERSE-PROXY 30 192.168.178.42 https://hq-dvl-ckl2.training.innovaphone.com GET /PBX0/APPS/app_manager/1420338/ManagerRPsTexts.js HTTP/1.1 -> 172.31.312:443(new)
...
- the plugin is loaded from the PBX (/PBX0/APPS/app_manager/1420338/innovaphone.ManagerRPs.js / .css)
Using media data
- the local addresses are enumerated correctly
- the internet routers IP address is determined correctly (STUN)
- the TURN server is reached
we can use a nice tool in the softphone App:
create a softphone as shown in
video tutorials- in myApps, start the new softphone App
At this point, you see the softphone App creating a websocket connection to the PBX:
20240924-160108 REVERSE-PROXY 38 192.168.178.42 https://hq-dvl-ckl2.training.innovaphone.com GET /PBX0/APPS/softphone/1420338/websocket HTTP/1.1 -> 172.31.312:443(new) - tap on the burger menu
- scroll down to NETWORK
Here you can verify the settings for the TURN and STUN server. They should read
stun:stun.innovaphone.com
turn:hq-dvl-ckl2.training.innovaphone.com - tap on the right arrow next to the server settings
the softphone now will establish STUN / TURN connections and enumerate the local interface IP addresses. The results are - one or more HOST addresses (must include the local IP4 address assigned to your mobile phone by DHCP)
- a RELAY address (must be the local IP address of your TURN server, in our case the IP411LEFT's address (172.31.31.2))
- a SRFLX address (must be the public address of your (real) internet router, as assigned by your ISP and reported by the STUN server)
Therefore,- check that Handset is selected in the AUDIO DEVICES section
To call an internal user- leave the burger menu
- type 10 (or john.doe) in to the Search contact field
- tap on the handset button to place the call
John Doe's IP111 should ring now - accept the call and verify bi-directional audio
myApps on the slave PBX
To do so- log-off from myApps
- in the login form, type lsv as Username (Lisa's registration PBX is the slave, as you might recall)
- type ip411 as Password
- tap on Sign in
You should be logged-in now - then close myApps (so that there are no connections to the master PBX anymore)
- restart myApps
20240924-165246 REVERSE-PROXY 37 192.168.178.42 https://hq-dvl-ckl2.net GET /PBX0/APPCLIENT/1420338/websocket HTTP/1.1 -> 172.31.312:443(new)
20240924-165247 REVERSE-PROXY 28 192.168.178.42 https://branch-b-dvl-ckl2.net GET /PBX0/APPCLIENT/1420338/websocket HTTP/1.1 -> 172.31.313:443(new)
Registrations across the RP
To see how such a registration looks like in the RP, we force the slave PBX to re-register:- we change the PBX Mode in the
PBX / Config / General tab of the slave PBX from Slave to OFF (do not forget to click on OK) - we then change it back from OFF to Slave
20240924-170344 REVERSE-PROXY 33 172.31.31.1 h323s:Register dvl-ckl2.net -> 172.31.31.2:1720
the RP forwards a connection for an H323 discovery for dvl-ckl2.net to 172.31.31.2
20240924-170344 GK 0 DISCOVER-IN(172.31.31.2:3590),GK-ID=dvl-ckl2.net,H323=branch-b
20240924-170344 GK 0 DISCOVER-OK(172.31.31.2:3590)
the PBX accepts the discovery and ...
20240924-170344 GK 0 REGISTER-IN(172.31.31.2:3590),GK-ID=dvl-ckl2.net,H323=branch-b
receives a registration from branch-b
20240924-170344 GK 0 REGISTER-OK(172.31.31.2:3590),H323=branch-b,E164=**2
which it accepts
...
20240924-170345 REVERSE-PROXY 25 172.31.31.1 https://apps-dvl-ckl2.training.innovaphone.com GET /dvl-ckl2.net/contacts HTTP/1.1 -> 172.31.31.12:443(new)
the RP forwards a number of connections towards Apps on the AP. These are the connections each PBX creates for each App object in their respective configuration
20240924-170345 REVERSE-PROXY 18 172.31.31.1 https://apps-dvl-ckl2.training.innovaphone.com GET /dvl-ckl2.net/devices HTTP/1.1 -> 172.31.31.12:443(new)
...
Updated setup-data Excel
.
of components required.
quite a bit
you need to configure on your internet router:
.