у нас есть небольшая проблема на нашем сервере Asterisk, которую мы пытаемся решить, я надеюсь, что кто-то, обладающий большими знаниями, чем я, сможет помочь.
Мы запускаем Asterisk 1.8.23.0 на Centos 6.4, наши телефоны и сервер Asterisk находятся внутри брандмауэра, а наши поставщики услуг VoIP находятся снаружи. Брандмауэр настраивается и управляется внешней компанией.
В настоящее время у нас есть два поставщика услуг VoIP, A
, который обрабатывает большую часть входящего и весь наш исходящий трафик, и B
который обрабатывает часть нашего входящего трафика, который направляется в наш колл-центр через внешний IVR.
В ходе недавнего аудита безопасности нам сказали, что весь наш VoIP-трафик должен проходить через брандмауэр, и было решено, что мы должны сделать это в два этапа.
Первый этап - поставить входящий трафик, который мы получаем от B
через брандмауэр, а затем на втором этапе отправить входящий и исходящий трафик из A
через брандмауэр. В настоящее время мы застряли на первом этапе.
Первоначально мы пытались установить externip
и localnet
в [general]
раздел нашего sip.conf
файл, но это нарушило трафик VoIP у нашего основного поставщика услуг VoIP A
, поэтому мы попытались установить их в специальной записи в нашем sip.conf
файл для нашего вторичного поставщика услуг VoIP, B
, как это:
[A]
type=friend
disallow=all
allow=alaw
allow=g729
context=fromneotel
host=aaa.aaaa.aaa.aaa
insecure=port,invite
nat=no
directmedia=no
[B]
type=friend
disallow=all
allow=g711
allow=g729
allow=alaw
context=fromis1
host=bbb.bbb.bbb.bbb
insecure=port,invite
nat=yes
directmedia=no
externip=ccc.ccc.ccc.ccc
localnet=192.68.20.0/255.255.252.0
где aaa.aaa.aaa.aaa
это IP A
и bbb.bbb.bbb.bbb
это IP B
и ccc.ccc.ccc.ccc
это внешний ip брандмауэра.
С этими настройками центр обработки вызовов может принимать телефонные вызовы через IVR, но после установления соединения внешний вызывающий абонент может слышать агента центра обработки вызовов, но агент центра обработки вызовов не может слышать вызывающего абонента.
Наш поставщик услуг VoIP сообщает нам, что в 200 OK SIP
ответ от ccc.ccc.ccc.ccc
часть SDP дает им ddd.ddd.ddd.ddd
IP-адрес для отправки мультимедиа.
ddd.ddd.ddd.ddd
это ip нашего сервера звездочки, который B
обычно подключается, когда мы не пытаемся пропускать трафик через брандмауэр. это информация, которую мы получаем от них:
Via: SIP/2.0/UDP bbb.bbb.bbb.bbb:5060;branch=z9hG4bKmm63qe00d8ogcio100k0.1;received=bbb.bbb.bbb.bbb
From: "Anonymous"<sip:<originating number from IVR>@bbb.bbb.bbb.bbb:5060;user=phone>;tag=1641833502-1377756054727-
To: "<call centre number>"<sip:<call centre number>@ccc.ccc.ccc.ccc:5060>;tag=as43201e45
Call-ID: BW0800547272908131094994481@eee.eee.eee.eee
CSeq: 609518180 INVITE
Server: Asterisk PBX 1.8.23.0
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
Contact: <sip:<call centre number>@ccc.ccc.ccc.ccc>
Content-Type: application/sdp
Content-Length: 260
v=0
o=root 1148542603 1148542603 IN IP4 ddd.ddd.ddd.ddd
s=Asterisk PBX 1.8.23.0
c=IN IP4 ddd.ddd.ddd.ddd
t=0 0
m=audio 11064 RTP/AVP 18 101
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=no
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
a=sendrecv
в соответствии с B
, наш вторичный провайдер услуг VoIP, это линия, вызывающая проблемы: o=root 1148542603 1148542603 IN IP4 ddd.ddd.ddd.ddd
eee.eee.eee.eee
это IP-адрес, который я не узнаю и о котором ничего не знаю.
Любая помощь приветствуется.
Звонки без звука или без звука - обычная проблема при преобразовании VOIP через NAT. Очевидно, у вас уже есть источник проблемы: пакеты, несущие голос, отправляются на неправильный адрес.
Во-первых, я бы посоветовался с людьми, которые обслуживают ваш брандмауэр. Если брандмауэр стоит своей соли, несомненно, есть кое-что, что они могут сделать, чтобы либо решить проблему, либо упростить дальнейшую диагностику.
В противном случае спросите своих провайдеров, поддерживают ли они соединительные линии IAX2. IAX2 не страдает от проблем с NAT, присущих SIP.
Удачи.