Автор Тема: Проблем с Asterisk и регисрацията на SIP потребители  (Прочетена 3606 пъти)

Astor

  • Напреднали
  • *****
  • Публикации: 332
    • Профил
Здравейте, много съм бос в тази сфера, мъча се да подкарам някаква SIP централа.
Проблемът е, че не мога да регистрирам вече създадените sip потребители. Използвам asterisk, а за softphone - zoiper.

Водил съм се от тук: http://www.linux-bg.org/forum/index.php?topic=40412.5;wap2
и тук: https://wiki.asterisk.org/wiki/display/AST/Creating+Dialplan+Extensions

В sip.conf имам следното:
Цитат
[100]
type=peer
host=dynamic
secret=100
context=users
mailbox=user1@localdomain

[200]
type=peer
host=dynamic
secret=200
context=users
mailbox=user2@localdomain

в extensions.conf:
Цитат
exten => 100,1,Macro(phone)
exten => 200,1,Macro(phone)

И малко по-различни настройки да сложа проблемът е все един и същ. Попълвам потребител в zoiper. След което като дам Register се регистрира ПОНЯКОГА и то за малко.
Цитат
asterisk*CLI>
 -- Registered SIP '200' at X.Y.0.3 port 5060
Крайният ефект е че не мога да осъществявам никакви повиквания. При набиране на отсрещния номер излиза Dialing на zoiper и до там, а в asterisk*CLI:
Цитат
asterisk*CLI>
 == Using SIP RTP CoS mark 5

Как мога от asterisk да тествам някой от потребителите? Да го набера например?
Цитат
localhost*CLI> sip show peers
Name/username              Host            Dyn Nat ACL Port     Status    
100/100                    X.Y.0.21        D          5060     Unmonitored
200/200                    X.Y.0.3         D          5060     Unmonitored
2 sip peers [Monitored: 0 online, 0 offline Unmonitored: 2 online, 0 offline]
Активен

Няма начин, да няма начин!

senser

  • Напреднали
  • *****
  • Публикации: 1328
    • Профил
Като начало вдигни debug & verbosity:
Код:
*CLI> core set debug 10
*CLI> core set verbosity 10
*CLI> sip set debug on
и виж като набираш какво ще видиш в конзолата.

Не знам каква ОС ползваш, но не ти препоръчвам zoiper. Опитай примерно Екига.

Ако искаш да набереш тел от конзолата разгледай originate channel.

Също така задай username при описанието на peer
Активен

Astor

  • Напреднали
  • *****
  • Публикации: 332
    • Профил
Благодаря ти за отговора senser!!!
Полезни команди научх :)
Та след като ги въведох долу горе локализирах проблем.
Когато махна default gw от машините (Windows), нещата си вървят идеално в локалната мрежа.
Имат ли сложен defautl gw се получава следното:
Неуспешна регистрация "User (Registering)"
В конзолата излиат следните съобщения:
Пояснение: (Тук логовете са с IP адреси от друга мрежа, просто тествах на друго място)
Цитат
<--- SIP read from UDP:192.168.6.102:5060 --->
REGISTER sip:192.168.6.101;transport=UDP SIP/2.0
Via: SIP/2.0/UDP 87.120.6.126:1062;branch=z9hG4bK-d8754z-32ade03949e17944-1---d8754z-
Max-Forwards: 70
Contact: <sip:test@192.168.6.102:5060;rinstance=b7675c6ce720b870;transport=UDP>
To: "test"<sip:test@192.168.6.101;transport=UDP>
From: "test"<sip:test@192.168.6.101;transport=UDP>;tag=9f27bd23
Call-ID: MmQ0MTNjNDhjMmFmZjg4NDNhNzE4OTM1NTUzNzIwNDA.
CSeq: 11 REGISTER
Expires: 3600
Allow: INVITE, ACK, CANCEL, BYE, NOTIFY, REFER, MESSAGE, OPTIONS, INFO, SUBSCRIBE
Supported: replaces, norefersub, extended-refer, X-cisco-serviceuri
User-Agent: Zoiper rev.11137
Authorization: Digest username="test",realm="asterisk",nonce="180eebad",uri="sip:192.168.6.101;transport=UDP",response="1a7b99455627466297fbc153cd853e63",algorithm=MD5
Allow-Events: presence, kpml
Content-Length: 0


<------------->
--- (15 headers 0 lines) ---
Sending to 87.120.6.126 : 1062 (no NAT)
[Sep 15 02:47:09] NOTICE[2540]: chan_sip.c:12779 check_auth: Correct auth, but based on stale nonce received from '"test"<sip:test@192.168.6.101;transport=UDP>;tag=9f27bd23'

<--- Transmitting (no NAT) to 87.120.6.126:1062 --->
SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 87.120.6.126:1062;branch=z9hG4bK-d8754z-32ade03949e17944-1---d8754z-;received=192.168.6.102
From: "test"<sip:test@192.168.6.101;transport=UDP>;tag=9f27bd23
To: "test"<sip:test@192.168.6.101;transport=UDP>;tag=as0838c61e
Call-ID: MmQ0MTNjNDhjMmFmZjg4NDNhNzE4OTM1NTUzNzIwNDA.
CSeq: 11 REGISTER
Server: Asterisk PBX 1.6.2.11
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO
Supported: replaces, timer
WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="3af00913", stale=true
Content-Length: 0


