Вообщем такая проблема, у меня клиенты находятся внутри локальной сети, в инет выходят через NAT (линуксовый сервак). Астериск вообще висит на облаке в амазоне, у него есть реал айпишник. Оба клиента авторизируются на астериске, звонят друг другу, а вот данные не идут. Как быть? Я так понимаю при регистрации клиенты посылают запрос на сервер поэтому NAT и пускает их обратно, поэтому они авторизуются, а вот когда начинает отрабатывать RTP то соединение не проходит потому что оно идет на NAT извне и не инициировано изнутри, вообще у кого какие идеи есть?
у облака в амазоне НЕТ реалного адреса. в амазоне внутри все адреса вида 10.х.х.х. тоесть в облаке ВСЕГДА включать НАТ. и писать externalip= астериску. иначе не работает.
тоесть отрабатываете стандартную систему двойного ната. в облаке пробрасываете порты 5060, 10000-20000 внутрь. в sip.conf
[general]
nat=always
externip=ip_of_ec2_isntance
localnet=10.0.0.0/8
после этого все прекрасно работает.
ответил 2011-03-04 19:09:18 +0400
Этот пост - вики. Любой с кармой >300 может улучшить его.
Должно работать. nat=yes включили в настройках SIP абонентов?
Уже совсем растерялся как быть, все перепробовал, вот sip.conf
[1]
type=friend
secret=user1
qualify=yes
port=5060
permit=0.0.0.0/0.0.0.0
nat=yes
host=dynamic
dial=SIP/1
context=default
callerid=device <1>
qualify=yes
sipreinvite=no
externip = 195.88.73.251
[2]
type=friend
secret=user2
qualify=yes
port=5060
permit=0.0.0.0/0.0.0.0
nat=yes
host=dynamic
dial=SIP/2
context=default
callerid=device <2>
qualify=yes
sipreinvite=no
externip = 195.88.73.251
[444]
type=friend
qualify=yes
port=5060
permit=0.0.0.0/0.0.0.0
nat=yes
host= 50.17.226.11
dial=SIP/444
context=default
callerid=device <444>
externalip = 50.17.226.11
444 это типа операторский номер, если звоню на него должно игратся звуквое меню Если подключаю впн все работает значит проблема не в амазоне в в моем нате, что делать? Нат под линуксом, вот код ната
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 172.16.120.5/32 -o ppp0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 195.88.73.251/32 -o eth1 -j MASQUERADE
50.17.226.11 это айпи сервака на амазоне на котором висит астериск 195.88.73.251 внешний айпи моего ната
externip = 50.17.226.11
жолжно быть в [general] секции!!!! я вам уже три раза сказал это
[general]
nat=always
externalip=50.17.226.11
localnet=10.0.0.0/8
[1]
type=friend
secret=user1
port=5060
permit=0.0.0.0/0.0.0.0
nat=yes
host=dynamic
dial=SIP/1
context=default
callerid=device <1>
externip = 195.88.73.251
[2]
type=friend
secret=user2
port=5060
permit=0.0.0.0/0.0.0.0
nat=yes
host=dynamic
dial=SIP/2
context=default
callerid=device <2>
externip = 195.88.73.251
[444]
type=friend
qualify=yes
port=5060
permit=0.0.0.0/0.0.0.0
nat=no
host=dynamic
dial=SIP/444
context=default
callerid=device <444>
вот sip.conf такой как вы meral мне предложили, он все равно не работает, вот скриншот параметров моего сервера на амазоне если нужно
-- Registered SIP '1' at 195.88.73.251 port 5060
[Mar 6 10:17:35] NOTICE[9376]: chan_sip.c:21331 handle_request_subscribe: Received SIP subscribe for peer without mailbox: 1
== Using SIP RTP CoS mark 5
-- Executing [444@default:1] Set("SIP/1-00000001", "home="/home/ubuntu/astersounds"") in new stack
-- Executing [444@default:2] Wait("SIP/1-00000001", "1") in new stack
-- Executing [444@default:3] Playback("SIP/1-00000001", ""/home/ubuntu/astersounds"/conf-adminmenu") in new stack
-- <sip 1-00000001=""> Playing '/home/ubuntu/astersounds/conf-adminmenu.slin' (language 'en')
-- Executing [444@default:4] Dial("SIP/1-00000001", "SIP/444,20") in new stack
== Using SIP RTP CoS mark 5
[Mar 6 10:18:03] WARNING[10014]: app_dial.c:1745 dial_exec_full: Unable to create channel of type 'SIP' (cause 20 - Unknown)
== Everyone is busy/congested at this time (1:0/0/1)
-- Auto fallthrough, channel 'SIP/1-00000001' status is 'CHANUNAVAIL'
Задан: 2011-03-04 18:55:07 +0400
Просмотрен: 3,982 раз
Обновлен: Mar 06 '11
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.