The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Два сервера на proftpd и iptables"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Маршрутизация, NAT / Linux)
Изначальное сообщение [ Отслеживать ]

"Два сервера на proftpd и iptables"  +/
Сообщение от HunteX email(ok) on 24-Окт-11, 11:49 
Всем привет! Есть сервер с IP 192.168.2.10. Также на сервере крутятся 2 виртуальные машины (виртуализация от KVM). Связующим звеном между сервером и виртуалками является виртуальный мост с IP 10.0.0.1. На каждой виртуальной машине установлен Proftpd 1.3.3f. Задача: необходимо предоставить доступ к FTP обеих виртуалок.

Для этого на сервере (хосте) сделано следующее:


iptables -t nat -I PREROUTING -p tcp -d 192.168.2.10 --dport 21 -j DNAT --to-destination 10.0.0.50:21
iptables -t nat -I PREROUTING -p tcp -d 192.168.2.10 --dport 221 -j DNAT --to-destination 10.0.0.60:21
iptables -t nat -I POSTROUTING -p tcp -s 10.0.0.50 --sport 21 -j SNAT --to-source 192.168.2.10:21
iptables -t nat -I POSTROUTING -p tcp -s 10.0.0.60 --sport 21 -j SNAT --to-source 192.168.2.10:221

modprobe ip_conntrack_ftp=21,221
modprobe ip_nat_ftp

политика iptables хоста по умолчанию везде ACCEPT

Проблема возникает при входе на 221 порт (то есть на виртуалку 10.0.0.60).  
Соединение проходит успешно, логинится, но потом обламывается. Вот лог из Total Commander:


Connect to: (24.10.2011 9:39:37)
hostname=site.ru:221
username=
startdir=
site.ru=мой_внешний_(белый)_IP
220 ProFTPD 1.3.3f Server [10.0.0.60]
USER huntex
331 Password required for huntex
PASS *****
230 User huntex logged in
SYST
215 UNIX Type: L8
FEAT
211-Features:
MDTM
MFMT
TVFS
MFF modify;UNIX.group;UNIX.mode;
MLST modify*;perm*;size*;type*;unique*;UNIX.group*;UNIX.mode*;UNIX.owner*;
REST STREAM
SIZE
211 End
Connect ok!
PWD
257 "/" is the current directory
Чтение каталога...
TYPE A
200 Type set to A
PASV
227 Entering Passive Mode (10,0,0,60,223,226).
PORT мой_внешний_(белый)_IP,93,8
200 PORT command successful
LIST
PORT failed, try PASV mode!
PASV
(---НЕ РАБОТАЕТ---)

+ еще заметил такую вещь: Так как у меня еще стоит шлюз, который делает порт-форвардинг на 192.168.2.10, получил в логах следующее: При подключении на 21 порт:


PASV
227 Entering Passive Mode (мой_внешний_IP,180,146).
LIST
(---ВСЕ ОК---)

При подключении на 221 порт:


PASV
227 Entering Passive Mode (192,168,2,10,201,6).
PORT мой_внешний_IP,98,228
200 PORT command successful
LIST
PORT failed, try PASV mode!
PASV
(---НЕ РАБОТАЕТ---)

То есть, в первом случае (21 порт) при входе в пассивный режим я получаю внешний (белый) IP, а во втором случае (221 порт) я получаю 192.168.2.10, причем я уверен в железке (потому что там и настроить то что-то особенно не получится), проблема где-то на сервере.

И если это поможет чем-то:


root@lan:~# lsmod | grep ftp
nf_nat_ftp              2031  0
nf_conntrack_ftp        5537  1 nf_nat_ftp
nf_nat                 13388  3 nf_nat_ftp,ipt_MASQUERADE,iptable_nat
nf_conntrack           46535  6 nf_nat_ftp,nf_conntrack_ftp,ipt_MASQUERADE,iptab           le_nat,nf_nat,nf_conntrack_ipv4

root@lan:~# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        *               255.255.255.0   U     0      0        0 virbr1
192.168.2.0     *               255.255.255.0   U     1      0        0 eth0
default         192.168.2.111   0.0.0.0         UG    0      0        0 eth0


Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Два сервера на proftpd и iptables"  +/
Сообщение от reader (ok) on 24-Окт-11, 12:44 
>[оверквотинг удален]
> Для этого на сервере (хосте) сделано следующее:
>
 
