Тема : Доступ к фтп из внутренней сетки


Dud  04-07-2008 12:42
Приветствую :)

Ситуация такая: есть БСД-машина с внешним гейтвеем (212.57.*.*) и к одному из её NICов прикручен адрес 192.168.2.177.
На машине запущен фтп-сервис.

Вопрос: как организовать к фтп доступ из сетки 192.168.2.0/24 так, чтобы трафик был ЛОКАЛЬНЫМ?

Благодарю.

Smithson  04-07-2008 12:52
Dud:
ответов ровно два:

1. Трафик на "серые" сети (к которым относится 192.168) из инета НЕВОЗМОЖЕН.

2. Многие ftp-серверы можно привязать к конкретному ip адресу и другие ip они слушать не будут.

Для стандартного ftp freebsd это делается так
в /etc/rc.conf пишешь
ftpd_flags= ' -a 192.168.2.177'
и перезапускаешь ftpd (/etc/rc.d/ftpd restart).
Всё.

smileenator  05-07-2008 13:57
хех, а что за фтп сервер, чемтраф щитаеца?
профтпд вообще этого не умеет помоему.
всегда слушает на всех доступных интерфейсах
но помойму отвечать как раз будет на том что ближе
если с локалки - то на локальном
если извне то на внешнем

barabashka  05-07-2008 14:40
Приветствую :)

Ситуация такая: есть БСД-машина с внешним гейтвеем (212.57.*.*) и к одному из её NICов прикручен адрес 192.168.2.177.
На машине запущен фтп-сервис.

Вопрос: как организовать к фтп доступ из сетки 192.168.2.0/24 так, чтобы трафик был ЛОКАЛЬНЫМ?

Благодарю.А я вобще не понял задачи, есть комп, есть демон, на компе есть 2 интерфейса - внешний и локальный, как организовать доступ из сетки локальной - куда??? Что бы трафик был локальным - опять же что имелось ввиду?

cyberb  05-07-2008 15:08
=) Ы Вообщем я вам расскажу что хочет товарищ)

inet <-> (212.57.*.*) bsd with ftp (192.168.2.0/24) <-> LAN

Так вот товарищ хочет чтобы из LAN траффик до фтп был локальным. Если я все прально понял, то Петросян точно отдыхает. Рассказываю, если запрос пришел из локальной сети(тоесть сорс у него локальный) - нет ни одной причины отправлять его в сеть глобальную. Траффик считает на порту прова(это там где у мя написано inet). Если пакет пришел на 212.57.*.* то в НАТ он тоже заворачиваться не буит(я в этом уверен на 99%, просто ща проверить негде), пакет придет на локаль, посмотрит таблицу маршрутизации и обнаружит что 212.57.*.* доступен без прыжков - это означает что до порта он снова не дойдет.

Вообщем снова вопрос в стиле баян - просто нада почитать про маршрутизацию, в книжках о БСД это 5-10 страниц. Я скоро застрелюсь от таких вопросов

smileenator  05-07-2008 18:49
хех, тут не всё так просто. если фтп слушает скажем на 212.57.*.*:21 то из локалки он будет проталкиваться через нат, а если он слушает на всех интерфейсах, то отвечать будет на интерфейсе который ближе.
root pure-ftpd 523 4 tcp4 *:21 *:*
вот например у меня - пюре слушает на всех доступных интерфейсах.
точно так же ведёт себя профтп. как себя ведёт стандартный фтпд - не знаю.

barabashka  05-07-2008 19:45
Важно не где слушает демон, а куда отправляется запрос от клиента, если запрос идет на внутренний адрес, то траф будет локальным, а если запрос идет на внешний адрес - то, мля, кривые ручки...

Вобще, если правильно строить безопасность сервера и работающих на нем сервисов, то ftp демон должен слушать только внутренние адреса, а для внешних запросов демон должен паблишиться с помощью файера, с соответствующей фильтрацией по протоколу, дабы отсекать заведомо неправильный траф, + флуд, брутфорс, ДДОС и подобную муть - всем этим должен заниматься файрвол, а не демон, вобщем это ИМХО.

Дык вот если рассматривать приведенный мной вариант, то поидее делать вобще ничего не нужно, потому как уже все сделано и работает. Если же не так - стоит задуматься над структурой и что-то поменять.

