[asterisk-users] IAX2 peer unreachable in one direction - NAT problem?

Seb Auriol sebau at syntec.co.uk
Mon May 14 11:38:33 MST 2007


The situation is one of my asterisk servers is behind a NAT firewall and one
is not. Both servers have multiple IAX peers. The NAT firewall has port 4569
mapped through to the asterisk server behind. But, the natted server is
almost permanently unreachable from this non-natted server, even though, the
non-natted server is almost permanently _reachable_ from the natted server.
Details are below with iax2 debug and core debug 3. I actually have an
Asterisk 1.2 and an Asterisk 1.4 server in the non-natted role, and both
have the same issue. However, I have another non-natted server (on a
different ISP) that can talk fine to the natted server.

(IP addresses replaced with names.)

myNonNattedServer*CLI> iax2 show peers
Name/Username    Host                 Mask             Port          Status

myNattedServUN   myNattedServer  (S)  255.255.255.255  4569 (T)
UNREACHABLE

[May 14 19:06:05] DEBUG[5549]: chan_iax2.c:1154 update_max_nontrunk: New max
nontrunk callno is 7
[May 14 19:06:05] DEBUG[5549]: chan_iax2.c:1252 find_callno: Creating new
call structure 6
[May 14 19:06:05] DEBUG[5551]: chan_iax2.c:1644 send_packet: Sending 12 on
6/0 to myNattedServer:4569
Tx-Frame Retry[000] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: POKE

   Timestamp: 00012ms  SCall: 00006  DCall: 00000 [myNattedServer:4569]
Rx-Frame Retry[ No] -- OSeqno: 000 ISeqno: 001 Type: IAX     Subclass: PONG

   Timestamp: 00012ms  SCall: 00005  DCall: 00006 [myNattedServer:37657]
Tx-Frame Retry[ No] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: INVAL

   Timestamp: 00000ms  SCall: 00006  DCall: 00005 [myNattedServer:37657]
[May 14 19:06:05] DEBUG[5546]: chan_iax2.c:4788 raw_hangup: Raw Hangup
myNattedServer:37657, src=6, dst=5
[May 14 19:06:06] DEBUG[5540]: chan_iax2.c:1644 send_packet: Sending 12 on
6/0 to myNattedServer:4569
Tx-Frame Retry[001] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: POKE

   Timestamp: 00012ms  SCall: 00006  DCall: 00000 [myNattedServer:4569]
Rx-Frame Retry[ No] -- OSeqno: 000 ISeqno: 001 Type: IAX     Subclass: PONG

   Timestamp: 00012ms  SCall: 00006  DCall: 00006 [myNattedServer:37657]
Tx-Frame Retry[ No] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: INVAL

   Timestamp: 00000ms  SCall: 00006  DCall: 00006 [myNattedServer:37657]
[May 14 19:06:06] DEBUG[5542]: chan_iax2.c:4788 raw_hangup: Raw Hangup
myNattedServer:37657, src=6, dst=6

myNattedServer*CLI> iax2 show peers
Name/Username    Host                 Mask             Port          Status
myNonNattedSeUN  myNonNattedServ (S)  255.255.255.255  4569 (T)      OK (14
ms)

Rx-Frame Retry[ No] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: POKE
   Timestamp: 00016ms  SCall: 00010  DCall: 00000 [myNonNattedServ:4569]
May 14 18:08:45 DEBUG[1196]: chan_iax2.c:1007 update_max_nontrunk: New max
nontrunk callno is 12
May 14 18:08:45 DEBUG[1196]: chan_iax2.c:1112 find_callno: Creating new call
structure 11
May 14 18:08:45 DEBUG[1196]: chan_iax2.c:6654 socket_read: Received packet
0, (6, 30)
May 14 18:08:45 DEBUG[1196]: chan_iax2.c:6848 socket_read: IAX subclass 30
received
May 14 18:08:45 DEBUG[1196]: chan_iax2.c:6857 socket_read: For call=11, set
last=16
May 14 18:08:45 DEBUG[1196]: chan_iax2.c:1515 send_packet: Sending 16 on
11/10 to myNonNattedServ:4569
Tx-Frame Retry[000] -- OSeqno: 000 ISeqno: 001 Type: IAX     Subclass: PONG
   Timestamp: 00016ms  SCall: 00011  DCall: 00010 [myNonNattedServ:4569]
Rx-Frame Retry[ No] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: INVAL
   Timestamp: 00000ms  SCall: 00010  DCall: 00011 [myNonNattedServ:4569]
May 14 18:08:45 DEBUG[1196]: chan_iax2.c:6654 socket_read: Received packet
0, (6, 10)
May 14 18:08:45 DEBUG[1196]: chan_iax2.c:6848 socket_read: IAX subclass 10
received
May 14 18:08:45 DEBUG[1196]: chan_iax2.c:7510 socket_read: Immediately
destroying 11, having received INVAL
May 14 18:08:45 DEBUG[1196]: chan_iax2.c:7513 socket_read: Destroying call
11

Also when calls are placed to myNonNattedServer from myNattedServer (which
does work), the channel name is IAX2/myNattedServer:37657-callno, as opposed
to IAX2/myNattedServUserName-53.

(BTW, if I turn off qualify on myNonNattedServer, I can still not make calls
from myNonNattedServer to myNattedServer.)

Any idea what is wrong? This used to work fine (possibly when myNattedServer
was only trying to talk to one asterisk server through the NAT - now it has
3, only one of which is working properly).

Many thanks,

Sebastian



More information about the asterisk-users mailing list