artem
04.07.2017
1539

Шифрование вызовов при использовании DUNDi

Настройка DUNDi

Настройку DUNDi нужно выполнить по упомянутой выше статье (исходные данные те же самые, IP-адреса серверов – 192.168.10.111 и 192.168.10.222), в маппинге DUNDi нужно точно так же указывать IAX2, но IAX2-пользователя iax_dundi создавать не нужно, т.к. он не будет использоваться. Также не нужно добавлять контексты диалплана macro-dundi-direct и outbound-dundi, т.к. для совершения вызовов через DUNDi будет использоваться другой диалплан.
К настройкам iptables на обоих серверах добавляются строки:

iptables -A INPUT -p tcp –dport 5061 -j PBXS
iptables -A INPUT -p udp –dport 10000:20000 -j PBXS
(10000-20000 – диапазон RTP-портов)

 

Создание сертификатов безопасности

Для работы SIP по TLS нужны сертификаты безопасности, быстрее всего будет создать их при помощи Easy RSA. Все приведённые ниже действия нужно выполнить на обоих серверах.
Скачайте и распакуйте последнюю версию Easy RSA в директории /opt

cd /opt
wget ‘https://github.com/OpenVPN/easy-rsa/releases/download/3.0.1/EasyRSA-3.0.1.tgz’
tar xf EasyRSA-3.0.1.tgz
cd EasyRSA-3.0.1

Заполните файл vars (в директории есть образец vars.example)

cat <<‘EOF123’ >vars
if [ -z “$EASYRSA_CALLER” ]; then
  echo “You appear to be sourcing an Easy-RSA ‘vars’ file.” >&2
  echo “This is no longer necessary and is disallowed. See the section called” >&2
  echo “‘How to use this file’ near the top comments for more details.” >&2
  return 1
fi
 
set_var EASYRSA_REQ_COUNTRY “RU”
set_var EASYRSA_REQ_PROVINCE “Province”
set_var EASYRSA_REQ_CITY “City”
set_var EASYRSA_REQ_ORG “Organization”
set_var EASYRSA_REQ_EMAIL “root@localhost.localdomain”
set_var EASYRSA_REQ_OU “Unit”
 
set_var EASYRSA_KEY_SIZE 2048
set_var EASYRSA_ALGO rsa
set_var EASYRSA_CA_EXPIRE 3650
set_var EASYRSA_CERT_EXPIRE 3650
set_var EASYRSA_DIGEST “sha256”
EOF123

Создайте сертификат CA

./easyrsa –batch init-pki
./easyrsa –batch –req-cn=CA-“$(uuid)” build-ca nopass
 

Создайте сертификат для SIP

# на 192.168.10.111
./easyrsa –batch –req-cn=192.168.10.111 gen-req sip-tls nopass
./easyrsa –batch sign server sip-tls

# на 192.168.10.222

./easyrsa –batch –req-cn=192.168.10.222 gen-req sip-tls nopass
./easyrsa –batch sign server sip-tls

 

Конвертируйте созданный сертификат в формат PEM

openssl x509 -in pki/issued/sip-tls.crt -out pki/issued/sip-tls.pem -outform PEM

 

Копируйте все необходимые сертификаты и закрытый ключ в директорию /etc/asterisk/keys

mkdir -p /etc/asterisk/keys
cp pki/issued/sip-tls.pem /etc/asterisk/keys/
cp pki/issued/sip-tls.key /etc/asterisk/keys/
cp pki/ca.crt /etc/asterisk/keys/
chown -R asterisk:asterisk /etc/asterisk/keys

Теперь в файл /etc/asterisk/keys/ca.crt на каждом из серверов нужно добавить открытый ключ CA с другого сервера (просто допишите в конец файла /etc/asterisk/keys/ca.crt содержимое файла /opt/EasyRSA-3.0.1/pki/ca.crt с другого сервера). Это нужно для того, чтобы сервера могли проверить подлинность сертификатов друг друга.
С сертификатами всё, переходим к настройке SIP.

 