cyberb  06-07-2008 02:26
Товарищи хватить с*ать в уши) Даже если буит кидаться на внешку через НАТ(в чем я лично сомневаюсь)... Вот скажем пришел пакет, просочился в НАТ, система смотрит а где же у нас такой замечательный ИП.... ОПА, так вот он - на iface таком-то, отрабатывает и ответ назад через НАТ. Или вы хотите сказать, что запрос идет на НАТ, потом уходит на дефаултгейтвай, который его отправляет назад. Вы что???? Курить маны полезно, а вот всякую гадость внутрь заворачивать уже нет :relax:

Asped  07-07-2008 00:24
народ, вот честно, почитал нифига не понял... у машины есть интерфейс даже пускай на него прикручены 2 ипа это неважно абсолютно, главное как роутинг прописан до нужной сетке в обход инет шлюза ... в общем читайте маны как cyberb: советует...

barabashka  07-07-2008 00:42
А как роутинг прописан, если они в одной сети находятся... маска 24-я, палюбому адреса все в одной сети... тут как рутинг не прописывай, есть адрес, есть маска, есть другие адреса, попадающие под эту маску.

cyberb  07-07-2008 07:39
Да даже если это не в этой сетке, если на другой iface роутера-фтп-сервера... с какого перепуга этот сервер будет пакеты предназначенные ДЛЯ СЕБЯ отправлять в сеть(тоесть на порт на котором они считаться будут)? Развели флуд на тривиальным баяном!!! Я уже говорил, это написано в любой книжке по любой сетевой ОС.

Asped  07-07-2008 10:52
cyberb: а где аффтор собсно говоря... пускай расталковывает общественности, что у него куда зарулино, а то действительно игра на бояне получается...

P.S. - я конечно понимаю, что пофлудить всем хочется но это уже перерастает в обсуждение стека TCP/IP в полном обьеме...

Dud  07-07-2008 19:06
Растолковывать пока нечего. Изучаю pf.

Нужен доступ к фтп снаружи по наружнему адресу и изнутри по внутреннему.

barabashka  07-07-2008 20:16
Ну дык а вроде все таки и есть??? Или есть какие-то проблемы?

Dud  08-07-2008 13:11
Чисто мысли вслух :)



<внешн. адр> <--> BSD GW <--> em0 <--> ftp daemon

Соотв. адрес гейтвея внешний, адрес em0 тоже внешний.

Демон слушает на всех ифейсах. Так всё работает.




<внутр. адреса> <--> ?? <--> em0_alias0 <--> ftp daemon

Здесь внутренние адреса -- это диапазон 192.168.2.0/24, алиасу присвоен адрес 192.168.2.177.

Т.е. нужен статик роутинг диапазона на алиас, минуя деф. гейтвей?


static routes "intFTP"
route_intFTP="192.168.2.0/24 192.168.2.177"

Типа такого в rc.conf?

barabashka  08-07-2008 13:49
Не нужен...
192.168.2.177 - адрес сервера
сеть имеет адресацию 192.168.2.0 с маской 255.255.255.0 |==> адрес сервера принадлежит указанной сети |==> не нужны специальные маршруты.

Рекомендую начать с прочтения книшки по TCP\IP, особенно уделить внимание разделу где описывается что такое IP адрес и что такое маска, как выяисляются маски для диапазона IP адресов, нужны ли маршруты внутри подсетей.

cyberb  08-07-2008 14:25
:cry: :lol: :cry: :lol: :cry: :lol: :cry:

Смысла нет писать статику на свой сервант, принципов маршрутизации не понимаешь ваще. Я те ДАВНО говорил, что прочитать по ТЦП и ИП нада хоть что-то, какие уж тут маны.

Я коротко резюмирую:
* читать что такое маршруты и зачем они нужны
* читать что такое алиасы и как этот механизм работает
* читать как происходит маршрутизация
* ессно о масках и самих адресах, как сказал барабашка

Dud  09-07-2008 12:27
В части организации фтп-сервиса и доступа к нему я полностью согласен с Барабашкой (пост № 7).


Проблема решилась довольно неожиданным образом: между всеми внешними ипами, которые нам выделили, трафик бесплатный.


