Sziasztok!
Szerverhotelben lakó Asterisket próbálok összekapcsolni Samsung Galaxy 3-ra telepített Sipdroid programmal. Eddig eredménytelenül. A hívás felépül, de semmi hang nem megy át egyik irányban sem.
A sip.conf részlete:
[+36XXXXXXXXX]
type=friend
context=family
callerid=<+36XXXXXXXXX>
nat=yes
call-limit=1
disallow=all
allow=gsm
host=dynamic
qualify=yes
secret=******
insecure=invite,port
canreinvite=yes
[+36YYYYYYYYY]
type=friend
context=family
callerid=<+36YYYYYYYYY>
nat=yes
call-limit=1
disallow=all
allow=gsm
host=dynamic
qualify=yes
secret=*****
insecure=invite,port
canreinvite=yes
Sipdroid beállítva, STUN szerver (stunserver.org) konfigurálva. NAT-olt wifi hálózatról és Vodafone HSDPA hálózatról is ugyanígy viselkedik.
Minden ötletet várok, mert egy napot már eltöltöttem vele eredménytelenül.
Arrabonus
Hozzászólások
nekem a sipdroiddal mindig voltak gondok, szerintem nézzél meg más klienseket is
Ubuntu 10.04, Thinkpad x61s
pl. csipsimple
Köszönöm! Kipróbáltam csipsimple-t és 3CXPhone-t is, ezekkel még rosszabb a helyzet. Aztán megpróbáltam egy ekiga-t a notebookon, azzal sem megy. Valószínűbb, hogy az asterisk és a NAT környékén van a hiba, de már ezerszer átnéztem és nem találtam semmit.
Ez a sip.conf reszlet pontosan micsoda? A trunkjeid? A klienseid? A +36 -os cucc alapjan elso korben trunkot tippelek.
Mi a sip.conf tobbi resze? STUN szervert allitottal a klienseidben? etc. etc. Ezzel csak azt akarom mondani, hogy nagyon szegenyes ez a rendszerismerteto.
--
Ezek a kliensek, trunk még nincs beállítva, egyelőre egymás közötti hívásokat próbálok. Mindegyik kliens megkapta a telefon hívószámát, amelyikre a sipdroid telepítve van. STUN szervert próbáltam több külsőt is, sőt telepítettem az asteriskes gépre is. Nem ment egyikkel sem.
Végül openvpn tunnelt konfiguráltam mindegyik telefon és az asterisk közé, azon keresztül működik.
Most a visszhang elnyomásra keresek megoldást...
A vpn tunnel hulyeseg, ellenben meg mindig erdekelne, milyen konfiggal kinlodsz. Az a baj, hogy elmondod az igazsag egy reszet, es azt varod, hogy a tobbit kitalaljuk. Nos, ez nem megy.
--
Szerintem mindent leírtam ami lényeges, de most leírom kicsit részletesebben:
Adott egy debian 4.0 (etch) szerver rajta Asterisk 1.2.13. A későbbiekben az Asteriskre VOIP trunkö(ke)t is fogok konfigurálni. Van még négy Samsung Galaxy 3 telefon Android 2.1-el.
Első körben szeretném, ha a telefonok egymás közötti VOIP hívást tudnának folytatni (az internetkapcsolat módjától [WIFI/3G] függetlenül), az Asterisken keresztül. Később a VOIP trunk(ök)ön kimenő és bejövő hívásokat is kezelni kell.
Nálam a http://www.voip-info.org/wiki/view/Asterisk+SIP+NAT+solutions oldalon felsorolt esetek közül a 9. áll fenn, de az ott javasolt megoldás nem működik. A telefonok hívhatják egymást, a hívást lehet fogadni, de hang nem megy át egyik irányban sem. Próbáltam saját és publikus STUN szerverrel, valamint STUN nélkül is. Biztos, hogy a NAT kavar be, mert VPN tunnelen minden működik.
Ide linkelem a sip.conf és az extensions.conf jelenlegi változatát:
sip.conf
extensions.conf
Az extensions.conf roppant erdekes. Elkepzelhetetlenul regen konfiguraltam mar Asterisket, de ugy tudom, ahhoz, hogy a kliensek egymast hivhassak ilyen szabalyok kellenek:
Az a kukacoskodas, amit ott csinalsz, az valami nem tudom milyen realm akar lenni, de igy nem csodalom, hogy nem mukodik a dolog. Az a kukacos resz ottan az olyan nevu trunk/domain/whatever nelkul az eletben nem fog mukodni.
Azt ajanlom, hogy probald meg valami egyszerubbel, a klienseknek legyen egy sima szama, +36 meg korzetszam nelkul, csinald meg, hogy ugy mukodjon a dolog, azutan lehet ilyen kukacoskodasokat is csinalni. Mellesleg az alahuzasjel az azt hiszem asterisk "regularis" kifejezes kezdetet jeloli (az asterisknek total sajat regex nyelvezete van, ebbe nem mennek bele).
Meg jobb lenne, ha vegigmennel egy total alap Asterisk tutorialon, mielott ennyire tulbonyolitanad a dolgokat.
Ha jol emlexem, a SIPdroid-nak meg lehet adni a lokalis SIP extension-t (o lehet, hogy usernevnek hivja), azon el fogod erni a klienseidet, nem kell a rendes telefonszamuk ehhez.
PS: Az Asterisk 1.2 nagyon jo, de hihetetlen regi, raadasul mar nem backportolnak ra hibajavitasokat, en min. 1.4-gyel csinalnam, biztos van olyan tarolo, ahol talalsz...
--
Az exten szintaxisa három paramétert vár, az _ egyszerűen a szám elejére illeszkedést jelent.
Részlet egy alap Asterisk tutorialból:
A sipdroid képes a névjegyekben eltárolt számok hívására, úgy hogy a szám kiválasztása után kell eldönteni: SIP, vagy GSM interfészen menjen ki a hívás. Ezért adom meg ilyen formában a számokat.
A Dial utasítás @ utáni része explicit módon megadja, hogy a sip.conf melyik szekciójában definiált SIP interfészen menjen ki a hívás: lásd http://www.voip-info.org/wiki/view/Asterisk+config+sip.conf "Another example" című része.
Az 1.2-es asterisk része a disztribúciónak. Próbaképpen fordítottam és telepítettem egy 1.8 beta-t, de azzal sem működött, ezért tértem vissza az eredetire.
Ismétlem: Openvpn tunnelen csatlakozva minden működik a korábban linkelt sip.conf és extension.conf használatával, tehát a NAT kezelésével van problémája.
A vpn-t + sip-et birja minden gond nelkul?? Nekem pont ezt a felallast kellene oszehozni, mert publikus wifi van sokhelyen es azert megse szeretnenk hogy mindenki hallgassa a beszelgeteseket.
mgb
Igen, bár kicsit nagy a késleltetés, emiatt visszhangos a kapcsolat.
De neked teljesen felesleges megadni a SIP interfeszt. Mivel itt p2p hivasrol van szo, bosegesen eleg, ha siman csak az adott SIP user-t hivnad, es nem bonyolitanad tul.
Mellesleg, azt megfigyelted, hogy a SIP interfesz peer abban a peldaban es nem friend? A ketto kozott kulonbseg van am.
En olyan konfigot csinalnek, hogy:
es kiprobalnam, hogy igy megy-e. Mert alapvetoen neked nincsenek SIP interfeszeid, csak SIP klienseid. Akkor kellene explicit interfeszt megadnod, ha lenne SIP trunk bekonfiguralva, es nem lokalis usert akarnal hivni, ilyenrol azonban szo sincs, epp ezert teljesen feleslegesen bonyolitottad tul a dolgot. A lokalisan bejelentkezett, regisztralt usereket nem kell, es IMHO nem is lehet trunk-kent kezelni.
OpenVPN mellett azert mukodhetett a dolog, mert ilyenkor nincs NAT, es a SIP ilyen helyzetben teljesen maskepp mukodik.
--
Feljebb már írtam, hogy a későbbiekben az Asteriskre VOIP trunkö(ke)t is fogok konfigurálni. Ki akarom kényszeríteni, hogy az egymás közötti hívásokat az Asterisk közvetlenül a megfelelő kliensnek továbbítsa, az egyéb hívásokat pedig tegye a megfelelő trunkre.
Jól látod, tényleg azért működik VPN-en, mert nincs NAT. A kérdés az, hogy miért nem működik NAT esetén, hiszen a leírások szerint elég lenne a nat=yes és a qualify=yes beállítás.
NAT esetén a hívás kicsöng, ha a hívott felveszi, akkor a hívó is felépült kapcsolatot jelez, de hang nem megy át egyik irányban sem. Bárki leteszi, a kapcsolat lebomlik. Tipikus NAT probléma, valahol az RTP csatorna felépülése (fel nem épülése) körül van gond, de nem tudom, hogy hol.
A client vs peer különbségről ennyit ír az O'Reilly könyv:
type = Description
peer Match incoming requests to a configuration entry using the source IP address and port number.
user Match incoming requests to a configuration entry using the username in the From header of the
SIP request. This name is matched to a section in sip.conf with the same name in square
brackets.
friend This enables matching rules for both peer and user. This is what is most commonly used for SIP
phones.
Nem hiszem, hogy a peer/friend különbség esetemben sokat jelentene.
Szerintem az a baj, hogy tulsagosan kenyszerited.
Az RTP-nel altalaban a szerver oldal tud nyugos lenni, en megprobalnam lefixalni a RTP port range-t es kinyitni azt a tuzfalamon. Az RTP folyam az UDP-n megy, es a kliensek egymas kozt beszelik meg, hogy melyik porton menjen a csevej.
Erdemes lehet betolteni az nf_conntrack_sip modult is a kernelbe.
--
Az otthoni tűzfalamhoz hozzányúlhatok, de egyéb wifi hálón is használjuk a telefonokat, sőt mobilneten is működnie kell(ene). Azt hiszem, madar a VPN.
En a szerver tuzfalara gondoltam. Vagy kerekes szerver, es huzgaljatok mindig oda, ahol kell? :-)
--
linphone
Koszonjuk ezt a mely, kimerito, am teljesen felesleges hozzaszolast. Az on velemenye fontos szamunkra.
--
Létezik linphone androidra: http://www.linphone.org/eng/linphone/news/android.html
Oke, es ez hol megoldas egy alapvetoen Asteriskes problemara? Javits ki, ha tevednek, de a linphone meg mindig SIP kliens
--
Gondolom azt javasolta,hogy a sipdroid helyett használjak linphone-t a telefonon.
Erre nekem is sikerult rajonnom, azt akartam neki megmondani finoman, hogy sikerult totalisan irrelevansat belebofognie a topicba. Csak en finom vagyok, meg urias.
--