Как в FreePBX 17 на Debian 12 привязать PJSIP-транки по умолчанию к конкретному сетевому интерфейсу (ens19), чтобы они регистрировались на сервере Ростелекома через внутреннюю сеть, несмотря на существующие правила маршрутизации? Текущая конфигурация /etc/network/interfaces:
interfacesauto ens18
iface ens18 inet static
address 192.168.8.3
netmask 255.255.252.0
up ip route add 192.168.8.0/22 dev ens18 src 192.168.8.3 table 10
up ip route add default via 192.168.8.1 dev ens18 table 10
up ip route add default via 192.168.8.1 dev ens18 metric 100
up ip rule add from 192.168.8.3 lookup 10 priority 100
down ip rule del from 192.168.8.3 lookup 10 priority 100
down ip route flush table 10
auto ens19
iface ens19 inet static
address 10.10.199.18
netmask 255.255.255.252
up ip route add 10.10.199.16/30 dev ens19 src 10.10.199.18 table 20
up ip route add default via 10.10.199.17 dev ens19 table 20
up ip rule add from 10.10.199.18 lookup 20 priority 200
down ip rule del from 10.10.199.18 lookup 20 priority 200
down ip route flush table 20
PJSIP использует транспорт 0.0.0.0-udp и выходит через ens18 вместо ens19. Как настроить транспорт через веб-интерфейс, конфиги или pjsip.transports_custom.conf?
В FreePBX 17 на Debian 12 привяжите PJSIP-транки по умолчанию к интерфейсу ens19 (IP 10.10.199.18) через веб-интерфейс: в PJSIP Settings → Transports включите Show Advanced Settings, активируйте UDP для ens19 и сохраните. Если транспорт 0.0.0.0-udp всё равно уходит через ens18, создайте кастомный в pjsip.transports_custom.conf с bind=10.10.199.18, назначьте его транку Ростелекома в pjsip.endpoint_custom_post.conf и перезапустите Asterisk (fwconsole restart). Ваши правила маршрутизации в /etc/network/interfaces (table 20) уже помогут — проверьте pjsip show transports после рестарта.
<img src=“https://нейроответы.рф/api/v1/message/content-file/a59a8cc3-88f0-4c54-892a-dbd0bdbfdb69.jpeg” alt=“Скриншот кнопки "Show Advanced Settings" и списка интерфейсов в настройках PJSIP Transports FreePBX 17” title=“Скриншот кнопки "Show Advanced Settings" и списка интерфейсов в настройках PJSIP Transports FreePBX 17” width=“725” height=“1200” />
Содержание
- Введение в проблему: PJSIP-транки в FreePBX 17 выходят не через ens19
- Настройка FreePBX 17 интерфейса через веб: PJSIP Transports
- Создание PJSIP FreePBX транспорта для ens19 в GUI
- PJSIP настройка через конфиги: pjsip.transports_custom.conf
- Debian FreePBX маршрутизация для Ростелекома
- Проверка и перезапуск: pjsip show transports
- Дополнительные советы по FreePBX транкам
- Источники
- Заключение
Введение в проблему: PJSIP-транки в FreePBX 17 выходят не через ens19
Представьте: у вас FreePBX 17 на Debian 12 с двумя интерфейсами — ens18 (192.168.8.3 для локалки) и ens19 (10.10.199.18 для Ростелекома). Правила в /etc/network/interfaces настроены идеально: table 10 для ens18, table 20 для ens19 с prio 200. Но PJSIP-транки упорно регистрируются через ens18, потому что дефолтный транспорт 0.0.0.0-udp слушает на всех интерфейсах и берёт маршрут по prio.
Почему так? Asterisk PJSIP по умолчанию не биндится строго к IP — он использует системную маршрутизацию. Ваши up/down-скрипты в interfaces добавляют правила ip rule и route, но для исходящего трафика от Asterisk (SIP REGISTER к Ростелекому) нужен явный bind на ens19 или кастомный транспорт. Без этого пакеты уходят через дефолтный маршрут ens18 (metric 100).
Хорошая новость: решается за 5-10 минут через GUI или conf-файлы. Мы разберём оба пути, чтобы PJSIP FreePBX работал как часы с Ростелекомом.
Настройка FreePBX 17 интерфейса через веб: PJSIP Transports
Начнём с простого — веб-интерфейс FreePBX 17. Залогиньтесь как admin, перейдите в Connectivity → PJSIP Settings → Transports.
Ключевой трюк: нажмите Show Advanced Settings вверху. Появится список интерфейсов: ens18, ens19 и т.д. Для UDP-транспорта (порт 5060) найдите строку с 0.0.0.0 и кликните Enable напротив ens19. Или отредактируйте bind вручную на 10.10.199.18.
Сохраните (Submit → Apply Config). Asterisk подхватит изменения, но для верности выполните fwconsole restart в CLI.
Это сработает для большинства случаев в настройка FreePBX 17, особенно если у вас один транспорт. Но если транки Ростелекома всё равно висят на 0.0.0.0? Идём дальше — GUI иногда не полностью перезаписывает conf.
Создание PJSIP FreePBX транспорта для ens19 в GUI
В том же разделе Transports нажмите Add Transport. Задайте:
- Transport Type: UDP
- Bind Address: 10.10.199.18 (IP ens19)
- Bind Port: 5060 (или другой, если нужно)
- Protocol: UDP
Сохраните, затем в Connectivity → Trunks выберите транк Ростелекома, в PJSIP Settings укажите этот новый транспорт в поле Transport.
Apply Config. Теперь pjsip freepbx транки привяжутся строго к ens19 — REGISTER уйдёт через table 20 (prio 200 > 100).
Проверьте в CLI: asterisk -rx "pjsip show transports". Должен появиться transport-udp-ens19 с bind 10.10.199.18. Если нет — рестарт системы, не только Asterisk.
PJSIP настройка через конфиги: pjsip.transports_custom.conf
GUI не всегда дружит с multi-NIC, особенно в FreePBX 17. Тогда вручную: отредактируйте /etc/asterisk/pjsip.transports_custom.conf (создайте, если нет).
Добавьте:
[transport-udp-ens19]
type=transport
protocol=udp
bind=10.10.199.18:5060
domain=10.10.199.18
local_net=10.10.199.16/30
external_media_address=10.10.199.18
external_signaling_address=10.10.199.18
Сохраните. Теперь назначьте транку: в /etc/asterisk/pjsip.endpoint_custom_post.conf:
[rostelekom-trunk](+)
transport=transport-udp-ens19
Замените rostelecom-trunk на имя вашего эндпоинта (проверьте pjsip show endpoints).
fwconsole reload и asterisk -rx "pjsip reload". Это стандартный хак для pjsip настройка Ростелеком, как советуют на форуме FreePBX.
Почему custom_post.conf? FreePBX не перезапишет его при Apply Config.
Debian FreePBX маршрутизация для Ростелекома
Ваши /etc/network/interfaces уже топ: table 20 с default via 10.10.199.17 и rule from 10.10.199.18 prio 200. Но Asterisk может игнорировать, если нет source IP.
Дополните up-скрипт ens19:
up ip route add default via 10.10.199.17 dev ens19 src 10.10.199.18 table 20
up ip rule add from 10.10.199.18 lookup 20 priority 200
up echo "200: from 10.10.199.18 lookup 20" >> /etc/iproute2/rt_tables # если нужно
Для Asterisk добавьте sysctl: echo "net.ipv4.ip_nonlocal_bind=1" >> /etc/sysctl.conf; sysctl -p. Это позволит bing на 10.10.199.18 даже без локального роута.
Проверьте маршруты: ip route show table 20. Трафик от 10.10.199.18 должен уйти через ens19, обходя ens18. Идеально для freepbx маршрутизация с Ростелекомом.
Проверка и перезапуск: pjsip show transports
После правок в CLI FreePBX:
fwconsole restart(полный рестарт Asterisk).asterisk -rx "pjsip show transports"— ищите bind=[10.10.199.18]:5060.pjsip show endpoints— транспорт назначен?tcpdump -i ens19 udp port 5060— видны ли REGISTER к Ростелекому?- Логи:
tail -f /var/log/asterisk/full | grep PJSIP.
Если транспорт висит на 0.0.0.0 — reboot сервера. FreePBX 17 иногда кэширует. Согласно обсуждению на форуме, custom-транспорты не всегда видны в GUI-дропдауне, но работают в conf.
Дополнительные советы по FreePBX транкам
- Несколько транков Ростелекома? Создайте отдельный транспорт на порт 5061, чтобы не конфликтовало.
- Ошибки: “No such transport” — проверьте имена в conf (без пробелов). GUI перезаписал custom? Сделайте chown asterisk:asterisk файлы.
- Безопасность: В транке Ростелекома permit=10.10.199.16/30, deny=all.
- Мониторинг: Установите
sipstationмодуль или EAGI для статусов. - Если ничего не помогает, удалите/создайте транк заново — FreePBX 17 багается с миграцией chan_sip.
Всё это из опыта сообщества, как в теме про multi-NIC.
Источники
- Creating Additional Transport in FreePBX17 — Создание PJSIP-транспорта для multi-NIC в FreePBX 17: https://community.freepbx.org/t/creating-additional-transport-in-freepbx17/108440
- Custom Transport in PJSIP Possible from GUI — Настройка кастомных транспортов через GUI и conf: https://community.freepbx.org/t/custom-transport-in-pjsip-possible-from-gui/45812
- FreePBX 17 Unable to Select Custom Transport for a Trunk — Проблемы с выбором транспорта в GUI FreePBX 17: https://community.freepbx.org/t/freepbx-17-unable-to-select-custom-transport-for-a-trunk/102160
- Multiple Network Interfaces — Настройка FreePBX с несколькими сетевыми интерфейсами: https://community.freepbx.org/t/multiple-network-interfaces/108552
Заключение
Привязка PJSIP-транков в FreePBX 17 к ens19 для Ростелекома — это комбо GUI (Show Advanced + новый транспорт) и conf (pjsip.transports_custom.conf с bind=10.10.199.18). Ваши таблицы маршрутов уже на месте, так что после fwconsole restart и pjsip show transports регистрация полетит через внутреннюю сеть. Главное — полный рестарт и проверка tcpdump. Теперь freepbx транки заработают стабильно, без сюрпризов от ens18. Удачи с настройкой!