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, «Сохранение настроек фильтрации пакетов» содержит информацию о восстановлении настроек после перезагрузки.