FTP с родительской ОС в Jail'ы

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
jeno
рядовой
Сообщения: 11
Зарегистрирован: 2009-11-30 23:28:15
Откуда: Украина - Киев

FTP с родительской ОС в Jail'ы

Непрочитанное сообщение jeno » 2009-12-01 18:17:42

Здравствуйте.

У меня есть сервер на котором запущено несколько Jail'ов...в каждом Jail'e по apache+fastcgi+suexec (так надо, потому что разные настройки, разные версии и т.д. и т.п.)

На родительской ОС запущен Nginx для проксирования http (пользователь заходит по http например на somedomain.com, Nginx получает, смотрит какой домен, и проксирует на какой-то из джейлов). С http все супер... (если надо добавить новый сервер или джейл я просто прописываю домены которые на нем есть и IP в конфиг nginx на родительской ос, все идет на родительскую ОС, а оттуда уже в джейл или вообще на другой сервер(счас у меня 1 сервер всего, но планирую запустить еще один...и тогда не надо будет извращаться, менять IP адреса в настройках доменов и т.п. будет всего 1 внешний IP))

Проблема с доступом FTP и SSH на джейлы...внешний/выделенный IP только один, и прикручен он к родительской ОС (у джейлов внутренние/локальные IP, которые доступны только внутри сервера)...получается что к серверу из интернета я могу подключится только по одному IP...

Мне надо дать доступ по FTP к хомам пользователей которые созданы в джейлах =\ (ssh это уже не очень важно,он нужен только мне...и я сначала захожу по внешнему IP на родительскую ОС, потом из нее на какой-то из джейлов)
те.пользователь заходит по FTP на домен somedomain.com, вводит логин,пароль и видит свой хом..

Какие варианты я вижу:

1.запустить FTP сервер на родительской ОС, пользователей брать из mysql, фтп сервер будет показывать хомы с родительской ОС (если например в джейле мой хом /home/jeno/ то на родительской ОС я могу посмотреть его содержимое по пути /home/jails/somejail1/home/jeno/) - но такой вариант не хотелось бы...во первых непонятно что будет с правами, ну и хотелось бы добавить еще один сервер (отдельный физ. сервер а не джейл)..в таком случае, хомы пользователей на отдаленном сервер будут недоступны просто в файловой системе... (разве что прикрутить как-то виртуальный сетевой диск=\ но имхо это извращение)

2.в каждом джейле запустить FTP сервер на нестандартном порту, а на основной ОС сделать переброс портов - но нестандартные порты это наверное вообще не вариант=\ по крайней мере когда-то у меня уже было много граблей из-за этого (с пользователями у которых фаерволы, прокси, провайдером открыты только некоторые порты и т.д.)

3.проксирование
как и с http сейчас...
пользователь подключается в родительской ОС по FTP (например он хочет попасть на домен somedomain.com), на родительской ОС запущен какой-то сервер (пока не знаю что это может быть) на 21 порту, слушает порт...видит что пользователь хочет на "somedomain.com", смотрит что это локальный IP 192.168.0.131, и перенаправляет все на FTP сервер который запущен на 192.168.0.131... - такой вариант ооочень бы меня устроил...в таком случае я добавляю новый джейл/сервер, прописываю домены которые на нем есть, его IP и все красиво работает..
с утра лазил по интернету, пытался найти какие-то решения...ковырял 3proxy, но как я понял это несовсем то что надо...нужно чтоб оно висело как FTP сервер..а не работало как прокси... (как я понял тупо подключится к прокси серверу как к ФТП серверу (по 21 порту) не выйдет)

возможно какое-то низкоуровневое перенаправление, например ipfw (в чем я очень сильно сомневаюсь, всетаки FTP не низкоуровневый протокол)

надеюсь вариант №3 реально использовать, если да, то подскажите пожалуйста в какую сторону копать...хотя бы ключевые слова)
а если есть еще какие-то варианты, буду очень признателен) устал об клавиатуру головой биться...

Спасибо!

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
jeno
рядовой
Сообщения: 11
Зарегистрирован: 2009-11-30 23:28:15
Откуда: Украина - Киев

Re: FTP с родительской ОС в Jail'ы