> iptables -t nat -I PREROUTING -p tcp -d 192.168.2.10 --dport 21 -j
> DNAT --to-destination 10.0.0.50:21
> iptables -t nat -I PREROUTING -p tcp -d 192.168.2.10 --dport 221 -j
> DNAT --to-destination 10.0.0.60:21
> iptables -t nat -I POSTROUTING -p tcp -s 10.0.0.50 --sport 21 -j
> SNAT --to-source 192.168.2.10:21
> iptables -t nat -I POSTROUTING -p tcp -s 10.0.0.60 --sport 21 -j
> SNAT --to-source 192.168.2.10:221

обратное преобразование ответных пакетов nat делает сам

>[оверквотинг удален]
>

 
> PASV
> 227 Entering Passive Mode (192,168,2,10,201,6).
> PORT мой_внешний_IP,98,228
> 200 PORT command successful
> LIST
> PORT failed, try PASV mode!
> PASV
> (---НЕ РАБОТАЕТ---)
>

данные передаются с 20 порта, snat для него работает?

> То есть, в первом случае (21 порт) при входе в пассивный режим
> я получаю внешний (белый) IP, а во втором случае (221 порт)
> я получаю 192.168.2.10, причем я уверен в железке (потому что там
> и настроить то что-то особенно не получится), проблема где-то на сервере.

MasqueradeAddress

>[оверквотинг удален]
> 0 virbr1
> 192.168.2.0     *      
>         255.255.255.0  
> U     1      
> 0        0 eth0
> default         192.168.2.111  
> 0.0.0.0         UG  
>   0      0  
>      0 eth0
>

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Два сервера на proftpd и iptables"  +/
Сообщение от HunteX email(ok) on 24-Окт-11, 13:00 
> обратное преобразование ответных пакетов nat делает сам

Так, значит правила будут выглядеть следующим образом?
iptables -t nat -I PREROUTING -p tcp -d 192.168.2.10 --dport 21 -j DNAT --to-destination 10.0.0.50:21
iptables -t nat -I PREROUTING -p tcp -d 192.168.2.10 --dport 221 -j DNAT --to-destination 10.0.0.60:21

> данные передаются с 20 порта, snat для него работает?

Добавил:
iptables -t nat -I POSTROUTING -p tcp --sport 20 -j SNAT --to-source 192.168.2.10:20

p.s. больше правил в iptables нет

> MasqueradeAddress

Можно подробнее? Что именно тут указывать? 192.168.2.10?
Есть еще такая вещь как MasqueradePorts ... её тоже юзать или не надо?

Внес на виртуалку 10.0.0.60 (та что по 221 порту):
MasqueradeAddress 192.168.2.10

Та же история - не грузится, а виртуалка на 21 порту нормально работает (

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Два сервера на proftpd и iptables"  +/
Сообщение от reader (ok) on 24-Окт-11, 13:42 
>[оверквотинг удален]
> iptables -t nat -I PREROUTING -p tcp -d 192.168.2.10 --dport 221 -j
> DNAT --to-destination 10.0.0.60:21
> iptables -t nat -I POSTROUTING -p tcp --sport 20 -j SNAT --to-source
> 192.168.2.10
>> данные передаются с 20 порта, snat для него работает?
> Добавил:
> iptables -t nat -I POSTROUTING -p tcp --sport 20 -j SNAT --to-source
> 192.168.2.10:20
> p.s. больше правил в iptables нет
>> MasqueradeAddress

белый ip шлюза за которым стоит ftp-сервер, адрес который отдается в ответ на PASV

> Можно подробнее? Что именно тут указывать? 192.168.2.10?
> Есть еще такая вещь как MasqueradePorts ... её тоже юзать или не
> надо?
> Внес на виртуалку 10.0.0.60 (та что по 221 порту):
> MasqueradeAddress 192.168.2.10
> Та же история - не грузится, а виртуалка на 21 порту нормально
> работает (

сравните вывод tcpdump при работе с разными серверами, при этом смотрите сразу на обоих интерфейсах

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Два сервера на proftpd и iptables"  +/
Сообщение от HunteX email(ok) on 24-Окт-11, 13:45 
> белый ip шлюза за которым стоит ftp-сервер, адрес который отдается в ответ
> на PASV

Ага, понял ... делал, но не помогает.
Добавил на рабочую виртуалку (которая по 21 порту) - не стала работать :( Пришлось все на место вернуть

> сравните вывод tcpdump при работе с разными серверами, при этом смотрите сразу
> на обоих интерфейсах

tcpdump запускать на хосте или на виртуалках ?

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Два сервера на proftpd и iptables"  +/
Сообщение от reader (ok) on 24-Окт-11, 13:53 
>> белый ip шлюза за которым стоит ftp-сервер, адрес который отдается в ответ
>> на PASV
> Ага, понял ... делал, но не помогает - думаю это для того,
> чтобы скрыть внутреннюю схему сети?

это для того что бы клиент знал куда обращаться в пассивном режиме, если не указывать то отдается адрес на котором работает сервер, в вашем случае серый, на активный режим не должно влиять.
>> сравните вывод tcpdump при работе с разными серверами, при этом смотрите сразу
>> на обоих интерфейсах
> tcpdump запускать на хосте или на виртуалках ?

на хосте

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Два сервера на proftpd и iptables"  +/
Сообщение от LSTemp (ok) on 25-Окт-11, 00:35 
1) RTFM
2) виртуал-хостинг для FTP возможен только по разным IP, но не по ПОРТАМ - вешай алиасы на интерфейс, если поможет/можешь.
3) conntrack-* модули ядра работают только для стандартных реализаций протокола (см. п.1и2)

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

