3.4. Службы, использующие несколько портов

3.4. Службы, использующие несколько портов

Многопортовые службы используются для многопортовых протоколов, таких как FTP, или создаются искусственно путем группирования однотипных протоколов, таких как HTTP (порт 80) и HTTPS (порт 443), с помощью меток межсетевых экранов. В обоих случаях маршрутизатор сможет распознать, что пакеты предназначены разным портам; при этом пакеты с одинаковыми метками будут обрабатываться по одним и тем же правилам. Использование меток вместе с постоянством подключений позволяет гарантировать обращение к одному и тому же компьютеру на протяжении заданного времени (см. Раздел 4.6.1, «Подсекция VIRTUAL SERVER»).
Используемый на реальных серверах механизм распределения нагрузки — IPVS — может распознавать метки пакетов, но не может их назначать. Именно поэтому назначение меток должно осуществляться фильтром iptables, настройка которого выполняется отдельно от Piranha.

3.4.1. Присвоение меток межсетевого экрана

Для присвоения меток пакетам, направленным в определенный порт, необходимо использовать iptables.
В качестве примера далее будет рассмотрено объединение HTTP и HTTPS. Раздел 3.5, «Настройка FTP» содержит информацию о настройке протокола FTP, который также использует несколько портов.
Основное требование при использовании меток межсетевых экранов состоит в том, что для каждого протокола, настроенного на использование меток в Piranha, должно быть правило в iptables.
Прежде чем приступить к созданию правил фильтрации пакетов, убедитесь, что они уже не были определены. Для этого в режиме root выполните
/sbin/service iptables status
Если iptables в это время не выполняется, на экране снова появится приглашение.
В противном случае будет показан набор правил. Введите команду
/sbin/service iptables stop
Если надо сохранить существующие правила, скопируйте необходимые правила из /etc/sysconfig/iptables в другое место.
Ниже приведены правила, присваивающие метку 80 входящим пакетам, направленным на плавающий адрес n.n.n.n и порты 80 и 443.
/sbin/modprobe ip_tables
/sbin/iptables -t mangle -A PREROUTING -p tcp -d n.n.n.n/32 --dport 80 -j MARK --set-mark 80
/sbin/iptables -t mangle-A PREROUTING -p tcp -d n.n.n.n/32 --dport 443 -j MARK --set-mark 80
Раздел 4.6.1, «Подсекция VIRTUAL SERVER» содержит инструкции по присвоению виртуальных адресов внешним сетевым интерфейсам. При этом потребуется войти в систему в режиме root и загрузить модуль iptables.
В приведенных примерах следует заменить n.n.n.n плавающим адресом виртуальных серверов HTTP и HTTPS. Эти команды позволяют присвоить поступающим на заданный виртуальный адрес пакетам метку 80, которую распознает IPVS, после чего пакеты будут перенаправлены.

Предупреждение

Приведенные команды вступают в силу сразу, но результат их работы не сохранится после перезагрузки системы. Раздел 3.6, «Сохранение настроек фильтрации пакетов» содержит информацию о восстановлении настроек после перезагрузки.