Всем привет, пытаюсь разобраться с NAT-проблемами в VoIP (звуком «в одну сторону»). Сейчас у меня два сценария.
Первый: SIP-провайдер → Mikrotik CCR как шлюз → SIP PBX сервер (Asterisk) → роутер клиента Mikrotik Routerboard → SIP-устройства (Gigaset и Grandstream).
Второй: SIP-провайдер → Mikrotik CCR как шлюз → роутер клиента Mikrotik Routerboard → SIP PBX сервер (Asterisk), на той же подсети несколько SIP-устройств → ещё один роутер клиента Mikrotik Routerboard → SIP-устройства.
Пока что я заставил все свои устройства из сети с NAT использовать разные SIP-порты, например: Gigaset1 — 5060, Gigaset2 — 5061, Gigaset3 — 5062. Не уверен, правильно ли это.
Кроме того, заставил устройство использовать тот же диапазон портов RTP, что и у Asterisk: 10000-20000. Тоже не уверен, правильно ли так делать.
Для второго сценария настроил на RB с PBX такие правила firewall и NAT:
# jun/22/2016 20:09:48 by RouterOS 6.28
# software id = 4X3N-4VBP
#
/ip firewall filter
add chain=forward comment="РАЗРЕШИТЬ ПОДКЛЮЧЕНИЯ/ОТВЕТЫ ASTERISK К ИНТЕРНЕТУ" protocol=udp src-address=192.168.2.200
add chain=forward comment="РАЗРЕШИТЬ ПЕРЕАДРЕСАЦИЮ К ВНУТРЕННЕЙ СЕТИ (LAN)" dst-address=192.168.2.200 dst-port=5060,10000-20000 protocol=udp
/ip firewall mangle
add action=change-dscp chain=prerouting comment="ИЗМЕНЕНИЕ DSCP ДЛЯ SIP" dst-port=5060-5080 in-interface=ether1-WAN new-dscp=44 protocol=udp
add action=change-dscp chain=prerouting comment="ИЗМЕНЕНИЕ DSCP ДЛЯ SIP" dst-port=5060-5080 in-interface=ether3-VOIP-master new-dscp=44 protocol=udp
add action=change-dscp chain=prerouting comment="ИЗМЕНЕНИЕ DSCP ДЛЯ RTP" dst-port=10001-20000 new-dscp=46 protocol=udp
add action=change-dscp chain=prerouting comment="ИЗМЕНЕНИЕ DSCP ДЛЯ RTP - GIGASET" dst-port=5004-5020 new-dscp=46 protocol=udp
/ip firewall nat
add action=dst-nat chain=dstnat comment="SIP/RTP Centralino" dst-address=172.18.3.40 dst-port=5060,10000-10020 log=yes protocol=udp to-addresses=192.168.2.200
add action=masquerade chain=srcnat out-interface=ether1-WAN
Где 192.168.2.200 — IP моего Asterisk. На первый сценарий правил пока нет.
Как уже сказал, не уверен, правильно ли всё это и нужно ли что-то ещё, чтобы всё заработало стабильно. Сейчас вроде работает, но не знаю, просто совпадение это или нет.
Есть советы? Большое спасибо!
Первый: SIP-провайдер → Mikrotik CCR как шлюз → SIP PBX сервер (Asterisk) → роутер клиента Mikrotik Routerboard → SIP-устройства (Gigaset и Grandstream).
Второй: SIP-провайдер → Mikrotik CCR как шлюз → роутер клиента Mikrotik Routerboard → SIP PBX сервер (Asterisk), на той же подсети несколько SIP-устройств → ещё один роутер клиента Mikrotik Routerboard → SIP-устройства.
Пока что я заставил все свои устройства из сети с NAT использовать разные SIP-порты, например: Gigaset1 — 5060, Gigaset2 — 5061, Gigaset3 — 5062. Не уверен, правильно ли это.
Кроме того, заставил устройство использовать тот же диапазон портов RTP, что и у Asterisk: 10000-20000. Тоже не уверен, правильно ли так делать.
Для второго сценария настроил на RB с PBX такие правила firewall и NAT:
# jun/22/2016 20:09:48 by RouterOS 6.28
# software id = 4X3N-4VBP
#
/ip firewall filter
add chain=forward comment="РАЗРЕШИТЬ ПОДКЛЮЧЕНИЯ/ОТВЕТЫ ASTERISK К ИНТЕРНЕТУ" protocol=udp src-address=192.168.2.200
add chain=forward comment="РАЗРЕШИТЬ ПЕРЕАДРЕСАЦИЮ К ВНУТРЕННЕЙ СЕТИ (LAN)" dst-address=192.168.2.200 dst-port=5060,10000-20000 protocol=udp
/ip firewall mangle
add action=change-dscp chain=prerouting comment="ИЗМЕНЕНИЕ DSCP ДЛЯ SIP" dst-port=5060-5080 in-interface=ether1-WAN new-dscp=44 protocol=udp
add action=change-dscp chain=prerouting comment="ИЗМЕНЕНИЕ DSCP ДЛЯ SIP" dst-port=5060-5080 in-interface=ether3-VOIP-master new-dscp=44 protocol=udp
add action=change-dscp chain=prerouting comment="ИЗМЕНЕНИЕ DSCP ДЛЯ RTP" dst-port=10001-20000 new-dscp=46 protocol=udp
add action=change-dscp chain=prerouting comment="ИЗМЕНЕНИЕ DSCP ДЛЯ RTP - GIGASET" dst-port=5004-5020 new-dscp=46 protocol=udp
/ip firewall nat
add action=dst-nat chain=dstnat comment="SIP/RTP Centralino" dst-address=172.18.3.40 dst-port=5060,10000-10020 log=yes protocol=udp to-addresses=192.168.2.200
add action=masquerade chain=srcnat out-interface=ether1-WAN
Где 192.168.2.200 — IP моего Asterisk. На первый сценарий правил пока нет.
Как уже сказал, не уверен, правильно ли всё это и нужно ли что-то ещё, чтобы всё заработало стабильно. Сейчас вроде работает, но не знаю, просто совпадение это или нет.
Есть советы? Большое спасибо!