7. "Два сервера на proftpd и iptables"  +/
Сообщение от LSTemp (ok) on 25-Окт-11, 02:51 
> 1) RTFM
> 2) виртуал-хостинг для FTP возможен только по разным IP, но не по
> ПОРТАМ - вешай алиасы на интерфейс, если поможет/можешь.
> 3) conntrack-* модули ядра работают только для стандартных реализаций протокола (см. п.1и2)

уточню п.3 - работают только по стандартным портам (кажется). советую задуматься над функционалом модуля ядра conntrack-ftp, чтобы прояснить для себя ситуацию.


Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "Два сервера на proftpd и iptables"  +/
Сообщение от HunteX email(ok) on 25-Окт-11, 06:47 
> 1) RTFM
> 2) виртуал-хостинг для FTP возможен только по разным IP, но не по
> ПОРТАМ - вешай алиасы на интерфейс, если поможет/можешь.
> 3) conntrack-* модули ядра работают только для стандартных реализаций протокола (см. п.1и2)

Да, в моей ситуации это поможет ... а КАК быть, если у меня возможен только один интерфейс, предположим, что у сервера белый IP? Существует ли какое-нибудь ПО, проксирующее FTP на тот или иной сервер в зависимости, скажем от логина ... или это уже костыли?

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

9. "Два сервера на proftpd и iptables"  +/
Сообщение от LSTemp (ok) on 11-Ноя-11, 04:24 
>> 1) RTFM
>> 2) виртуал-хостинг для FTP возможен только по разным IP, но не по
>> ПОРТАМ - вешай алиасы на интерфейс, если поможет/можешь.
>> 3) conntrack-* модули ядра работают только для стандартных реализаций протокола (см. п.1и2)
> Да, в моей ситуации это поможет ... а КАК быть, если у
> меня возможен только один интерфейс, предположим, что у сервера белый IP?
> Существует ли какое-нибудь ПО, проксирующее FTP на тот или иной сервер
> в зависимости, скажем от логина ... или это уже костыли?

От логина вряд ли (или стоить такое железо будет ОЧЕНЬ дорого).. А так нагрузку раскидать по нескольким сервакам, которые за одним белым адресом сидят вполне возможно.


Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "Два сервера на proftpd и iptables"  +/
Сообщение от HunteX email(ok) on 11-Ноя-11, 07:13 
>[оверквотинг удален]
>>> 2) виртуал-хостинг для FTP возможен только по разным IP, но не по
>>> ПОРТАМ - вешай алиасы на интерфейс, если поможет/можешь.
>>> 3) conntrack-* модули ядра работают только для стандартных реализаций протокола (см. п.1и2)
>> Да, в моей ситуации это поможет ... а КАК быть, если у
>> меня возможен только один интерфейс, предположим, что у сервера белый IP?
>> Существует ли какое-нибудь ПО, проксирующее FTP на тот или иной сервер
>> в зависимости, скажем от логина ... или это уже костыли?
> От логина вряд ли (или стоить такое железо будет ОЧЕНЬ дорого).. А
> так нагрузку раскидать по нескольким сервакам, которые за одним белым адресом
> сидят вполне возможно.