Непрочитанное сообщение jeno » 2009-12-04 12:20:35

что, вариантов нет?

подскажите пожалуйста тогда реально ли пробросить порты если я знаю ipfwnat?

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35266
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: FTP с родительской ОС в Jail'ы

Непрочитанное сообщение Alex Keda » 2009-12-04 12:40:59

frox если тока.
других проксей я не знаю для ftp
========
а вообще - изврат какой-то затеяли =)
Убей их всех! Бог потом рассортирует...

Аватара пользователя
jeno
рядовой
Сообщения: 11
Зарегистрирован: 2009-11-30 23:28:15
Откуда: Украина - Киев

Re: FTP с родительской ОС в Jail'ы

Непрочитанное сообщение jeno » 2009-12-04 21:55:10

а какой вариант выбрали бы вы?
для каждого сервера брать выделенный IP?

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35266
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: FTP с родительской ОС в Jail'ы

Непрочитанное сообщение Alex Keda » 2009-12-04 22:08:12

да
Убей их всех! Бог потом рассортирует...

Аватара пользователя
jeno
рядовой
Сообщения: 11
Зарегистрирован: 2009-11-30 23:28:15
Откуда: Украина - Киев

Re: FTP с родительской ОС в Jail'ы

Непрочитанное сообщение jeno » 2009-12-23 4:06:20

Наконец-то вернулся к этой задаче...
всетаки решил пробросить порты с основной ОС на Jail'ы, и появились проблемы... =\

использую я ipfw nat, FreeBSD 8.0 RELEASE, PureFTPd+MySQL

jail'ы за nat'ом, те.у них есть интернет но доступа извне нету (у Jail'ов внутренние IP, 192.168.0.200 и т.д.), с родительской ОС проброшен порт 2121 на порт 21 в джейле 192.168.0.200...все работает правильно, подключаемся к серверу извне на порт 2121 попадаем на фтп Jail'a =)

вот только сейчас заметил очень странную неприятность:
захожу с домашнего тазика (windows, totalcommander) который за натом (у меня wifi роутер дома, он раздает интернет домашнему компьютеру..у роутера IP выделенный, а вот домашнему достается 192.168.0.100) на ftp://myserver:2121/ , вроде бы соединяется, пишет "welcome to pureftpd", пароль принимает..потом totalcommander отправляет ему кучу команд (типа "работать в бинарном режиме" и т.д.) на этом этапе все хорошо, а вот когда totalcommander отправляет команду PORT (это когда нужно передать данные, список файлов получить например...вообщем, totalcommader слушает какой-то порт и говорит фтп серверу чтоб тот подключался на такой-то IP и порт для передачи данных...те.сервер должен подключится ко мне, а не я к нему) после этого сервер говорит "500 I won't open a connection to 192.168.0.100 (only to 91.210.xxx.xxx)" оО

91.210.xxx.xxx - мой внешний домашний IP (IP моего роутера)
192.168.0.100 - мой внутренний домашний IP (который мне роутер дает)

