Apply Config causes IAX2 trunk to become unreachable when using Asterisk 13 [Solved]

Background

I’m setting up a new (virtual) FreePBX system with the following

  • Latest version of FreePBX (PBX Firmware: 10.13.66-9)
  • Asterisk 13.7
  • IAX2 trunk to VoIP.ms account

Every time I make a change and press the Apply Config button, the IAX2 trunk becomes UNREACHABLE. If I core restart when convenient then the trunk comes back online and stays that way until the next Apply Config.

Requirements

If I asterisk-switch-version to Asterisk 11 then the problem seems to go away; however

  • I need to use Asterisk 13 b/c I’m using the chan_pjsip driver to support multiple contacts.
  • I’m using and IAX2 trunk for better bandwidth and easier NAT config (we may eventually have several of these behind the same firewall).

Symptoms

Shortly after Apply Config I see the following ERROR and NOTICE messages in the console (I have removed WARNING for clarity):

[2016-04-05 14:58:16] ERROR[5759]: config_options.c:642 aco_process_config: Unable to load config file 'acl.conf'
[2016-04-05 14:58:16] NOTICE[5759]: res_odbc.c:1528 odbc_obj_connect: Connecting asteriskcdrdb
[2016-04-05 14:58:16] NOTICE[5759]: res_odbc.c:1567 odbc_obj_connect: res_odbc: Connected to asteriskcdrdb [MySQL-asteriskcdrdb]
[2016-04-05 14:58:16] NOTICE[5759]: res_odbc.c:923 load_odbc_config: Registered ODBC class 'asteriskcdrdb' dsn->[MySQL-asteriskcdrdb]
[2016-04-05 14:58:16] ERROR[5759]: netsock2.c:524 ast_sockaddr_hash: Unknown address family '0'.
[2016-04-05 14:58:16] ERROR[5759]: netsock2.c:524 ast_sockaddr_hash: Unknown address family '0'.
[2016-04-05 14:58:16] WARNING[5759]: iax2/firmware.c:234 iax_firmware_reload: Error opening firmware directory '/var/lib/asterisk/firmware/iax': No such file or directory
[2016-04-05 14:58:16] NOTICE[5759]: iax2/provision.c:562 iax_provision_reload: No IAX provisioning configuration found, IAX provisioning disabled.
[2016-04-05 14:58:16] NOTICE[5759]: confbridge/conf_config_parser.c:2076 verify_default_profiles: Adding default_menu menu to app_confbridge
[2016-04-05 14:58:16] NOTICE[5759]: app_queue.c:8666 reload_queue_rules: queuerules.conf has not changed since it was last loaded. Not taking any action.
[2016-04-05 14:58:28] ERROR[6047]: netsock2.c:98 ast_sockaddr_stringify_fmt: getnameinfo(): ai_family not supported
[2016-04-05 14:58:28] ERROR[6047]: netsock2.c:98 ast_sockaddr_stringify_fmt: getnameinfo(): ai_family not supported
[2016-04-05 14:58:29] ERROR[5689]: netsock2.c:98 ast_sockaddr_stringify_fmt: getnameinfo(): ai_family not supported
[2016-04-05 14:58:29] ERROR[5689]: netsock2.c:98 ast_sockaddr_stringify_fmt: getnameinfo(): ai_family not supported
[2016-04-05 14:58:38] NOTICE[5581]: chan_iax2.c:12311 __iax2_poke_noanswer: Peer 'voipms' is now UNREACHABLE! Time: 18
[2016-04-05 14:58:38] ERROR[5581]: netsock2.c:524 ast_sockaddr_hash: Unknown address family '0'.

On occasion I also see the following error:

[2016-04-05 15:25:34] NOTICE[6246]: dnsmgr.c:226 dnsmgr_refresh: dnssrv: host 'toronto.voip.ms' changed from  to 158.85.70.148:0

A wireshark trace shows that after the Apply Config the POKE/PONG/ACK sequence changes to POKE/PONG only (i.e. the ACK is missing).

Running with iax2 set debug on shows the following:

Tx-Frame Retry[000] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: POKE
   Timestamp: 00011ms  SCall: 09315  DCall: 00000 158.85.70.148:0

Conclusion

The above messages seem to suggest that Asterisk is attempting to contact the remote server on port 0 instead of 4569, which would explain why the communication is failing. If that’s true, I don’t see why it’s happening or what to do to fix it. Any suggestions would be greatly appreciated.

Updates

2016-04-06 - The same problem exists on two separate systems that were configured with the same versions, so the problem is repeatable.

2016-04-07 - The problem has not come back since changing the registration to use the IP address instead of the FQDN.

TLDR: If anyone else runs into this, what worked for me is to register the trunk using the IP address rather than the FQDN. In my case, the address of the server is a single, static IP so this works; however YMMV.

There seems to be an issue where the initial DNS lookup after a reload fails, which in turn causes an issue with the port being set to 0 instead of 4569. This may be related to one of these old bugs:

Since the behavior is easily repeatable, I have submitted this as a bug: http://issues.freepbx.org/browse/FREEPBX-12004.

I’ve just looked into it and yep, this is definitely an asterisk bug.

1 Like

Resolveu quando entrei em /etc/asterisk/dnsmgr.conf
e coloquei enable=no

[root@seluck01 ~]# cat /etc/asterisk/dnsmgr.conf
[general]
enable=no
refreshinterval=300

depois reboot