Я кстати решил эту проблемку :) http://www.troyashka.ru/2011/10/proftpd.html

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "Два сервера на proftpd и iptables"  +/
Сообщение от LSTemp (ok) on 15-Ноя-11, 01:58 
>> 1) RTFM
>> 2) виртуал-хостинг для FTP возможен только по разным IP, но не по
>> ПОРТАМ - вешай алиасы на интерфейс, если поможет/можешь.
>> 3) conntrack-* модули ядра работают только для стандартных реализаций протокола (см. п.1и2)
> Да, в моей ситуации это поможет ... а КАК быть, если у
> меня возможен только один интерфейс, предположим, что у сервера белый IP?
> Существует ли какое-нибудь ПО, проксирующее FTP на тот или иной сервер
> в зависимости, скажем от логина ... или это уже костыли?

Ну и кто мешает навесить на физический интерфейс этого сервера еще один белый ИП алиасом? Будет стандартная реализация виртуала для ФТП по ИПу.


Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

12. "Два сервера на proftpd и iptables"  +/
Сообщение от HunteX email(ok) on 15-Ноя-11, 06:39 
>>> 1) RTFM
>>> 2) виртуал-хостинг для FTP возможен только по разным IP, но не по
>>> ПОРТАМ - вешай алиасы на интерфейс, если поможет/можешь.
>>> 3) conntrack-* модули ядра работают только для стандартных реализаций протокола (см. п.1и2)
>> Да, в моей ситуации это поможет ... а КАК быть, если у
>> меня возможен только один интерфейс, предположим, что у сервера белый IP?
>> Существует ли какое-нибудь ПО, проксирующее FTP на тот или иной сервер
>> в зависимости, скажем от логина ... или это уже костыли?
> Ну и кто мешает навесить на физический интерфейс этого сервера еще один
> белый ИП алиасом? Будет стандартная реализация виртуала для ФТП по ИПу.

Белых айпишников больше нет у меня - только один :(

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "Два сервера на proftpd и iptables"  +/
Сообщение от Punck on 23-Ноя-11, 11:38 
>[оверквотинг удален]
>>>> 2) виртуал-хостинг для FTP возможен только по разным IP, но не по
>>>> ПОРТАМ - вешай алиасы на интерфейс, если поможет/можешь.
>>>> 3) conntrack-* модули ядра работают только для стандартных реализаций протокола (см. п.1и2)
>>> Да, в моей ситуации это поможет ... а КАК быть, если у
>>> меня возможен только один интерфейс, предположим, что у сервера белый IP?
>>> Существует ли какое-нибудь ПО, проксирующее FTP на тот или иной сервер
>>> в зависимости, скажем от логина ... или это уже костыли?
>> Ну и кто мешает навесить на физический интерфейс этого сервера еще один
>> белый ИП алиасом? Будет стандартная реализация виртуала для ФТП по ИПу.
> Белых айпишников больше нет у меня - только один :(

Прекрасно работает proftpd именно по логину с одним белым айпи. Только не порт форвард, а просто один сервак и на нём несколько виртуальных, разделённых именно по логину. Хоть он и ругается при запуске, но всё равно перекидывает в нужное место при заходе.

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

14. "Два сервера на proftpd и iptables"  +/
Сообщение от LSTemp (ok) on 26-Ноя-11, 07:41 
> Прекрасно работает proftpd именно по логину с одним белым айпи. Только не
> порт форвард, а просто один сервак и на нём несколько виртуальных,
> разделённых именно по логину. Хоть он и ругается при запуске, но
> всё равно перекидывает в нужное место при заходе.

Да? ежа с ужом не путаешь? Причем тут виртуальные ФТП?

Если моя контора твой клиент и хочет взять у тебя услугу FTP, и (естественно!) хочет, чтоб клиенты заходили на ftp:\\моя_контора.твой.фтп. Как ты ЭТО логинами сделаешь?

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру