PF 2.4.4 проброс портов для voIP (ip-ip) проблема



  • Помогите решить проблемку.
    Нужно иметь возможность открывать порты для определенных ip чтобы они могли звонить напрямую за наш NAT на внутренний ip.
    То есть использовать функцию ip телефонов звонок напрямую по ip.
    И вроде бы как все должно быть просто, но не работает...

    В NAT указываю, как обычно нужные порты (5060, 10000-20000) проброс на нужный внутренний и ip с которого будут звонить.
    Сигнал проходит 5060 вижу на внутреннем ip и больше ничего, то есть от нас звук идет, та сторона слышит, мы за своим NAT не слышим.
    Пробовали вообще все порты пробрасывать и даже по быстрому все ip разрешать, то же самое.

    Пробую к примеру у себя на Keenetic Ultra II, тут вообще эта функция проброса не особо гибкая, просто какие порты куда перенаправлять, так все работает, мне звонят, звук идет в обе стороны.

    В чем проблема на PF может быть?



  • @alex82
    Здр
    Я бы перехватил бы трафик RTP tcpdump-ом . Если они Вас слышат, значит от Вас RTP трафик проходит , а вот от второй стороны нет.
    Посмотрите логи файрвола на PF , нет ли заблокированных пакетов от нужных Вам ip . Если есть , смотрите , какие порты блокируются . Настроен ли stun у ip атс ? у клиентов ?



  • На фаерволе ничего не блокируется, что и странно, на фаерволе я вижу только что 5060 пришел на нужный мне внутренний ip ну собственно звонок и проходит. Голос rtp вообще не виден никак. От нас естественно rtp проходит он же исходящий ) Исходящий в любом случаи проходит.
    Я вообще все порты разрешаю и нифига, вижу только 5060 все остальное непонятно куда пропадает :)
    А зачем stun ? Тут вообще никакой IP АТС нет, просто звонок напрямую с IP телефона на IP телефон по IP адресу.
    Просто в локальной сети все работает, а тут получается, что к нам rtp трафик пройти не может через NAT почему то.
    По одному порту все, как видно идет и для других сервисов у меня все нормально, к примеру проброшен для SQL порт, тоже все ок. А тут загвоздка в rtp который как в никуда пропадает...
    Ну и конечно же смущает то, что на других железках работает, а главное настройка то такая же банальный проброс портов, что там особо настраивать? :)
    Но конечно же есть (проверил уже) и другие роутеры, где тоже так же пробрасываешь порты (там и настроек то других нет) просто обычный проброс на нужный адрес, но не работает так же.
    Но нам надо все же на PF разобраться чтобы нам могли напрямую по IP звонить.

    Внутри сети если что у нас стоит Asterisk вся телефония работает, а вот с такими звонками загвоздка вышла.



  • @alex82 посмотреть бы логи внешнего тел. Я на 99 проц уверен, что внутренний тел ему сообщил свой внутренний ip, поэтому внешний тел и шлёт rtp трафик на этот адрес.



  • Мысль интересная, только почему в разных ситуациях по разному происходит, когда то внешний ip сообщается, когда то внутренний, причем это зависит почему то получается от роутера ) потому что телефоны одни и те же, только роутеры в разных местах разные )
    А как тогда выходить из этой ситуации?



  • А ещё знаете какой момент, когда мы пробовали открывать все порты для любых ip, то мы сразу видим кучу всяких разных ip на нашем внутреннем и там где порты фигурируют от 80 до 60 тыс +
    получается все пропускает.
    Но все описанное мной выше вносить кучу непоняток )



  • @alex82 я бы покопался в настройках внутр телефона, есть ли там галочка про нат и stun, ice и прочее. Многие делают проще, поднимают openvpn туннель и пускают voip трафик через него. А почему нельзя пускать трафик через Астериск, он точно умеет общаться правильно с внешними клиентами?



  • Да это да, я тоже за vpn и другие нормальные варианты. Но вот тут у нас упёрлись и говорят надо сделать чтобы так тоже можно было.
    И вот разбираемся...



  • @alex82
    какая модель внутреннего телефона ?
    я бы глянул документацию на сайте



  • @alex82 Про мысли всякие
    чтобы точно разобраться , что происходит , нужен дамп sip трафика , там все четко видно , о чем телефоны договорились
    На какой адрес и на какой порт слать rtp трафик

    По поводу того , почему Zyxel работает без проблем , у этих маршрутизаторов есть такая функция , называется NAT ALG , поэтому он сразу модифицирует SIP пакеты как надо для прохождения трафика через NAT

    А в PF такой функции нет



  • Телефоны которые участвовали
    http://support.yealink.com/documentFront/forwardToDocumentDetailPage?documentId=206

    http://support.yealink.com/documentFront/forwardToDocumentDetailPage?documentId=95

    http://support.yealink.com/documentFront/forwardToDocumentDetailPage?documentId=15

    http://support.yealink.com/documentFront/forwardToDocumentDetailPage?documentId=138

    http://support.yealink.com/documentFront/forwardToDocumentDetailPage?documentId=77

    Как будет возможность проанализирую трафик.
    Если сейчас предположить, что телефоны между собой договорились так, что какойто роутер может сам умно маршрутизировать трафик как надо, а PF нет, но как это можно обойти, учитывая, что у той стороны может быть что угодно, не совсем понятно (
    Нужно какое то универсальное решение, какой то аналог этого SIP ALG. Если действительно в нем дело.
    Помню на Draytek Vigor 2960 в свое время использовали была такая галочка даже, но при ее включении она ломала всю связь на АТС :)
    Да и кстати, на нем я сейчас тоже проверил такой вариант звонков, тоже не работает, порты все пробросил. Правда ту галку я не трогал.



  • @alex82

    мои настройки
    0_1549977676182_b186d315-a5e9-4e2f-8746-c83a37bc2360-image.png

    все тут понятно
    надо чтобы внутр тел знал свой внешний ip
    можете его ручками прописать
    верхняя опция nat manual



  • Добрый.

    @alex82

    Слушайте, детский сад какой-то (
    Наберите в гугле sip voip pfsense . На 1-й же странице все есть. Обратите внимание на Static port.

    P.s. Негоже открыто голосовой трафик гонять. Ваши аппараты умеют шифрование? Используйте.
    Если телефоны нах-ся за роутером - настроить на нем openvpn с пф. И гонять трафик в туннеле.
    Если телефоны умеют IAX2 - пользовать его вместо SIP+RTP.

    @Konstanti
    У вас в настройках STUN сервер указан ? Он ваш? Или это "левый"? Я бы "голос" не доверял "левым" серверам.



  • Да все понятно про openvpn и прочее и про шифрование тоже. Отстаивали эту позицию, я же писал выше, что уперлись некоторые :) и вот надо чтобы такой способ тоже работал и всё тут... делайте...



  • @werter
    Это stun разработчиков софта ( в частности ,этому телефону stun не нужен , он наружу не лезет )
    Обычно использую stun freeswitch-а или разработчика softphon-а
    я этот привел , как пример для ТС , где NAT можно открыть в настройках телефона .
    Кстати , Тс , не работает звук если NAT настроить ???



  • @konstanti
    Да попробовал все и даже на обоих телефонах с двух сторон попробовал, нет звука от меня туда, от туда я слышу.
    Пробовал и по отдельности NAT и еще там настройка ниже и STUN тоже, результат не меняется.
    На фаерволе PF я вижу только 5060 на внутренний адрес, больше ничего на него не приходит.



  • @alex82
    Вы static port настроили в правилах NAT ?

    За каким уст-вом находятся ваши телефоны? Они ж не напрямую в инет лезут?



  • @konstanti Да кстати Packet Capture на PF показывает естественно весь трафик UDP с телефона ко мне на мой белый адрес, в обратку тишина вообще, ну в начале только 5060 как раз есть от меня



  • @alex82

    Пришлите мне посмотреть на почту этот обмен (почта есть в профиле)
    в формате pcap
    меня очень интересует сообщение Status : 200 OK - от вашего внутреннего телефона к внешнему



  • @konstanti
    Там такого нет :)
    Да а там смотреть то нечего, вначале пара строчек от меня на внутренний по 5060 и потом пошли все ко мне на внешний с того внутреннего UDP по разным портам и все больше там ничего нет.

    Надо попробовать что тут человек посоветовал конечно... надо почитать разобраться...



  • @alex82

    естественно нет
    вы же видите только UDP пакеты
    а мне нужно их содержимое , на этой странице есть кнопка download capture
    вот после снятия трейса , нажмите эту кнопку , выгрузится файл
    пришлите мне его

    в результате , я увижу вот такое
    0_1549985190782_f14e243e-ddd2-46da-ba6e-4062218148e8-image.png



  • @alex82
    мне нужен только

    udp и порт 5060
    позвонили , подняли трубку , положили трубку - стоп



  • @konstanti
    Это трейс моего звонка с внешнего ( мобильного софтфона ) на ip телефон , находящийся за NAT PF ( тоже с пробросом портов)



  • Да немного попозже сделаю. Заодно и то что посоветовали настроить вот тут:

    https://docs.netgate.com/pfsense/en/latest/nat/configuring-nat-for-a-voip-pbx.html
    https://support.onsip.com/hc/en-us/articles/204029430-PFSense-Firewall-Settings-for-VoIP
    https://www.3cx.com/docs/pfsense-firewall/

    Что вы по этому поводу думаете?



  • @alex82
    Так проблему-то я вижу пока не в PFSense
    Настроить PF на проброс портов проблемы нет
    Для начального анализа проблемы мне нужно
    1 диапазон RTP портов , настроенных на внутреннем и внешнем телефоне
    2 трейс SIP протокола + RTP сообщений , которые уходят к внешнему телефону

    снимите трейс на внутреннем интерфейсе ( например , lan)
    поле протокол UDP
    порт - любой
    host - ip адрес внутреннего телефона

    или на внешнем ( wan)
    в поле host - ip адрес внешнего телефона



  • @konstanti
    Да попозже сделаю, пока нет возможности.
    А по портам, на всех этих телефонах по умолчанию rtp порты 12780 - 11780



  • @konstanti
    Не понял где в профиле мыло посмотреть )
    Можете в чате написать вышлю файлики.



  • @alex82
    Смотрите
    В сообщении , которое посылает удал телефон я вижу
    Мол, я звоню с адреса 89.23.XXX.XXX - болтать будем на порту 12740
    Ответ - а я тебе отвечаю с адреса !!!! 192.168.111.23 порт 12698
    0_1549993977366_47109ded-039d-4c6a-b5ec-533e59534770-image.png
    Поэтому я вижу rtp пакеты от 111.123
    0_1549993737962_d61f61e9-481c-4579-902f-430a80f3a59e-image.png
    на адрес 89.23 (и вы слышите там звук )
    а вот обратно 89.23 не может отправить rtp пакеты , потому что ему сообщили неверный IP

    Что надо сделать - открываем web интерфейс 111.23 раздел NAT - Ручной нат включено , в раздел IP вбиваем внешний IP адрес внутр телефона
    идем в аккаунт/аккаунт - внизу выбираем NAT ручной сохраняемся и проверяем



  • @alex82
    В настройках Asterisk укажите явно внешний адрес и вкл NAT.



  • Да уже разобрались )
    Астериск тут вообще не участвовал ) в теме же обсудили )