Asterisk

Cisco phones can be a pain in the ass

[index] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15]

I'm not happy until it's too complicated(15-Jan-2007)

A little bit of background that I've probably glossed over previously in these Asterisk pages. My home Asterisk server is multi-homed. Sometimes I get the impression that I'm the only person on the planet who is trying to use Asterisk in this manner but for the most part it works like it's supposed to work. It is clear, though, that the fine folks at Digium aren't really coding with my particular use case in mind, which is a bit of shame.

By multi-homed I mean simply this: My home asterisk server has two network interfaces -- one which lives on my internal RFC1918 private IP space subnet and one which lives on my public, routable, internet-facing IP. I've got a few Cisco 7960s "inside" my network which can route to the big, bad internet via NAT but can also reach my Asterisk machine on its internal IP. Back in the Asterisk 1.0 days this configuration was broken if you tried to do it via interface aliases. It would only work with two separate ethernet adapters. I have no idea if this limitation still exists, I've never tried it without using two adapters.

My Cisco phones talk to Asterisk on its 10.0.0/23 subnet. The world talks to Asterisk on its 68.93.27.56/28 subnet. With canreinvite=no set in sip.conf this works like a charm. Asterisk pulls double-duty as a SIP proxy as well as being a PBX.

Enter Cisco SIP Firmware 8.4

Sadly, this all broke horribly when I upgraded from the Cisco SIP firmware 8.2 to version 8.4. It broke on one of my phones that connects not only to my home Asterisk but also to my (remote) work Asterisk. Two lines on the 7960 were configured to talk to the 10.0.0.x local address and two were configured to connect to the public IP space server. It appears that somewhere in between firmware 8.2 and firmware 8.4 the Cisco software lost the ability to talk to both NAT and non-NAT servers at the same time. The phone would register just fine to both servers and appear healthy, but it would return a SIP 404 "Not Found" whenever Asterisk tried to route a call to it. Curiously it broke both servers, not just one or the other.

I hope Cisco addresses this bug in a later revision of the SIP firmware. For now the workaround I have had to employ is to have the phone talk to both servers through NAT on their public IP space. This is inefficient but seems to dodge the problem. 8.4 fixes enough other bugs that it's worth dealing with the workaround to avoid the 8.2 annoyances.

contacts comments