Привет, сообщество!Делаю корпоративный FTP за натом.
Внешний адрес (преобразуется натом во внутренний): 55.55.55.55
Внутренний: 10.0.0.2
Настроил пассивный режим, включил masqueradeaddress. Снаружи все работает.
Напрямую из сети - не работает. Следуя этому (http://www.proftpd.org/docs/howto/NAT.html)
мини-howto добавил <VirtualHost> директиву (кусок конфига ниже).
Часть конфига:
================================================
ServerName "FTP Site"
ServerType standalone
DefaultServer on
ScoreboardFile /var/run/proftpd/proftpd.scoreboard# Port 21 is the standard FTP port.
Port 21#DefaultAddress 10.0.0.2
MasqueradeAddress 55.55.55.55
PassivePorts 21300 21800<VirtualHost 10.0.0.2>
ServerName "Dataplus FTP {lan connection}"
</VirtualHost>
================================================Однако, не помогло. Из внутренней сети доступа все равно нет. proftpd выдает:
------------------------------------------------
Starting proftpd.
- warning: "Dataplus FTP {lan connection}" address/port (10.0.0.2:21) already in use by "FTP Site"
10.0.0.2 - 10.0.0.2:21 masquerading as 55.55.55.55
------------------------------------------------Что делать дальше? На ум приходит только повесить proftpd на два интерфейса (что бы заработала директива <VirtualHost>). Один использовать для внутренних пользователей, другой для внешних.
Может быть имеются другие альтернативы?
В глобальном конфиге не указан DefaultAddress. В этом случае демон слушает на всех интерфейсах. После этого в настройке ВиртуалХоста указан адрес, который уже на прослушке. Из-за этого и ошибка address/port (10.0.0.2:21) already in use.Как вариант - указать DefaultAddress 127.0.0.1, а ВиртуалХост уже описівать с настоящим адресом.
> #DefaultAddress 10.0.0.2
> <VirtualHost 10.0.0.2>
> - warning: "Dataplus FTP {lan connection}" address/port (10.0.0.2:21) already in use
> by "FTP Site"
> 10.0.0.2 - 10.0.0.2:21 masquerading as 55.55.55.55
> В глобальном конфиге не указан DefaultAddress. В этом случае демон слушает на
> всех интерфейсах. После этого в настройке ВиртуалХоста указан адрес, который уже
> на прослушке. Из-за этого и ошибка address/port (10.0.0.2:21) already in use.
> Как вариант - указать DefaultAddress 127.0.0.1, а ВиртуалХост уже описівать с настоящим
> адресом.Интересное предложение, однако оно не решает мою проблему.
У меня всего один физический интерфейс (кроме lo) и в решении, предложенным вами я все равно не могу сделать разные настройки режима работы фтп для разных клиентов, которые к нему стучатся.Например, если сделать:
==================================
DefaultAddress 127.0.0.1<VirtualHost 55.55.55.55>
ServerName "FTP"
MasqueradeAddress 55.55.55.55
PassivePorts 21300 21800
</VirtualHost><VirtualHost 10.0.0.2>
ServerName "FTP {lan connection}"
</VirtualHost>
==================================То в этом случае первая секция <VirtualHost> просто не сработает, так как у сервера нет интерфейса с ip 55.55.55.55.
У сервера есть только один ip 10.0.0.2, на который фаервол (корпоративный, на отдельной коробке) транслирует внешние обращения на ip 55.55.55.55
То есть, со стороны сервера мы можем разделять запросы на внутренние и внешние только по src ip запроса.
В связи с этим уточню свой вопрос: возможно ли настроить разные режимы работы proftpd сервера для разных клиентов, которые коннектятся к нему?
> Интересное предложение, однако оно не решает мою проблему.
> У меня всего один физический интерфейс (кроме lo) и в решении, предложенным
> вами я все равно не могу сделать разные настройки режима работы
> фтп для разных клиентов, которые к нему стучатся.Как я понял, для соединений из вне нужен passive mode, а для локалки обычный?
Тогда например так:
на физический интерфейс дбавляется еще один адрес из локальной сети типа 10.0.0.3
в глобальном конфиге надо описать все как для локалки с указанием DefaultAddress 10.0.0.2
в виртуалхосте с ip 10.0.0.3 нарисовать маскарад и пассивные порты.
со стороны маршрутизатора сделать перенаправление ftp на 10.0.0.3
>[оверквотинг удален]
>> вами я все равно не могу сделать разные настройки режима работы
>> фтп для разных клиентов, которые к нему стучатся.
> Как я понял, для соединений из вне нужен passive mode, а для
> локалки обычный?
> Тогда например так:
> на физический интерфейс дбавляется еще один адрес из локальной сети типа 10.0.0.3
> в глобальном конфиге надо описать все как для локалки с указанием DefaultAddress
> 10.0.0.2
> в виртуалхосте с ip 10.0.0.3 нарисовать маскарад и пассивные порты.
> со стороны маршрутизатора сделать перенаправление ftp на 10.0.0.3Да, спасибо! Именно так оно изначально и реализовано. Хотел прояснить возможность организации доступа с использованием одного интерфейса.
> Да, спасибо! Именно так оно изначально и реализовано. Хотел прояснить возможность
> организации доступа с использованием одного интерфейса.Имел ввиду - используя один ip адрес?
Можно и на одном, но придется разнести конфиг для локалки и мира по разным портам, т.е. в глобальном конфиге все остается так же (настройка для локалки), а в виртуалхосте описывается нестандартный порт. Например
<VirtualHost 10.0.0.2>
Port 2121
....Со стороны маршрутизатора делается проброс с 55.55.55.55 порт 21 на 10.0.0.2 порт 2121
>> Да, спасибо! Именно так оно изначально и реализовано. Хотел прояснить возможность
>> организации доступа с использованием одного интерфейса.
> Имел ввиду - используя один ip адрес?Ага.
Ну proftpd, как я понимаю, эти понятия не разделяет. Не суть, в общем.> Можно и на одном, но придется разнести конфиг для локалки и мира
> по разным портам, т.е. в глобальном конфиге все остается так же
> (настройка для локалки), а в виртуалхосте описывается нестандартный порт. Например
> <VirtualHost 10.0.0.2>
> Port 2121
> ....
> Со стороны маршрутизатора делается проброс с 55.55.55.55 порт 21 на 10.0.0.2 порт
> 2121Глупость написал ранее. Тоже хороший вариант, надо будет опробовать.
на какой адрес клиент из локалки пытается подключится на 55.55.55.55 или 10.0.0.2, клиенты тоже в подсети 10.0.0.2, лог подключения с клиента есть?
> на какой адрес клиент из локалки пытается подключится на 55.55.55.55 или 10.0.0.2,
> клиенты тоже в подсети 10.0.0.2, лог подключения с клиента есть?Из локальной сети клиенты подключаются на адрес 10.0.0.2, клиенты в той же подсети.
Лога не осталось, однако видно, что сервер переходит в пассивный режим и объявляет себя 55.55.55.55. Клиентский компьютер, естественно, пытается продолжить общение с ip 55.55.55.55 и запросы уходят в интернет.Проблема в том, что я не могу настроить proftpd в различных режимах, в зависимости от клиентского адреса.
> Проблема в том, что я не могу настроить proftpd в различных
> режимах, в зависимости от клиентского адреса.Это делается не на proftpd а на iptables.
Различные режимы работы описываются в разных виртуалхостах с разными портами. iptables занимается редиректом на эти порты исходя из адреса источника или любого другого условия.
>> Проблема в том, что я не могу настроить proftpd в различных
>> режимах, в зависимости от клиентского адреса.
> Это делается не на proftpd а на iptables.Это мне уже понятно.
> Различные режимы работы описываются в разных виртуалхостах с разными портами. iptables
> занимается редиректом на эти порты исходя из адреса источника или любого
> другого условия.Ну если будет работать, считаем за годный вариант. Ты реализовывал такую схему уже?
> Ну если будет работать, считаем за годный вариант. Ты реализовывал такую схему
> уже?на почтовых сервисах реализовывал, для фтп нет - не было необходимости.