Вообщем такая проблема, у меня клиенты находятся внутри локальной сети, в инет выходят через 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 может улучшить его.
externip = 50.17.226.11
жолжно быть в [general] секции!!!! я вам уже три раза сказал это
Должно работать. nat=yes включили в настройках SIP абонентов?
[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 мне предложили, он все равно не работает, вот скриншот параметров моего сервера на амазоне если нужно
Уже совсем растерялся как быть, все перепробовал, вот 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 внешний айпи моего ната
-- 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,999 раз
Обновлен: Mar 06 '11
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.