Different IP Addresses for Failover

Christian Stredicke
CEO of Vodia Networks

Failover is an important feature for most PBX installations. With the availability of high-bandwidth wireless like 4G it becomes more and more popular to use the wireless connection when the primary land-line based internet access becomes unavailable.

We have for a long time the possibility to run the PBX in the LAN, replacing the local IP address with publicly routable IP addresses. The IP replacement list was already a topic of many forum discussions.

However when it comes to dynamically switching the presented IP address in the case of a failover, we were in trouble. In theory, it would be possible to run a script that tests for the public IP address and then uses the REST interface and change the routing table. However not everyone is a bash wizard and it would even require different scripts for the different operating systems.

This was the reason why we went ahead and added a new feature that takes the URL for probing the public IP address of the PBX and a interval time value. The PBX will then periodically download the URL and set the public IP address of the PBX accordingly. The public IP address can be referenced with the magic name "public" in the routing list, like this:

192.168.0.0/255.255.0.0/192.168.1.1 0.0.0.0/0.0.0.0/public

Then the PBX would present 192.168.1.1 in the LAN and whatever-is-the-public-address in all other cases.

The PBX expects in the response from the web server a IP address in human readable format, or in JSON-format, where the object must contain a entry called "ip" (for example, see http://myjsonip.appspot.com/). It is possible to use public servers, but you also use your own servers obviously.

The failover will obviously take some time. The polling interval determines how fast the change is being detected. Obviously there is a tradeoff between polling (too) often and the time it takes to reflect the new address.

The new settings will be available right under the replacement list. It will be available in 5.2.5.