очень странно...пробовал включить пассивный режим в totalcommander (чтоб я всегда подключался к серверу, а сервер ко мне не подключался), тоже неработает =(
потом я зашел по SSH на левый сервер, пробую зайти на ftp://myserver:2121/ через mc (с левого сервера, который напрямую подключен к интернету, у него выделенный IP), и оп...зашло без проблем оО

потом я попробовал поставить на родительскую ОС ту же версию PureFTPd только на порт 2221 (2121 у нас пробрасывается на джейловский pureftpd), пробую зайти через тот же totalcommander (в настройках подключения только порт поменял, с 2121 на 2221) - все отлично работает оО (и в пассивном и в активном режиме)

и вот не пойму куда вообще копать...или пробрасывать порты для FTP не дело, или такие грабли потому что pureftpd в jail'е а jail этот за натом... =\

вот все ipfw правила основной ОС:

Код: Выделить всё

ipfw nat 1 config ip 91.210.xxx.xxx same_ports unreg_only redirect_port tcp 192.168.0.200:21 2121
ipfw add 100 nat 1 ip from 192.168.0.1/24 to any via rl0 out
ipfw add 110 nat 1 ip from any to 91.210.xxx.xxx via rl0 in
91.210.xxx.xxx - внешний IP сервера
192.168.0.200 - внутренний IP одного из Jail'ов, в котором собстно стоит pureftpd и на который мы пробрасываем порт с родительской ос (91.210.xxx.xxx:2121 > 192.168.0.200:21)

надеюсь кто-то сталкивался, и объяснит мне в какую сторону копать =\ заранее спасибо!
пс.прошу прощения за лексику, моск уже кипит просто...

Аватара пользователя
jeno
рядовой
Сообщения: 11
Зарегистрирован: 2009-11-30 23:28:15
Откуда: Украина - Киев

Re: FTP с родительской ОС в Jail'ы

Непрочитанное сообщение jeno » 2009-12-23 4:47:00

вот снифером посмотрел как общаются сервер <-> мой компьютер (totalcommander)

подключаюсь к джейлу через проброшенный порт (ftp://myserver:2121/):

Код: Выделить всё

220---------- Welcome to Pure-FTPd [privsep] ----------
220-You are user number 3 of 50 allowed.
220-Local time is now 01:22. Server port: 21.
220 You will be disconnected after 15 minutes of inactivity.

USER a

331 User a OK. Password required

PASS 123

230-Your bandwidth usage is restricted
230-User a has group access to:  somegroup 
230-You must respect a 1:10 (UL/DL) ratio
230-OK. Current restricted directory is /
230-0 files used (0%) - authorized: 10000 files
230 0 Kbytes used (0%) - authorized: 102400 Kb

SYST

215 UNIX Type: L8

FEAT

211-Extensions supported:
 EPRT
 IDLE
 MDTM
 SIZE
 REST STREAM
 MLST type*;size*;sizd*;modify*;UNIX.mode*;UNIX.uid*;UNIX.gid*;unique*;
 MLSD
 UTF8
 ESTA
 PASV
 EPSV
 SPSV

211 End.

OPTS UTF8 ON

200 OK, UTF-8 enabled

PWD

257 "/" is your current location

TYPE A

200 TYPE is now ASCII

PORT 192,168,0,100,236,130

500 I won't open a connection to 192.168.0.100 (only to 91.210.xxx.xxx)

PASV

227 Entering Passive Mode (91,210,xxx,xxx,58,121)

PORT 192,168,0,100,236,132

500 I won't open a connection to 192.168.0.100 (only to 91.210.xxx.xxx)
подключаюсь к родительской ОС (ftp://myserver:2221/):

Код: Выделить всё

220---------- Welcome to Pure-FTPd [privsep] ----------
220-You are user number 1 of 50 allowed.
220-Local time is now 03:26. Server port: 2221.
220 You will be disconnected after 15 minutes of inactivity.

USER b

331 User b OK. Password required

PASS 123

230-Your bandwidth usage is restricted
230-User b has group access to:  frex      
230-You must respect a 1:10 (UL/DL) ratio
230-OK. Current restricted directory is /
230-0 files used (0%) - authorized: 10000 files
230 0 Kbytes used (0%) - authorized: 102400 Kb

SYST

215 UNIX Type: L8

FEAT

211-Extensions supported:
 EPRT
 IDLE
 MDTM
 SIZE
 REST STREAM
 MLST type*;size*;sizd*;modify*;UNIX.mode*;UNIX.uid*;UNIX.gid*;unique*;
 MLSD
 UTF8
 ESTA
 PASV
 EPSV
 SPSV
 ESTP
211 End.

OPTS UTF8 ON

200 OK, UTF-8 enabled

PWD

257 "/" is your current location

TYPE A

200 TYPE is now ASCII

PORT 192,168,0,100,236,169

500 I won't open a connection to 192.168.0.100 (only to 91.210.xxx.xxx)

PASV

227 Entering Passive Mode (91,210,xxx,xxx,231,244)

LIST

150 Accepted data connection

226-Options: -a -l 
226 13 matches total

QUIT

221-Goodbye. You uploaded 0 and downloaded 0 kbytes.
221 Logout.
как видно, в нормальной ситуации подключаемся к pureftpd (на родительскую ОС), пытаемся отправить PORT для работы в активном режиме, после чего сервер говорит что не может работать со мной в активном режиме, и мы переходим в пасивный...и передача данный происходит в пассивном режиме...

а вот во втором случае (когда мы к джейлу подключаемся myserver:2121) мы пытаемся работать в активном, мне pureftpd отвечает что не может работать в активном режиме, после мы почему-то продолжаем пытаться работать в активном режиме оО

iye
ст. сержант
Сообщения: 360
Зарегистрирован: 2008-07-29 9:02:04

Re: FTP с родительской ОС в Jail'ы

Непрочитанное сообщение iye » 2009-12-23 7:57:17

Может стОит поставить webmin в каждую клетку ? Сам не пользовался .. но думаю там должна быть функция загрузки файлов.

Аватара пользователя
server801
ст. лейтенант
Сообщения: 1398
Зарегистрирован: 2008-09-27 21:15:16
Откуда: Саратов
Контактная информация:

Re: FTP с родительской ОС в Jail'ы

Непрочитанное сообщение server801 » 2009-12-23 11:26:20

насчет фтп -попробуйте виртуальные хосты для каждого пользователя сделать.что получится?а по настройкам 3proxy
тут глянь,там много директив http://staynet.ru/freebsd/14-ustanovka- ... ocks5.html

Аватара пользователя
jeno
рядовой
Сообщения: 11
Зарегистрирован: 2009-11-30 23:28:15
Откуда: Украина - Киев

Re: FTP с родительской ОС в Jail'ы

Непрочитанное сообщение jeno » 2009-12-24 3:18:37

ух ребята, нашел в чем дело=)

я пытаюсь работать с ftp в джейле в активном режиме, конечно же это нереально так как у меня не внешний IP (ну я за натом, и к моему totalcommander'у извне не подключиться), FTP сервер переводит нас в пассивный режим, говорит мне IP и порт к которому мне надо подключится...
но! я подключался изначально к родительской ОС, которая пробрасывает 2121 порт на pureftpd в джейле...а тут джейл мне дает свой IP (внутренний) и какой-то левый порт (они всегда случайные) для передачи данных...ясное дело, totalcommander пытается открыть соединение на IP и порт которые сказал ему джейл, но доступа у него к ним нет... (потому что джейл за натом, к нему прямого доступа из интернета нет)

вообщем, нужно чтоб pureftpd в джейле, давал totalcommander'у (если мы работаем в пассивном режиме) IP родительско ОС и порт например с 30000 до 40000...при этом на родительской ОС пробросить помимо 2121 порта, еще и порты 30000-40000

пару минут гугления, и добавляем в конфиг pureftpd пару строчек:

Код: Выделить всё

# внешний IP, родительской ОС
ForcePassiveIP                91.210.ххх.ххх
# диапазон портов которые будет выдавать pureftpd при соединении в пассивном режиме (чтоб мы знали что нам пробрасывать)
PassivePortRange          30000 40000
ну и на родительской ОС добавляем для проброса портов:

Код: Выделить всё

redirect_port tcp 192.168.0.200:30000-40000 30000-40000
вот, а за активный режим беспокоиться не придется, pureftpd подключается к клиенту, и передает все что нужно (интернет в клетке есть, больше ничего не нужно)

FTP работает стабильно и быстро... (помимо меня юзают люди которым даю хостинг)
Всем спасибо! надеюсь кому-то будет полезно)

zeone
мл. сержант
Сообщения: 131
Зарегистрирован: 2010-01-29 11:51:02

Re: FTP с родительской ОС в Jail'ы

Непрочитанное сообщение zeone » 2011-02-07 16:12:18

Может мне подскажите. Я тоже использую PUREFTP одно время он работал нормально пока не понадобилось поставить еще 1 фтп (чтоб один смотрел внутрь с анонимами, а второй на внешнем интерфейсе с запросом пароля), в итоге поставил второй сделал на втором редирект пур фтп так и слушает 21 порт но вот проблемка он работает только в пасивном режиме, в активном он пишет:
---------------------------
ftp
---------------------------
Команда PORT не выполнена.
---------------------------
ОК
---------------------------

Пробывал выполнить действия выше но не вышло 8(