<------------>
Scheduling destruction of SIP dialog 'MmQ0MTNjNDhjMmFmZjg4NDNhNzE4OTM1NTUzNzIwNDA.' in 32000 ms (Method: REGISTER)
....
и така се повтаря това постоянно
Махна ли def gw нещата се орпавят.
Да поясня IP: 87.120.6.126 e адрес на рутер в следната схема:
Lan--------(eth:192.168.6.1) ROUTER (eth:87.120.6.126)----------INternet
192.168.6.101 - e asterisk-a, част от Lаn-а
Нещо не настройвам аз както трябва, защо се получава така?
« Последна редакция: Sep 15, 2011, 05:57 от Astor »
Активен

Няма начин, да няма начин!

senser

  • Напреднали
  • *****
  • Публикации: 1328
    • Профил
Какво имаш сетнато в sip.conf за
nat
localnet
externhost
Активен

laskov

  • Напреднали
  • *****
  • Публикации: 3166
    • Профил
Цитат
Когато махна default gw от машините (Windows), нещата си вървят идеално в локалната мрежа
Това може ли да е мрежов проблем - неправилно зададена мрежова маска?
Активен

Не си мислете, че понеже Вие мислите правилно, всички мислят като Вас! Затова, когато има избори, идете и гласувайте, за да не сте изненадани после от резултата, и за да не твърди всяка партия, че тя е спечелила, а Б.Б. (С.С., ...) е загубил, а трети да управлява.  Наздраве!  [_]3

Bogo

  • Напреднали
  • *****
  • Публикации: 632
  • Distribution: Debian
  • Window Manager: cmd
    • Профил
В sip.conf пробай така:

[200]
type=peer
host=dynamic
canreinvite=no
nat=yes
secret=200
context=users
mailbox=user2@localdomain
Активен

live free or die хард :)

Astor

  • Напреднали
  • *****
  • Публикации: 332
    • Профил
Благодаря ви за отговорите! Проблемът май се разреши!
Така си редкатирах sip.conf-а:
Цитат
[root@asterisk]# cat sip.conf | grep -v "^ *;" | grep -v "^ *$"

[general]
port = 5060
bindaddr = 0.0.0.0
disallow = all
allow = ulaw
subscribecontext = device-hints
[100]
type = peer
host = dynamic
canreinvite = no
nat = yes

secret = 100
context = users
[200]
type = peer
host = dynamic
secret = 200
context = users
[300]
type = peer
host = dynamic
secret = 300
context = users

@senser, това което съм дал горе е целия sip.conf, както писах преди ползвах готова конфигурация от друга тема във форума. Настройките: nat, localnet, externhost не съм ги задавал, явно са по подразбиране.
@Bogo, след като добавих редовете удебелени в sip.conf за потребител 100, той вече нямаше такъв проблем с регистрацията, останалите продължаваха да го имат. Т.е. проблемът се реши.
Сега остава да чета повече, за да не се излагам :) Само не разбрах защо се получават такива неща. Трябва изречно да се зададе, че дадения потребител е зад nat, а защо voiper, след като съм му задал ТОЧНО кой е domain-a в опциите (от локалната мрежа), тръгва да го търси някаде навън? Или нещо друго става което аз не съм разбрал.
Активен

Няма начин, да няма начин!

Astor

  • Напреднали
  • *****
  • Публикации: 332
    • Профил
Здравейте искам да ви попитам при следната ситуация:

sip clients -------- NAT Router1 ----------- Internet -------- NAT Router2 -------- Asterisk
                                                               |
                                                    sip clients (Public IPs)

Само с пренасочване на порт 5060 на NAT Router 2, биха ли се регистрирали успешно всички sip clients?
Може би за тези клиенти които са зад Nat router 1 трябва да е зададена опцията nat=yes. И отделно в sip.conf да се сложи и externhost=PublicIP на NAt Router 2.
Това естествено може да се изтества и да се прочете малко по въпроса...прави сте ако ми се скарате :)
« Последна редакция: Sep 18, 2011, 00:35 от Astor »
Активен

Няма начин, да няма начин!

senser

  • Напреднали
  • *****
  • Публикации: 1328
    • Профил
Можеш да зададеш опцията "nat = yes" глобално, а не за всеки клиент (в sip.conf). Най-общо казано, настройката се използва от Астериск, за да определи адреса, с който да формира СИП пакетите. Пренасочването на порт 5060 мисля, че ще е достатъчно за да могат клиентите да се регистрират, но не и за провеждането на разговор - трябва да пренасочиш и RTP портовете (медията се предава върху RTP). Кои са тези портове при теб можеш да провериш в rtp.conf (по подразбиране са от 5000 до 31000)
Активен