Настройка SIP

Настройку SIP нужно выполнить на обоих серверах, один сервер должен выполнять регистрацию на другом сервере (в данном случае 192.168.10.222 будет регистрироваться на 192.168.10.111).
Для включения SIP по TLS нужно добавить одинаковые настройки в раздел [general] в файле /etc/asterisk/sip.conf на обоих серверах.

tlsenable=yes
tlsbindaddr=0.0.0.0:5061
tlscertfile=/etc/asterisk/keys/sip-tls.pem
tlsprivatekey=/etc/asterisk/keys/sip-tls.key
tlscafile=/etc/asterisk/keys/ca.crt
tlscipher=AES256-SHA
tlsclientmethod=tlsv1
tlsdontverifyserver=no 

Далее на оба сервера нужно добавить описание SIP-устройства в файл /etc/asterisk/sip.conf.
На 192.168.10.111:

[from-192.168.10.222]
type=friend
host=dynamic
defaultuser=from-192.168.10.111
secret=amIWlAywsXz8HjXv
context=from-pbxs
nat=no
qualify=yes
trustrpid=yes
sendrpid=pai
transport=tls
encryption=yes
directmedia=no
disallow=all
allow=g722
allow=alaw
allow=ulaw

На 192.168.10.222:

[from-192.168.10.111]
type=friend
host=192.168.10.111
defaultuser=from-192.168.10.222
secret=amIWlAywsXz8HjXv
context=from-pbxs
nat=no
qualify=yes
trustrpid=yes
sendrpid=pai
transport=tls
encryption=yes
directmedia=no
disallow=all
allow=g722
allow=alaw
allow=ulaw

Также на 192.168.10.222 нужно добавить строку регистрации в раздел [general] файла /etc/asterisk/sip.conf

register => tls://from-192.168.10.222:amIWlAywsXz8HjXv@192.168.10.111/from-192.168.10.222

 

После применения настроек SIP-регистрация должна успешно выполниться. Если в консоли Asterisk появляются ошибки SSL, убедитесь, что адреса, между которыми устанавливается SIP-подключение, соответствуют CN в своих сертификатах, что в директории /etc/asterisk/keys присутствуют все необходимые файлы, и что у пользователя, под которым запущен asterisk, есть право на чтение этих файлов и самой директории /etc/asterisk/keys. Также убедитесь, что в файл /etc/asterisk/keys/ca.crt на обоих серверах добавлены открытые ключи CA с обоих серверов.

 

Диалплан для вызова через DUNDi

В название SIP-устройств, созданных на предыдущем этапе, не случайно входит IP-адрес сервера. Теперь через DUNDi будет определяться IP-адрес сервера, а вызов будет совершаться через SIP-устройство, в названии которого есть этот IP-адрес.

Ниже приведён диалплан для вызова через DUNDi (маппинг называется direct):

[outbound-dundi]
exten => _XXX,1,Set(DUNDI_MAPPING=direct)
same  => n,Set(DUNDI_RES=${DUNDILOOKUP(${EXTEN},${DUNDI_MAPPING})})
same  => n,GotoIf($[“${DUNDI_RES}” = “”]?end)
same  => n,Set(DUNDI_HOST=${CUT(DUNDI_RES,@,2)})
same  => n,Set(DUNDI_HOST=${CUT(DUNDI_HOST,/,1)})
same  => n,GotoIf($[“${SIPPEER(from-${DUNDI_HOST},ip)}” = “”]?end)
same  => n,Dial(SIP/from-${DUNDI_HOST}/${EXTEN},30,T)
same  => n(end),Hangup

Контекст outbound-dundi точно так же включается в from-internal

[from-internal]
include => ext-local
include => ext-features
include => outbound-dundi
include => outbound-1
include => outbound-2

 

Всё готово, можно тестировать.

 

 
avatar
  Подписаться  
Уведомление о

Остались вопросы?

Я - Першин Артём, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

ближайшие Вебинары

ONLINE

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices