Настройка Mikrotik RouterOS (SIP через NAT)

Часто пользователи IP телефонии сталкиваются с проблемой односторонней слышимости. Проблема в том, что в SIP протоколе, в части где описываются возможности голосового соединения (кодеки, IP адреса и порты обмена) — в протоколе SDP (Session Description Protocol), имеется запись о IP адресе на котором клиент ожидает соединения, и этот IP адрес, естественно является «серым», то есть из сети, которая находится за NAT-ом. А прямое соединение на этот немаршрутизируемый IP естественно невозможно. Однако, все современные IP шлюзы, понимают, что такая ситуация может возникнуть и разруливают её соответствующим образом — то есть они не обращают внимание на этот адрес, а пакеты шлют на тот адрес с которого приходят к нему пакеты, то есть на наш реальный IP, находящийся на выходе из NAT.
SIP телефоны (софтфоны) вполне корректно работают из под NAT, и порты никакие пробрасывать не надо.
В процессе изучения Mikrotik и анализа проходящего VoIP трафика, выяснилось, что роутер по умолчанию лезет в SIP/SDP протокол и подменяет установленный там IP на свой внешний (так называемый SIP ALG). Таким образом, со стороны это выглядит так, как будто и нет никакого NAT-а. И всё в порядке, и всё в общем то работает. Однако если у вас проблема с односторонней слышимостью, то вам необходимо отключить SIP ALG на роутере. Делается это следующей командой в консоли RouterOS
/ip firewall service-port disable sip
Еще одна часто возникающая проблема с роутерами Mikrotik — это зависшие UDP соединения. По наблюдениям это происходит в результате цепочки событий
1. Происходит отключение Интернет соединения
2. Устройство, находящееся за NAT, отправляет запрос в сторону SIP сервера
3. Создается ошибочная запись в таблице conntrack
4. Интернет соединение восстанавливается
5. Таблица NAT netfilter не может получить корректную информацию для новых запросов
В результате SIP-устройства не могут зарегистрироваться, хотя запросы отправляются (клиенты Ростелеком с подключением по технологии PON страдают в первую очередь, т.к. раз в сутки биллинг провайдера принудительно разрывает сессию) .
TCPDUMP в данной ситуации показывает, что UAC отправляет в сторону сервера REGISTER, сервер отвечает запросом авторизации (SIP/2.0 401 Unauthorized), а в ответ ничего не приходит. Лечится это либо перезагрузкой роутера или удалением UDP соединений из консоли Mikrotik
/ip firewall connection remove [find where protocol=udp and dst-address~»:5060″]
/ip firewall connection remove [find where connection-type=sip and assured=no]
Если нет возможности перезагрузить роутер или удалить UDP сессии, то можно попробовать выключить SIP устройство на 15-20 минут и потом включить снова.
Если проблема не постоянная, а то появляется, то исчезает, то возможно поможет отключение технологии fastpath (необходимо перезагрузить роутер после выполнения этих команд)
/ip settings set allow-fast-path=no
/ip firewall filter disable [/ip firewall filter find where action=fasttrack-connection]
В новых версиях RouterOS появился параметр sip-timeout, который теоретически может помочь в решении данной проблемы. Попробуйте выполнить следующую команду
/ip firewall service-port set sip disabled=no ports=5060,5061 sip-direct-media=yes sip-timeout=5m
Mikrotik+VOIP
Добра,счастья,и прочего всем! Не судите строго,запарился! Есть CISCO PHONE ,конектится в локалке нормально к станции ,в интернете же полный тухляк. Смотрю через 2ip.ru порт 5060 закрыт. Помогите открыть на Mikrotik порт 5060 UDP для SIP,и порты 10000:20000 UDP для RTP
skynetyar ★
03.11.17 10:30:19 MSK
- Создаешь правила в /ip firewall filter для входящих 5060 и 10000:20000
- Создаешь правила в /ip firewall nat для проброса входящих соединений на ats
- Включаешь в /ip firewall services модуль для sip
Кратко так, конкретно надо от твоих правил отталкиваться.
Deleted
( 03.11.17 10:35:49 MSK )
Ответ на: комментарий от Deleted 03.11.17 10:35:49 MSK
Дак там Output или Input , Scr или Dstn порты указывать? сорян я плохо в микротике шарю,поэтому и спрашиваю.
skynetyar ★
( 03.11.17 10:42:52 MSK ) автор топика
Ответ на: комментарий от skynetyar 03.11.17 10:42:52 MSK
форвард тоже не забудь.
Deleted
( 03.11.17 10:44:14 MSK )
Ответ на: комментарий от skynetyar 03.11.17 10:42:52 MSK
/ip firewall filter add chain=forward dst-add= protocol=udp dst-port=5060,10000-20000 action=accept /ip firewall nat add chain=dstnat in-interface= protocol=udp dst-port=5060 action=netmap to-address= to-port=5060 /ip firewall service set sip disabled=no
Deleted
( 03.11.17 10:49:43 MSK )
Последнее исправление: log4tmp 03.11.17 10:50:10 MSK (всего исправлений: 1)
Ответ на: комментарий от Deleted 03.11.17 10:49:43 MSK
Спасибо! Проверь пожалуйста в GUI все ли так сделал? http://joxi.ru/12MWyyzsMYappr
skynetyar ★
( 03.11.17 11:00:22 MSK ) автор топика

