Я использую брандмауэр Shorewall и успешно настроил несколько источников ISP.
В настоящее время он балансирует весь трафик для обоих интернет-провайдеров. Я хочу направить трафик ssh на ISP1 и направить трафик www на ISP2. Как я могу это сделать?
Я думаю, вам нужно будет создать несколько таблиц маршрутов. Один из них по умолчанию предназначен для обычного трафика, следующий - это ваша специальная таблица SSH, которая содержит записи маршрутов только для подключения к Интернет-провайдеру, которое вы хотите использовать.
Затем настройте iptables, чтобы отмечать пакеты, приходящие с вашего IP-адреса и прослушивающего SSH-порта.
Наконец, вы можете настроить записи правил IP для маршрутизации на основе метки брандмауэра.
В документации LARTC есть много информации (но вы, возможно, уже видели ее как свою): http://lartc.org/howto/lartc.rpdb.html
Итак, в качестве примера:
Добавьте новую таблицу маршрутизации с именем.
echo SSH 500 >>/etc/iproute2/rt_tables
Добавьте маршрут по умолчанию в другую таблицу маршрутизации, которая будет работать правильно.
ip route add default via $ISP2_GW table SSH
Установите правило, чтобы fwmark использовал эту новую таблицу.
ip rule add fwmark 0x0001 table SSH
Наконец, настройте правило iptables для маркировки ваших пакетов.
iptables -I PREROUTING -t mangle -p tcp --sport 22 -j MARK --set-mark 0x0001
iptables -I OUTPUT -t mangle -p tcp --sport 22 -j MARK --set-mark 0x0001
Надеюсь, это должно правильно настроить то, что вы хотите. Вам также необходимо убедиться, что эта конфигурация выживает после перезагрузки! Но я оставляю это вам в качестве упражнения.