Hangup after few seconds on external phones

We have setup AsteriskNow and just about everything is working correctly except, when calling in from external sip phones. The external sip phone connects to the server, which is behind a firewall and NATed. We can dial out to the extension of the external phone, answer and talk fine. But if dialing to an internal extension from the external phone, the internal phone rings and after answering the call is dropped after 10-14 seconds and there is never any audio. The external phone doesn’t know that the call was picked up still shows a status of ringing. Also the external phone doesn’t know that the call was dropped and stays off hook.

I’ve been googling and looking at the forums since variations on this seem to be common.

I’ve confirmed that the localnet and externip are set correctly.
I’ve tried with the ALG SIP on and off in the D-Link router.
I’ve tried NAT on and off.

Any other suggestions?

[2012-04-03 15:06:59] VERBOSE[5730] pbx.c: – Executing [s@macro-dial-one:38] Dial(“SIP/700-00000036”, “SIP/100,15,tr”) in new stack
[2012-04-03 15:06:59] VERBOSE[5730] netsock.c: == Using SIP RTP TOS bits 184
[2012-04-03 15:06:59] VERBOSE[5730] netsock.c: == Using SIP RTP CoS mark 5
[2012-04-03 15:06:59] VERBOSE[5730] app_dial.c: – Called 100
[2012-04-03 15:07:00] VERBOSE[5730] app_dial.c: – SIP/100-00000037 is ringing
[2012-04-03 15:07:03] VERBOSE[5730] app_dial.c: – SIP/100-00000037 answered SIP/700-00000036
[2012-04-03 15:07:15] WARNING[3380] chan_sip.c: Maximum retries exceeded on transmission OTRiZGUxNmIzM2MzYWU3NDBlY2U1NDc5YzhlOTJmYjM. for seqno 2 (Critical Response) – See https://wiki.asterisk.org/wiki/display/AST/SIP+Retransmissions
[2012-04-03 15:07:15] WARNING[3380] chan_sip.c: Hanging up call OTRiZGUxNmIzM2MzYWU3NDBlY2U1NDc5YzhlOTJmYjM. - no reply to our critical packet (see https://wiki.asterisk.org/wiki/display/AST/SIP+Retransmissions ).
[2012-04-03 15:07:15] VERBOSE[5730] pbx.c: – Executing [h@macro-dial-one:1] Macro(“SIP/700-00000036”, “hangupcall,”) in new stack
[2012-04-03 15:07:15] VERBOSE[5730] app_macro.c: == Spawn extension (macro-hangupcall, s[2012-04-03 15:07:15] VERBOSE[5730] pbx.c: – Executing [s@macro-hangupcall:1] GotoIf(“SIP/700-00000036”, “1?theend”) in new stack
[2012-04-03 15:07:15] VERBOSE[5730] pbx.c: – Executing [s@macro-hangupcall:1] GotoIf(“SIP/700-00000036”, “1?theend”) in new stack
[2012-04-03 15:07:15] VERBOSE[5730] pbx.c: – Goto (macro-hangupcall,s,3)
[2012-04-03 15:07:15] VERBOSE[5730] pbx.c: – Executing [s@macro-hangupcall:3] Hangup(“SIP/700-00000036”, “”) in new stack
[2012-04-03 15:07:15] VERBOSE[5730] app_macro.c: == Spawn extension (macro-hangupcall, s, 3) exited non-zero on ‘SIP/700-00000036’ in macro ‘hangupcall’
[2012-04-03 15:07:15] VERBOSE[5730] app_macro.c: == Spawn extension (macro-dial-one, s, 38) exited non-zero on ‘SIP/700-00000036’ in macro ‘dial-one’
[2012-04-03 15:07:15] VERBOSE[5730] app_macro.c: == Spawn extension (macro-exten-vm, s, 14) exited non-zero on ‘SIP/700-00000036’ in macro ‘exten-vm’
[2012-04-03 15:07:15] VERBOSE[5730] pbx.c: == Spawn extension (from-internal, 100, 2) exited non-zero on ‘SIP/700-00000036’