У нас возникла небольшая проблема на нашем сервере 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-адрес нашего сервера Asterisk, 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: [email protected]
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-адрес, который я не узнаю и о котором ничего не знаю.
Любая помощь будет высоко оценена.
решение1
Звонки без звука или с односторонним звуком являются распространенной проблемой при NATing VOIP. Очевидно, вы уже обнаружили источник проблемы: пакеты, несущие голос, отправляются на неправильный адрес.
Во-первых, я бы посоветовался с людьми, которые обслуживают ваш брандмауэр. Если брандмауэр стоит своих денег, они, несомненно, смогут что-то сделать, чтобы решить проблему или упростить дальнейшую диагностику.
Если это не удастся, спросите у своих провайдеров, поддерживают ли они каналы IAX2. IAX2 не страдает от проблем NAT, присущих SIP.
Удачи.