![Невозможно заставить FreePBX маршрутизировать с двумя сетевыми картами](https://rvso.com/image/192232/%D0%9D%D0%B5%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%20%D0%B7%D0%B0%D1%81%D1%82%D0%B0%D0%B2%D0%B8%D1%82%D1%8C%20FreePBX%20%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%B8%D0%B7%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%D1%81%20%D0%B4%D0%B2%D1%83%D0%BC%D1%8F%20%D1%81%D0%B5%D1%82%D0%B5%D0%B2%D1%8B%D0%BC%D0%B8%20%D0%BA%D0%B0%D1%80%D1%82%D0%B0%D0%BC%D0%B8.png)
У меня есть сервер FreePBX, которому нужно добавить второй реальный интерфейс. То есть, и eth0, и eth1 имеют маршрутизируемые IP-адреса. Настройка второго адреса была относительно простой, судя по быстрому поиску в Google:
https://www.thomas-krenn.com/en/wiki/Два_шлюза_по_умолчанию_в_одной_системе
отредактируйте /etc/iproute2/rt_tables и добавьте запись "200 секунд"
добавлены маршруты для таблицы под названием «вторая»:
ip route add ip.subnet.on.eth1/27 dev eth1 src ip.address.on.eth1 table second ip route add default via router.ip.for.eth1 dev eth1 table second
(где "ip.subnet.on.eth1", "ip.address.on.eth1" и "router.ip.for.eth1" — необходимые адреса)
добавлены правила для отправки трафика через нужный интерфейс с помощью source-routing:
ip rule add from ip.address.on.eth1/32 table second ip rule add to ip.address.on.eth1/32 table second
Это принесло мне частичный успех: теперь я мог направить трафик на второй IP-адрес сервера, так что он немедленно отвечал на обычные запросы (например, icmp, sshd, apache и т. д.).
Но он совершенно не работает с udp-сервисами, необходимыми для Asterisk. Любой клиент может нормально подключиться к "нормальному" ip-адресу на eth0. Но при попытке подключиться к ip-адресу eth1 клиент просто выходит из строя.
Я даже попытался настроить сервер на прием TCP для SIP, что позволило мне войти в систему; но в конечном итоге это не удалось, поскольку трафик RTP (голосовой) также является UDP.
Теперь подобные настройки РАБОТАЮТ, например, когда второе устройство eth1 не должно быть глобально маршрутизируемым, например, для внутренней локальной сети. Так что если у АТС есть один реальный IP на eth0 и частный IP на eth1, то она использует только одну унифицированную таблицу маршрутизации, и все просто работает.
Я могу определенно подтвердить, что НЕТ брандмауэра, блокирующего трафик к/от sip-сервера. Фактически, у меня даже есть явный набор записей, разрешающих ВЕСЬ tcp и udp-трафик в подсеть моего sip-клиента, обходя все fail2ban и прочие махинации.
P.S. если я не выразился педантично ясно, конечная цель — заставить Freepbx/asterisk работать на ОБОИХ интерфейсах eth0 и eth1, которые оба имеют полностью маршрутизируемые реальные IP-адреса. В настоящее время работает только eth0