Hey everybody
It's seems I'm having a kind of magic problem.
We've got 2 uplinks in the office, one failovers another. Yesterday there was a problem with our main ISP and I swiched the router to a backup-one. Everything worked fine, but trixbox: incoming calls were ok, but outbound always returned me "the number u have dialed is out of service". I had some similar issues before, however after some trixbox reboots it started working fine. Now I can't find any way for trixbox to start working fine.
I've switched back to our main ISP, but the problem still exists: everything, but outbound calls =( There ware no changes in trixbox configs and in my ISP configs. My knowlage base has already ended up and I've got no ideas how to fix it.
Any ideas?
Thx in advance.
Outbound calls problem
bump for any suggestions
here is a piece of log, maybe it will help
== Spawn extension (macro-dialout-trunk, s, 19) exited non-zero on 'SIP/200-b7200f58' in macro 'dialout-trunk'
== Spawn extension (macro-dialout-trunk, s, 19) exited non-zero on 'SIP/200-b7200f58'
-- Executing [h@macro-dialout-trunk:1] Macro("SIP/200-b7200f58", "hangupcall|") in new stack
Full logs here:
-- Executing [18006927753@from-internal:1] Macro("SIP/200-09fa88c0", "user-callerid|SKIPTTL|") in new stack
-- Executing [s@macro-user-callerid:1] Set("SIP/200-09fa88c0", "AMPUSER=200") in new stack
-- Executing [s@macro-user-callerid:2] GotoIf("SIP/200-09fa88c0", "0?report") in new stack
-- Executing [s@macro-user-callerid:3] ExecIf("SIP/200-09fa88c0", "1|Set|REALCALLERIDNUM=200") in new stack
-- Executing [s@macro-user-callerid:4] Set("SIP/200-09fa88c0", "AMPUSER=200") in new stack
-- Executing [s@macro-user-callerid:5] Set("SIP/200-09fa88c0", "AMPUSERCIDNAME=Test") in new stack
-- Executing [s@macro-user-callerid:6] GotoIf("SIP/200-09fa88c0", "0?report") in new stack
-- Executing [s@macro-user-callerid:7] Set("SIP/200-09fa88c0", "AMPUSERCID=200") in new stack
-- Executing [s@macro-user-callerid:8] Set("SIP/200-09fa88c0", "CALLERID(all)="Test" ") in new stack
-- Executing [s@macro-user-callerid:9] Set("SIP/200-09fa88c0", "REALCALLERIDNUM=200") in new stack
-- Executing [s@macro-user-callerid:10] ExecIf("SIP/200-09fa88c0", "0|Set|CHANNEL(language)=") in new stack
-- Executing [s@macro-user-callerid:11] GotoIf("SIP/200-09fa88c0", "1?continue") in new stack
-- Goto (macro-user-callerid,s,20)
-- Executing [s@macro-user-callerid:20] NoOp("SIP/200-09fa88c0", "Using CallerID "Test" ") in new stack
-- Executing [18006927753@from-internal:2] Set("SIP/200-09fa88c0", "_NODEST=") in new stack
-- Executing [18006927753@from-internal:3] Macro("SIP/200-09fa88c0", "record-enable|200|OUT|") in new stack
-- Executing [s@macro-record-enable:1] GotoIf("SIP/200-09fa88c0", "1?check") in new stack
-- Goto (macro-record-enable,s,4)
-- Executing [s@macro-record-enable:4] AGI("SIP/200-09fa88c0", "recordingcheck|20091102-124900|1257176940.6310") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/recordingcheck
recordingcheck|20091102-124900|1257176940.6310: Outbound recording enabled.
recordingcheck|20091102-124900|1257176940.6310: CALLFILENAME=OUT200-20091102-124900-1257176940.6310
-- AGI Script recordingcheck completed, returning 0
-- Executing [s@macro-record-enable:999] MixMonitor("SIP/200-09fa88c0", "OUT200-20091102-124900-1257176940.6310.wav||") in new stack
-- Executing [18006927753@from-internal:4] Macro("SIP/200-09fa88c0", "dialout-trunk|2|18006927753||") in new stack
-- Executing [s@macro-dialout-trunk:1] Set("SIP/200-09fa88c0", "DIAL_TRUNK=2") in new stack
-- Executing [s@macro-dialout-trunk:2] GosubIf("SIP/200-09fa88c0", "0?sub-pincheck|s|1") in new stack
-- Executing [s@macro-dialout-trunk:3] GotoIf("SIP/200-09fa88c0", "0?disabletrunk|1") in new stack
-- Executing [s@macro-dialout-trunk:4] Set("SIP/200-09fa88c0", "DIAL_NUMBER=18006927753") in new stack
-- Executing [s@macro-dialout-trunk:5] Set("SIP/200-09fa88c0", "DIAL_TRUNK_OPTIONS=tr") in new stack
-- Executing [s@macro-dialout-trunk:6] Set("SIP/200-09fa88c0", "OUTBOUND_GROUP=OUT_2") in new stack
-- Executing [s@macro-dialout-trunk:7] GotoIf("SIP/200-09fa88c0", "0?nomax") in new stack
-- Executing [s@macro-dialout-trunk:8] GotoIf("SIP/200-09fa88c0", "0?chanfull") in new stack
-- Executing [s@macro-dialout-trunk:9] GotoIf("SIP/200-09fa88c0", "0?skipoutcid") in new stack
-- Executing [s@macro-dialout-trunk:10] Set("SIP/200-09fa88c0", "DIAL_TRUNK_OPTIONS=") in new stack
-- Executing [s@macro-dialout-trunk:11] Macro("SIP/200-09fa88c0", "outbound-callerid|2") in new stack
-- Executing [s@macro-outbound-callerid:1] ExecIf("SIP/200-09fa88c0", "0|SetCallerPres|") in new stack
-- Executing [s@macro-outbound-callerid:2] ExecIf("SIP/200-09fa88c0", "0|Set|REALCALLERIDNUM=200") in new stack
== Begin MixMonitor Recording SIP/200-09fa88c0
-- Executing [s@macro-outbound-callerid:3] GotoIf("SIP/200-09fa88c0", "1?normcid") in new stack
-- Goto (macro-outbound-callerid,s,6)
-- Executing [s@macro-outbound-callerid:6] Set("SIP/200-09fa88c0", "USEROUTCID=") in new stack
-- Executing [s@macro-outbound-callerid:7] Set("SIP/200-09fa88c0", "EMERGENCYCID=") in new stack
-- Executing [s@macro-outbound-callerid:8] Set("SIP/200-09fa88c0", "TRUNKOUTCID=%username% ") in new stack
-- Executing [s@macro-outbound-callerid:9] GotoIf("SIP/200-09fa88c0", "1?trunkcid") in new stack
-- Goto (macro-outbound-callerid,s,12)
-- Executing [s@macro-outbound-callerid:12] ExecIf("SIP/200-09fa88c0", "1|Set|CALLERID(all)=%username% ") in new stack
-- Executing [s@macro-outbound-callerid:13] ExecIf("SIP/200-09fa88c0", "0|Set|CALLERID(all)=") in new stack
-- Executing [s@macro-outbound-callerid:14] ExecIf("SIP/200-09fa88c0", "0|SetCallerPres|prohib_passed_screen") in new stack
-- Executing [s@macro-dialout-trunk:12] ExecIf("SIP/200-09fa88c0", "0|AGI|fixlocalprefix") in new stack
-- Executing [s@macro-dialout-trunk:13] Set("SIP/200-09fa88c0", "OUTNUM=18006927753") in new stack
-- Executing [s@macro-dialout-trunk:14] Set("SIP/200-09fa88c0", "custom=SIP/vitel-outbound") in new stack
-- Executing [s@macro-dialout-trunk:15] ExecIf("SIP/200-09fa88c0", "0|Set|DIAL_TRUNK_OPTIONS=M(setmusic^)") in new stack
-- Executing [s@macro-dialout-trunk:16] Macro("SIP/200-09fa88c0", "dialout-trunk-predial-hook|") in new stack
-- Executing [s@macro-dialout-trunk-predial-hook:1] MacroExit("SIP/200-09fa88c0", "") in new stack
-- Executing [s@macro-dialout-trunk:17] GotoIf("SIP/200-09fa88c0", "0?bypass|1") in new stack
-- Executing [s@macro-dialout-trunk:18] GotoIf("SIP/200-09fa88c0", "0?customtrunk") in new stack
-- Executing [s@macro-dialout-trunk:19] Dial("SIP/200-09fa88c0", "SIP/vitel-outbound/18006927753|300|") in new stack
-- Called vitel-outbound/18006927753
-- Got SIP response 482 "Loop Detected" back from 64.2.142.105
-- Now forwarding SIP/200-09fa88c0 to 'Local/18006927753@from-trunk' (thanks to SIP/vitel-outbound-09fe8060)
-- Executing [18006927753@from-trunk:1] Set("Local/18006927753@from-trunk-1cd8,2", "__FROM_DID=18006927753") in new stack
-- Executing [18006927753@from-trunk:2] NoOp("Local/18006927753@from-trunk-1cd8,2", "Received an unknown call with DID set to 18006927753") in new stack
-- Executing [18006927753@from-trunk:3] Goto("Local/18006927753@from-trunk-1cd8,2", "s|a2") in new stack
-- Goto (from-trunk,s,2)
-- Executing [s@from-trunk:2] Answer("Local/18006927753@from-trunk-1cd8,2", "") in new stack
-- Local/18006927753@from-trunk-1cd8,1 answered SIP/200-09fa88c0
-- Executing [s@from-trunk:3] Wait("Local/18006927753@from-trunk-1cd8,2", "2") in new stack
-- Told Local/866XXXXXXX@from-pstn-888c,2 in 1 their queue position (which was 1)
--
--
--
-- Executing [s@from-trunk:4] Playback("Local/18006927753@from-trunk-1cd8,2", "ss-noservice") in new stack
--
-- Started music on hold, class 'default', on Local/866XXXXXXX@from-pstn-888c,2
This is most likely an issue with Vitelity. A Google search shows that you are not alone, users of that ip have also had issues.
Give Vitality a call. The part of the log that screams Vitelity issues is:
-- Called vitel-outbound/18006927753 -- Got SIP response 482 "Loop Detected" back from 64.2.142.105
Already did, they told me, that it's something on my side =(
tried with another router (withou nat) - works fine, so, probably the problem is somewhere in my uplink settings... any suggestions?
What kind of router did you have? What kind of router do you have now? On the first router what ports were forwarded to your trixbox? Do you have a dynamic ip? Do you use DSL/Cable/t1/etc... for an internet connection? You have to give more information in yours posts, knowing you already called Vitelity or posting router type/setup info/internet connection type would speed up the process. You said nothing changed, but if it is truly on your end something had to have somewhere. However, with my n00b knowledge, i'm still skeptical that it makes it all the way to Vitality's server and back to you. If you provide more information, it'll provide incentive for someone smarter than me to help solve your problem.
I've got mikrotik router with 506X as service ports (they don't nat or something like that), besides I've got a dedicated ip address, my_ip:5060 is forwarded to my trixbox.
Both my providers are cable-ones without any specific settings, that can affect trixbox. I'm guessing, that if my box was working and now it's not, than something has definately changed somewhere, but the thing is that I did not change it and nobody should. Maybe that's some kind of internal error, I dunno.
I am confused here -- you stated late in the post you have a dedicated IP address.. but in the original post you state you have two internet connections and you changed over to your backup one.. Two different internet connections would mean two separate IP addresses.
Now Vitelity uses both IP authenticated and username/password -- which are you using?
Changing ISPs.. internet connections -- would mean either a amportal restart - restart of the box -- or save of a trunk and reload to get your Vitelity trunk registered again on the new connection with a different IP address.
Another common characteristic of cable modems I have seen.. is when replugging in another router to it.. requires a reboot of the modem too in order to get it working properly.
I would seriously consider - installing a pfSense router using a standard PC like a DELL Optiplex with 3 network cards using failover.. so you would have both internet connections hooked to it.. then if one goes down - you do nothing.. your trixbox automatically adjusts. Then if and when your default internet connection comes back on pfSense will switch back to that internet connection.
My team and I just finished configuring pfSense 1.2.3 RC3 for failover automatically - for placement on a off-shore rig. It worked so well we didn't even loose the test call when removing the power from the main internet connection to test the failover feature. We then plugged it back in - hear a silence period as it switches back !!
Watching the ques of the traffic shaper during the call - we even saw the call traffic get moved to the correct que during the failover.
Putting in a pfSense or any other failover device - means Trix doesn't have to do anything.
Jason,
You should add that the Internet connection was either a private link or a VPN that isolated the layer 3 failover. It would be impossible to change gateways and keep an RTP steam up. In the event of a gateway failover the NAT source address would have to change. Asterisk only supports a single NAT source entry.
Now if you are indicating that the pfSense can rewrite the SIP packets as an application layer gateway I would have to see it to believe it.
Yeah, I've got 2 separate ip addresses. My device should also do automatic failover, however there seems to be some kind of a bug with the particular one and sometimes i switch it manually (turn on backup interface and main - off)
I will look thru the pfSense, did ur configuration required any custom coding?

Member Since:
2009-04-19