Red Hat Cluster Suite: Настройка и управление кластером | ||
---|---|---|
Назад | Глава 11. Построение LVS кластера на базе Red Hat Enterprise Linux | Вперёд |
FTP (Протокол передачи файлов) является достаточно старым и сложным многопортовым протоколом, реализация которого в кластере вызывает определённые сложности. Чтобы понять их суть, вы должны сначала получить некоторые базовые понятия о работе FTP.
Взаимодействие клиента со многими другими серверами происходит так: компьютер клиента устанавливает соединение с определённым портом сервера, а затем сервер отвечает клиенту с этого порта. Когда FTP-клиент подключается к FTP-серверу, он устанавливает соединение с портом управления FTP (21). Затем клиент сообщает FTP серверу тип устанавливаемого соединения: активное или пассивное. Тип соединения, выбранного клиентом, определяет то, как сервер будет отвечать и на каких портах будут выполняться транзакции.
Существуют два типа соединений для передачи данных:
Если выбрано активное соединение, server устанавливает подключение с порта 20 на порт с большим номером, открытым на клиентской машине. Все данные передаются с сервера через это подключение.
Когда выбрано пассивное соединение, клиент просит FTP сервер указать порт для пассивного соединения, при этом номер порта должен быть больше 10000. Затем сервер связывает этот номер с этим конкретным сеансом и пересылает номер порта клиенту. Клиент открывает новый полученный порт для передачи данных. Каждый запрос данных со стороны клиента приводит к установлению отдельного соединения. Большинство современных FTP-клиентов пытаются устанавливать с FTP-серверами пассивные соединения.
Необходимо учесть два замечания относительно работы этого протокола в кластере:
Тип соединения определяет клиент, а не сервер. Это значит, что эффективная реализация FTP в кластере потребует от вас настройки на LVS маршрутизаторах поддержки и активных, и пассивных подключений.
Во время работы FTP сервера с клиентом может быть открыто большое количество портов, о которых Piranha Configuration Tool и IPVS просто не знают.
IPVS маршрутизация пакетов допускает только избранные входящие и исходящие соединения, проверяя номер порта и метку межсетевого экрана. Если клиент из внешней сети пытается открыть порт, неизвестный для IPVS, соединение обрывается. Также, если реальный сервер устанавливает обратное соединение с Интернет, с портом, о котором не знает IPVS, соединение обрывается. Это означает, что все подключения FTP-клиентов из Интернет должны иметь одну назначенную им метку межсетевого экрана, а все соединения, исходящие от FTP сервера должны корректно пересылаться в Интернет, используя правила сетевых фильтров.
Прежде чем назначать правила iptables для службы FTP, ознакомьтесь с разделом 11.3.1 Назначение меток межсетевого экрана, посвящённым многопортовым службам и способам проверки существующих правил сетевого фильтра.
Ниже приведены правила, назначающие FTP-трафику одну метку межсетевого экрана, 21. Чтобы эти правила работали корректно, вы также должны в подразделе VIRTUAL SERVER программы Piranha Configuration Tool задать для виртуального сервера порта 21 значение 21 в поле Firewall Mark. Подробнее об этом написано в разделе 12.6.1 Подраздел VIRTUAL SERVER.
Правила для активных соединений указывают ядру принимать и перенаправлять соединения, приходящие на внутренний плавающий IP адрес с порта 20 — порта данных FTP.
/sbin/iptables -t nat -A POSTROUTING -p tcp \ -s n.n.n.0/24 --sport 20 -j MASQUERADE |
В приведённых выше командах iptables, n.n.n следует заменить первыми тремя числами плавающего IP для внутреннего сетевого интерфейса NAT, определённого в разделе GLOBAL SETTINGS программы Piranha Configuration Tool. Эта команда позволяют LVS маршрутизатору принимать подключения, исходящие от реальных серверов, о которых не знает IPVS.
Правила для пассивных соединений назначают соответствующую метку межсетевого экрана соединениям, приходящим из Интернет на плавающий IP службы, в широком диапазоне портов - от 10000 до 20000.
Предупреждение | |||
---|---|---|---|
Если вы ограничиваете диапазон портов для пассивных соединений, вы также должны настроить VSFTP сервер на использование этого диапазона. Сделать это можно, добавив в файл /etc/vsftpd.conf следующие строки:
Вы можете также управлять адресом, которые сервер показывает клиентам пассивных FTP-соединений. В LVS кластере с маршрутизацией NAT добавьте в файл /etc/vsftpd.conf следующую строку, чтобы заменить IP адрес реального сервера на VIP, который клиент и должен видеть во время соединения. Например:
Замените X.X.X.X VIP-адресом кластера LVS. Как настроить другие FTP-сервера, вы узнаете из их документации. |
Диапазон должен быть достаточно велик для большинства ситуаций; однако если потребуется, вы можете расширить его до диапазона всех незащищенных портов, заменив 10000:20000 в приведённых командах на 1024:65535.
/sbin/iptables -t mangle -A PREROUTING -p tcp \ -d n.n.n.n/32 \ --dport 21 -j MARK --set-mark 21 /sbin/iptables -t mangle -A PREROUTING -p tcp \ -d n.n.n.n/32 \ --dport 10000:20000 -j MARK --set-mark 21 |
В приведённых выше командах iptables, n.n.n.n следует заменить плавающим IP виртуального FTP-сервера, заданным в подразделе VIRTUAL SERVER программы Piranha Configuration Tool. Эти команды указывают фильтру назначить всем входящим пакетам, адресованным соответствующим портам плавающего IP адреса, метку межсетевого экрана 21, которая распознаётся IPVS и помогает правильно маршрутизировать пакеты.
Предупреждение | |
---|---|
Команды, приведённые выше, вступают в силу сразу, но не будут действовать после перезагрузки системы. Как сохранить настройки сетевого пакетного фильтра после перезагрузки, вы узнаете в разделе 11.5 Сохранение настроек сетевого фильтра |
Наконец, убедитесь в том, что для соответствующих служб правильно определены уровни выполнения. Подробнее это рассматривается в главе 10.1 Настройка служб на LVS маршрутизаторах.