Всем спасибо :) Полёт продолжается :)))

barabashka  09-07-2008 17:29
Проблема решилась довольно неожиданным образом: между всеми внешними ипами, которые нам выделили, трафик бесплатный.Есть один прикол, из разряда адресов и масок:

Есть у вас канал, дали вам "десяток" адресов, вы их развесили по разным устройствам, а теперь фокус-покус - с "десятком" адресов идет маска, благодаря которой любое устройство может получить доступ к GW и к другим адресам СОВЕРШЕННО БЕСПЛАТНО, более того, учитывая, что все адреса принадлежат одной подсети - уже описывал выше - даже внешние адреса, то общаются они между собой без GW - напрямую в одной кабельной сети, трафик в этом случае не учитывается ни одним провайдером...

Dud  10-07-2008 11:07
barabashka:

Ну не знал :)))) Тем более, что внешних подсеток несколько.

barabashka  10-07-2008 12:36
C подсетками такой фокус не прокатит, все-таки почитай про TCP\IP, осоденно удели внимание разделам про адреса и макси, а так же про маршрутизацию, там есть просто небольшое дополнение к адресам и маскам в виде GW и маршрутов.

cyberb  10-07-2008 19:54
тут нада знать не про провайдер, а про специфику работы свитча - он коммутирует 2 порта и наружу ничо не идет!

Dud  10-07-2008 20:21
cyberb:

Дополню. На провайдерском свитче сетка класса, например, С, нарезается на более мелкие (8-16 адресов) виланом. Клиенту выдаётся номер сетки, маска, гейтвей, и он (клиент) эту подсеть маршрутизирует самостоятельно.

А вот гейтвеи действительно можно представить как воткнутые в лан-порты глупого свича провода.

И тогда всё сходится.

cyberb  10-07-2008 22:04
И вот если чуууутка подумать сразу треда аля ... (пожалуй промолчу) не будет, я представляю какие чудеса откроются если еще почитать- уууух, только держись

Dud  11-07-2008 10:16
cyberb:

Я не зарекаюсь ;)

Идея прикрутить второй GW к БСД вполне может быть реализована, вот только практического смысла в ней я не вижу.

smileenator  13-07-2008 15:52
Растолковывать пока нечего. Изучаю pf.

Нужен доступ к фтп снаружи по наружнему адресу и изнутри по внутреннему.

А почему не можешь пустить 2 процесса?
Типа того:
pure-ftpd -4AdeH -c 32 -C 2 -r -S <ip_address>,21 -u 100 -U 133:022 -B (для внешки)
pure-ftpd -4AdEH -c 8 -C 8 -lunix -g /var/run/pure-ftpd-pdb.pid -S <ip_address>,21 -B (для внутренних)

WAG[LAMO]  13-05-2009 16:32
Небольшой нюанс по поводу работы pf с протоколом ftp

rc.conf

ftp-proxy_enable="YES"

pf.conf

nat-anchor "ftp-proxy/*"
rdr-anchor "ftp-proxy/*"
anchor "ftp-proxy/*"

Dud  14-05-2009 19:51
WAG[LAMO]:

Спасибо, пригодится :)

WAG[LAMO]  02-10-2010 17:42
Есть замечательный демон в портах rinetd
Настройка его элементарна!
Можно назначить переброс порта на внутренний адрес.
Только не забудь в фаерволле открыть его.

shr_eax  07-10-2010 14:22
Выхода два - либо всё-таки привязать ftp-демона к локальному интерфейсу, либо добавить исключающее подсчёт правило в считалку трафика.

Ещё лучше привязать А-запись в DNS специально для фтп, а в BIND сделать разные VIEW для внешки и локалки.

Да, и не забываем - с ftp не всё так просто - там адрес участвует ещё в самом протоколе, нужен helper полюбому (исключающий из ната и перенаправляющий на ftp-proxy, либо через стандартные хелперы NAT для ipfw/ipnat/pf).

Вобще, исходных данных мало =) И не вкурю до сих пор при чём тут внешний шлюз - это таки ip-адрес уже на другой внешней железке, или ip-адрес на сетевухе сервера смотрящей во внешку?

ЫЫЫ, уже всё решили) сори за флуд)