Телефон за натом? Если да, то нафига открывать порты?
Turbid ★★★★★
( 03.11.17 11:04:06 MSK )
Ответ на: комментарий от Turbid 03.11.17 11:04:06 MSK
Потому что CISCO не работает за NAT . Микротиком мне надо прямое соединение сделать до АТС без всяких преград!
skynetyar ★
( 03.11.17 11:05:17 MSK ) автор топика
Ответ на: комментарий от Deleted 03.11.17 10:49:43 MSK
Сделал с учетом исправлений. В Firewoll rule пакеты бегают, а в NAT rule нет.. Телефон по прежнему не регается =(
skynetyar ★
( 03.11.17 11:10:23 MSK ) автор топика
Ответ на: комментарий от skynetyar 03.11.17 11:00:22 MSK
в nat не надо src-port указывать, ну и action не вижу на скринах, а так все ок
Deleted
( 03.11.17 11:11:02 MSK )
Ответ на: комментарий от skynetyar 03.11.17 11:05:17 MSK

Еще раз — у телефон на белом ip или как?
Turbid ★★★★★
( 03.11.17 11:14:01 MSK )
Ответ на: комментарий от Deleted 03.11.17 11:11:02 MSK
skynetyar ★
( 03.11.17 11:14:19 MSK ) автор топика
Ответ на: комментарий от Turbid 03.11.17 11:14:01 MSK
Ну смотри как выходит по схеме
Получается что у телефона серый 192.168.0.0\24 адрес
skynetyar ★
( 03.11.17 11:16:08 MSK ) автор топика
Ответ на: комментарий от skynetyar 03.11.17 11:16:08 MSK

Turbid ★★★★★
( 03.11.17 11:23:35 MSK )
Последнее исправление: Turbid 03.11.17 11:26:37 MSK (всего исправлений: 2)
Ответ на: комментарий от Turbid 03.11.17 11:23:35 MSK
Объясни пожалуйста попроще? Что ты имеешь в виду?
skynetyar ★
( 03.11.17 11:27:25 MSK ) автор топика
Ответ на: комментарий от Turbid 03.11.17 11:23:35 MSK

Turbid ★★★★★
( 03.11.17 11:30:24 MSK )
Ответ на: комментарий от Turbid 03.11.17 11:30:24 MSK
SIP helper все всегда отключают,надо ли это в моем случае? Дам ну попробую сейчас снять со стороны АТС
skynetyar ★
( 03.11.17 11:34:16 MSK ) автор топика
Ответ на: комментарий от skynetyar 03.11.17 11:14:19 MSK
Почему у тебя to-address внешний? Тебе провайдер полноценную подсеть выдает? Ну и порт 5060.
Deleted
( 03.11.17 11:40:20 MSK )
Ответ на: комментарий от skynetyar 03.11.17 11:16:08 MSK
Так, стоп. Видимо я тебя непарвильно понял.
У тебя телефон внутри локальной сети, а сервер в Интернете? Тогда только /ip fi service включить sip.
Deleted
( 03.11.17 11:42:00 MSK )
Ответ на: комментарий от Deleted 03.11.17 11:42:00 MSK
Да верно,внутри лок сети телефон,потом микротик,потом интрнет и АТС.. Что включить?
skynetyar ★
( 03.11.17 11:43:08 MSK ) автор топика
Ответ на: комментарий от Turbid 03.11.17 11:30:24 MSK
Судя по tcpdump телефон посылает register пакет а в ответ получает 401 unautorized
35 13.504374 188.68.178.88 37.60.179.229 SIP 732 Request: REGISTER sip:37.60.179.228 (1 binding) |
36 13.504814 37.60.179.229 188.68.178.88 SIP 562 Status: 401 Unauthorized |
skynetyar ★
( 03.11.17 11:57:37 MSK ) автор топика
Ответ на: комментарий от skynetyar 03.11.17 11:43:08 MSK
А, ну тогда проброс действительно не нужен.
Deleted
( 03.11.17 12:05:21 MSK )
Ответ на: комментарий от skynetyar 03.11.17 11:57:37 MSK
SIP/2.0 401 Unauthorized — нормальный ответ сервера о том, что пользователь еще неавторизировался, обычно после этого на абонентское оборудование отправляет на сервер логин и пароль
Deleted
( 03.11.17 12:07:28 MSK )
Ответ на: комментарий от Deleted 03.11.17 12:07:28 MSK
Блин ну что тогда причина то.
skynetyar ★
( 03.11.17 13:05:30 MSK ) автор топика
Ответ на: комментарий от skynetyar 03.11.17 13:05:30 MSK
На АТС посмотреть, что происходит?
Deleted
( 03.11.17 13:42:22 MSK )
Ответ на: комментарий от Deleted 03.11.17 13:42:22 MSK
15 5.513274 188.68.178.88 37.60.179.229 SIP 732 Request: REGISTER sip:37.60.179.228 (1 binding) |
16 5.513751 37.60.179.229 188.68.178.88 SIP 562 Status: 401 Unauthorized |
Вот это на стороне АТС, но насколько я понял что CISCO должна словить пакет 401 Unauthorized и выслать обратно пакет с регистрацией пароля и.т.д, но его не славливает и посылает опять пакет с REGISTER
skynetyar ★
( 03.11.17 14:53:53 MSK ) автор топика
Ответ на: комментарий от Deleted 03.11.17 13:42:22 MSK
Ну в общем придется OpenVPN стоить,который тоже хрен знает как делать =(
Как правильно открыть порты на микротике для sip?

Помогите новичку, наблюдаются проблемы что входящие звонки не приходят на телефонию.
Арендуем номера у Битрикс то есть сервер телефонии тоже их, нашел статью на хелп деск Битриксhttps://helpdesk.bitrix24.ru/open/1272906/ .
Настроил правила в файрволе
Вот правила пакеты идут, в конектионне есть соедения с сервером sip Битрикса по портам 5060, service sip отключил так, как это требования Битрикса.
- Вопрос задан более двух лет назад
- 1280 просмотров
Комментировать
Решения вопроса 0
Ответы на вопрос 1

5060 это порт только для установки соединения и сигнализации. Для голоса нужен диапазон портов UDP а какой он вам только саппорт битрикса может сказать. Вот этот диапазон и надо пробрасывать.
Ответ написан более двух лет назад
Роман Рензин @RomaUser Автор вопроса
Rtp порты, я так понимаю это от 8000-48000 и как мне пробросить порты если у меня 5 станций и Битрикс выдают 100 айпи адресов ?

Значит открыть этот диапазон портов для всего интернета, 0.0.0.0/0
Роман Рензин @RomaUser Автор вопроса
Keffer, Я думаю, что это слишком плохо, в инструкции они не пишут, что не нужно пробрасовать порты, пишут что должно быть открыто в локальной сети, я же правильно в цепочке forward открыл порты ?

Роман Рензин, Нет, не правильно. Порты открываются не в фаерволе и тем более не в форвард. Курите мануалы или наймите специалиста, который все настроит.
Роман Рензин @RomaUser Автор вопроса
Keffer, как не в файрволе, а на винбокс, я открыла 8291порт, на на входящие интерфейс wan и все работает (только с воих айпи), а если вы про нат, то открывать на все весь трафик из интернета это очень плохая идея

Роман Рензин, Повторюсь, уровень вашего понимания работы RouterOS на данном этапе почти нулевой. Единственное что можно это сделать все за вас. Пошагово «тыкни сюда», «нажми туда» вам никто пояснять не будет.
Роман Рензин @RomaUser Автор вопроса
Keffer, да, уровень низкий, вот я и написал сюда для того, чтобы мне подсказали так, как нет информации, какие ртп порты нужно открывать потому что нет информации в интернете, если бы у нас была своя телефония, то там ясно какие ртп порты, а какие для регистрации.
Роман Рензин @RomaUser Автор вопроса
poisons, а. Регистрация без проблем проходит. Да спасибо, я тоже думал о том чтобы отключить все дроп правила, именно на форвард, правила приложу позже. Тут проблема что rtp порты не кто не говорит, не битрикс, не voxiplant.
как не в файрволе, а на винбокс, я открыла 8291порт, на на входящие интерфейс wan и все работает (только с воих айпи), а если вы про нат, то открывать на все весь трафик из интернета это очень плохая идея
Нужно делать через Accept input и настройку nat, зачем на весь трафик в статье есть список серверов
Роман Рензин @RomaUser Автор вопроса
Fenrir89, почему инпут трубки же относится к форварду. Вы имеете ввиду сделать адрес листы и использовать их при пробросе портов ?
Роман Рензин, форвард куда если вы за натом? То есть сервер о вашей внутренней сети ничего не знает, ему запрос прилетел от роутера, сервер отправил обратно на роутер, и этому роутеру надо понять куда дальше отправить, для этого правила nat и есть. Да, а как раз то что вы сделали, плохо так как не фильтруется откуда прилетело, в firewall обязательно добавить эти листы к правилам фильтрации
Ps для понимания как это работает посмотрите цикл видео сети для самых маленьких без негатива, просто и доступно о сложном
Роман Рензин @RomaUser Автор вопроса
Fenrir89, /ip firewall address-list
add address=0.0.0.0/8 list=BOGON
add address=10.0.0.0/8 list=BOGON
add address=100.64.0.0/10 list=BOGON
add address=127.0.0.0/8 list=BOGON
add address=169.254.0.0/16 list=BOGON
add address=172.16.0.0/12 list=BOGON
add address=192.0.0.0/24 list=BOGON
add address=192.0.2.0/24 list=BOGON
add address=192.168.0.0/16 list=BOGON
add address=198.18.0.0/15 list=BOGON
add address=198.51.100.0/24 list=BOGON
add address=95.213.198.99 list=sip
add address=149.11.34.27 list=sip
add address=149.11.44.91 list=sip
add address=149.56.83.166 list=sip
add address=149.56.83.167 list=sip
add address=38.122.236.126 list=sip
add address=173.237.15.28 list=sip
add address=173.237.12.68 list=sip
add address=173.237.12.69 list=sip
add address=173.237.16.194 list=sip
add address=173.0.146.133 list=sip
add address=173.0.146.163 list=sip
add address=95.213.221.98 list=sip
add address=95.213.228.3 list=sip
add address=198.27.75.221 list=sip
add address=185.164.148.247 list=sip
add address=185.164.148.245 list=sip
add address=185.164.148.237 list=sip
add address=185.164.149.11 list=sip
add address=185.164.149.13 list=sip
add address=185.164.149.31 list=sip
add address=185.164.149.33 list=sip
add address=185.164.149.15 list=sip
add address=185.164.148.216 list=sip
add address=185.164.149.19 list=sip
add address=185.164.149.21 list=sip
add address=185.164.148.234 list=sip
add address=185.164.148.232 list=sip
add address=185.164.149.26 list=sip
add address=185.164.149.28 list=sip
add address=185.164.148.228 list=sip
add address=185.164.148.226 list=sip
add address=185.164.148.214 list=sip
add address=185.175.44.164 list=sip
add address=185.164.149.34 list=sip
add address=185.164.148.244 list=sip
add address=185.164.148.233 list=sip
add address=185.164.149.20 list=sip
add address=185.164.148.217 list=sip
add address=185.164.149.32 list=sip
add address=185.164.148.213 list=sip
add address=185.164.149.22 list=sip
/ip firewall connection tracking
set tcp-established-timeout=1h
/ip firewall filter
add action=accept chain=input comment=established/related/untra \
connection-state=established,related,untracked
add action=accept chain=input comment=gre in-interface-list=WAN protocol=gre
add action=drop chain=input comment=»drop invaled» connection-state=invalid \
in-interface-list=WAN
add action=accept chain=input dst-port=8291 in-interface-list=WAN log=yes \
protocol=tcp src-address-list=Manager
add action=accept chain=input comment=»l2tp/ipsek udp» dst-port=1701,4500,500 \
in-interface-list=WAN protocol=udp
add action=accept chain=input in-interface-list=WAN protocol=ipsec-esp
add action=accept chain=input in-interface-list=WAN protocol=ipsec-ah
add action=add-src-to-address-list address-list=TrapAddress \
address-list-timeout=1d chain=input comment=»Trap for port scanning» \
in-interface-list=WAN protocol=tcp psd=10,10s,3,1
add action=accept chain=input comment=icmp icmp-options=8:0 in-interface-list=\
WAN limit=5,5:packet protocol=icmp
add action=drop chain=input comment=»drop vsego» in-interface-list=WAN
add action=accept chain=forward comment=established/related/untracker \
connection-state=established,related,untracked
add action=drop chain=forward comment=»drop invaled» connection-state=invalid \
in-interface-list=WAN
add action=accept chain=forward dst-port=5060,8000-48000,3478 \
out-interface-list=WAN protocol=udp
add action=accept chain=forward dst-port=5060,3478,443 out-interface-list=WAN \
protocol=tcp
add action=accept chain=forward in-interface=keenetic out-interface=\
«Microtik home»
add action=accept chain=forward in-interface=»Microtik home» out-interface=\
keenetic
add action=drop chain=forward comment=»Reject BoGogon» dst-address-list=BOGON \
out-bridge-port-list=WAN out-interface-list=WAN
add action=drop chain=forward comment=»drop vsego/!dst-nat» \
connection-nat-state=!dstnat in-interface-list=WAN
/ip firewall nat
add action=src-nat chain=srcnat out-interface-list=WAN to-addresses=\
46.46.168.138
add action=dst-nat chain=dstnat dst-port=5060 in-interface-list=WAN log=yes \
protocol=udp src-address-list=sip to-addresses=192.168.88.20
add action=dst-nat chain=dstnat dst-address-list=sip dst-port=5060 \
in-interface-list=WAN log=yes protocol=udp to-addresses=192.168.88.20
add action=dst-nat chain=dstnat dst-port=3478 in-interface-list=WAN log=yes \
protocol=udp src-address-list=sip to-addresses=192.168.88.20
add action=dst-nat chain=dstnat dst-port=8000-48000 in-interface-list=WAN log=\
yes protocol=udp src-address-list=sip to-addresses=192.168.88.20
add action=dst-nat chain=dstnat dst-port=5060,3478,8000-48000 \
in-interface-list=WAN log=yes protocol=udp src-address-list=sip \
to-addresses=192.168.88.21
add action=dst-nat chain=dstnat dst-port=5060,3478,8000-48000 \
in-interface-list=WAN log=yes protocol=udp src-address-list=sip \
to-addresses=192.168.88.22
add action=dst-nat chain=dstnat dst-port=5060,3478,8000-48000 \
in-interface-list=WAN log=yes protocol=udp src-address-list=sip \
to-addresses=192.168.88.23
add action=dst-nat chain=dstnat dst-port=5060,3478,8000-48000 \
in-interface-list=WAN log=yes protocol=udp src-address-list=sip \
to-addresses=192.168.88.24
add action=dst-nat chain=dstnat dst-port=5060,3478,8000-48000 \
in-interface-list=WAN log=yes protocol=udp src-address-list=sip \
to-addresses=192.168.88.25
/ip firewall raw
add action=drop chain=prerouting src-address-list=TrapAddress
add action=notrack chain=prerouting dst-address-type=multicast \
in-interface-list=WAN
add action=notrack chain=prerouting dst-address-type=multicast in-interface=\
«Microtik home»
add action=notrack chain=prerouting dst-address-type=multicast in-interface=\
keenetic
add action=notrack chain=prerouting dst-address-type=multicast in-interface=\
school1561
add action=notrack chain=output disabled=yes out-interface=ether1
Вот как я начал делать, я без негатива, но как я знаю инпут он отвечает за микротик, там всякие сервисы и тд, но не как за телефонию.
Проброс портов Mikrotik. SIP Телефония?
День добрый! Помогите пожалуйста решить задачу.
Имеется удаленный сервер телефонии, к которому подключен Mikrotik посредством Ipsec VPN.
Имеется офис с сотрудниками, который также подключен к Mikrotik через OpenVPN сервер.
Сотрудник офиса запускает Softphone и пытается подключиться к серверу телефонии.
Путь: Openvpn client —> Mikrotik OpenVPN сервер —> VPN Ipsec сервер телефонии (внешний).
Доступ к серверу телефонии со стороны openvpn клиента имеется (ping, telnet на порт 5060 и т.д.), но со стороны сервера к клиенту openvpn доступа нет (так говорит администратор сервера телефонии). Он просит открыть порты на Mikrotik в сторону openvpn client 5060-5061, 5070-5090, 5100-20000.
Я не могу разобраться как это сделать.
Как пробросить эти порты через Mikrotik от сервера телефонии к клиенту с софтфоном?
Подключаться к этому серверу телефонии будет порядка 20 человек.
Интерфейс сервера телефонии на Mikrotik: ATC-SIP, IP: 172.12.0.10
Сеть телефонии: 172.12.0.0/23
Пул IP клиентов openvpn сервера: 172.21.108.0/24
Как пробросить порты из 172.12.0.10 в 172.21.108.0/24?
Отключил хелпер SIP/ip firewall service-port disable sip
- Вопрос задан более трёх лет назад
- 4051 просмотр