Red Hat Enterprise Linux AS 2.1: Официальное руководство по установке Red Hat Enterprise Linux AS | ||
---|---|---|
Назад | Глава 8. Построение LVS кластера на базе Red Hat Enterprise Linux AS | Вперед |
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 или ipchains правил для службы FTP, обратитесь к информации в разделе Назначение меток межсетевого экрана об использовании многопортовых служб и определении установленных правил фильтрации сетевых пакетов.
Замечание | |
---|---|
Вы должны войти в систему как root и загрузить либо iptables либо ipchains перед первым определением правил. |
Ниже приведены правила, назначающие одну метку межсетевого экрана, 21, FTP трафику. Чтобы эти правила работали корректно, вы также должны в подразделе VIRTUAL SERVER программы Piranha Configuration Tool установить виртуальному серверу для порта 21 значение 21 в поле Firewall Mark. За дополнительной информацией обратитесь к разделу ВИРТУАЛЬНЫЙ СЕРВЕР в главе 9.
Правила для активных соединений указывают ядру принимать и перенаправлять соединения, приходящие на внутренний плавающий IP адрес с порта 20 — порт данных FTP.
/sbin/iptables -t nat -A POSTROUTING -p tcp \ -s n.n.n.0/24 --sport 20 -j MASQUERADE |
/sbin/ipchains -A forward -p tcp -s n.n.n.0/24 20 -j MASQ |
В приведенных выше командах сетевого пакетного фильтра n.n.n необходимо заменить первыми тремя байтами плавающего IP для внутреннего сетевого интерфейса NAT, определенного в разделе GLOBAL SETTINGS программы Piranha Configuration Tool. Эти команды позволяют LVS маршрутизатору обрабатывать исходящие от реальных серверов подключения, о которых не знает IPVS.
Правила для пассивных соединений назначают соответствующую метку межсетевого экрана соединениям входящим из интернет на плавающий IP адрес службы в широком диапазоне портов - от 10000 до 20000.
Предупреждение | ||
---|---|---|
Если вы ограничиваете диапазон портов для пассивных соединений, вы также должны настроить FTP сервер на использование соответствующего диапазона. В Red Hat Linux это выполняется добавлением следующей строки в конец файла /etc/ftpaccess:
Для настройки других 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 |
/sbin/ipchains -A input -p tcp -d n.n.n.n/32 21 -m 21 /sbin/ipchains -A input -p tcp -d n.n.n.n/32 \ 10000:20000 -m 21 |
В приведенных выше командах сетевого фильтра, n.n.n.n необходимо заменить плавающим IP адресом виртуального FTP сервера, определенного в разделе VIRTUAL SERVER программы Piranha Configuration Tool. Эти команды указывают фильтру назначить всем входящим пакетам адресованным плавающему IP адресу на соответствующие порты метку межсетевого экрана 21, которая распознается IPVS и позволяет выполнить соответствующую маршрутизацию.
Предупреждение | |
---|---|
Команды, приведенные выше, вступают в силу сразу, но не будут действовать после перезагрузки системы. Чтобы настроить сохранение конфигурации фильтра сетевых пакетов, обратитесь к разделу Сохранение настроек сетевого фильтра |
Наконец, убедитесь в том, что для соответствующих служб установлены корректные уровни выполнения. За дополнительной информацией об этом обратитесь к разделу Настройка служб на LVS маршрутизаторах в Главе 7.