pf + ftp-proxy

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

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
osipen
рядовой
Сообщения: 38
Зарегистрирован: 2007-12-24 16:29:03

pf + ftp-proxy

Непрочитанное сообщение osipen » 2008-01-14 13:19:05

Hi All!
Не так давно я уже писал с подобной темой но решение так и не нашлось, решил попробовать ftp-proxy.
Задача. В локалке ftp-сервер(freebsd + ftpd) нужно его выставить в интернет используя шлюз (freebsd + pf + ftp-proxy). http://www.openbsd.org/faq/pf/ftp.html - статья по настройке, http://mr-tacitus.blogspot.com/2007/10/ ... eebsd.html - еще одна.

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

# ee /etc/pf.conf
prov_if="rl0" # Внешний сетевой интерфейс
int_if="fxp0" # Внутренний сетевой интерфейс
internal_net="{192.168.0.0/24}" # локалка
me="{192.168.0.1}"

scrub in all

nat on $prov_if from $internal_net to any -> $prov_if  # натим пользователей в интернет
nat-anchor "ftp-proxy/*"
rdr-anchor "ftp-proxy/*"
rdr on $prov_if proto tcp from any to any port 21 -> 127.0.0.1 port 8021

anchor "ftp-proxy/*"

# Открыл все что бы развеить сомнения относительно некоторых правил.
pass in all
pass out all

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

# ee /etc/inetd.conf
ftp-proxy       stream  tcp     nowait  root    /usr/libexec/ftp-proxy  ftp-proxy -R 192.168.0.250 -S 192.168.0.1
Ну и все пробуем.( из винды)

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

# ftp – d doman.ru
# Связь с doman.ru
# 220 bsd.natu.local FTP server <Version 6.00LS> ready.
# Пользователь <doman.ru:<none>>: test
# ---> USER test
# 331 Password required for test.
# Пароль:
# ---> PASS test
# 230 User test logged in.
# ls
# PORT 192,168,0,3,9.140
# 200 PORT command successful.
# ---> NLST
# Подключение разорвано удаленных узлом.
Почему рвется соединение?

Хостинговая компания 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/

osipen
рядовой
Сообщения: 38
Зарегистрирован: 2007-12-24 16:29:03

Re: pf + ftp-proxy

Непрочитанное сообщение osipen » 2008-01-14 18:12:56

Вывод tcpdump

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

qmail# tcpdump host 192.168.0.1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on rl0, link-type EN10MB (Ethernet), capture size 96 bytes
19:03:45.877985 arp who-has 192.168.0.1 tell beta.natu.local
19:04:29.630593 arp who-has 192.168.0.1 tell setevoy7.natu.local
19:05:02.763400 IP 192.168.0.1.54562 > 192.168.0.250.ftp: P 1515840794:1515840801(7) ack 1000330335 win 33304 <nop,nop,timestamp 18462524 348958356>
19:05:02.763847 IP 192.168.0.250.ftp > 192.168.0.1.54562: P 1:37(36) ack 7 win 33304 <nop,nop,timestamp 349399717 18462524>
19:05:02.863187 IP 192.168.0.1.54562 > 192.168.0.250.ftp: . ack 37 win 33304 <nop,nop,timestamp 18462624 349399717>
19:05:06.839980 IP 192.168.0.1.54562 > 192.168.0.250.ftp: P 7:13(6) ack 37 win 33304 <nop,nop,timestamp 18466600 349399717>
19:05:06.840286 IP 192.168.0.250.ftp > 192.168.0.1.54562: P 37:51(14) ack 13 win 33304 <nop,nop,timestamp 349403794 18466600>
19:05:06.840413 IP 192.168.0.250.ftp > 192.168.0.1.54562: F 51:51(0) ack 13 win 33304 <nop,nop,timestamp 349403794 18466600>
19:05:06.840538 IP 192.168.0.1.54562 > 192.168.0.250.ftp: . ack 52 win 33304 <nop,nop,timestamp 18466600 349403794>
19:05:07.043208 IP 192.168.0.1.54562 > 192.168.0.250.ftp: F 13:13(0) ack 52 win 33304 <nop,nop,timestamp 18466803 349403794>
19:05:07.043335 IP 192.168.0.250.ftp > 192.168.0.1.54562: . ack 14 win 33303 <nop,nop,timestamp 349403997 18466803>
19:05:10.346659 IP 192.168.0.1.54752 > 192.168.0.250.ftp: S 476996435:476996435(0) win 65535 <mss 1460,nop,wscale 1,nop,nop,timestamp 18470106 0,sackOK,eol>
19:05:10.346796 IP 192.168.0.250.ftp > 192.168.0.1.54752: S 3540802573:3540802573(0) ack 476996436 win 65535 <mss 1460,nop,wscale 1,nop,nop,timestamp 349407301 18470106,sackOK,eol>
19:05:10.346985 IP 192.168.0.1.54752 > 192.168.0.250.ftp: . ack 1 win 33304 <nop,nop,timestamp 18470107 349407301>
19:05:10.368975 IP 192.168.0.250.ftp > 192.168.0.1.54752: P 1:58(57) ack 1 win 33304 <nop,nop,timestamp 349407323 18470107>
19:05:10.469133 IP 192.168.0.1.54752 > 192.168.0.250.ftp: . ack 58 win 33304 <nop,nop,timestamp 18470229 349407323>
19:05:13.301377 IP 192.168.0.1.54752 > 192.168.0.250.ftp: P 1:13(12) ack 58 win 33304 <nop,nop,timestamp 18473061 349407323>
19:05:13.304853 IP 192.168.0.250.ftp > 192.168.0.1.54752: P 58:92(34) ack 13 win 33304 <nop,nop,timestamp 349410259 18473061>
19:05:13.404254 IP 192.168.0.1.54752 > 192.168.0.250.ftp: . ack 92 win 33304 <nop,nop,timestamp 18473164 349410259>
19:05:16.679781 IP 192.168.0.1.54752 > 192.168.0.250.ftp: P 13:26(13) ack 92 win 33304 <nop,nop,timestamp 18476439 349410259>
19:05:16.697139 IP 192.168.0.250.ftp > 192.168.0.1.54752: P 92:119(27) ack 26 win 33304 <nop,nop,timestamp 349413652 18476439>
19:05:16.796601 IP 192.168.0.1.54752 > 192.168.0.250.ftp: . ack 119 win 33304 <nop,nop,timestamp 18476556 349413652>

Аватара пользователя
tom.cat
старшина
Сообщения: 446
Зарегистрирован: 2007-11-24 20:23:49
Откуда: Мытищи
Контактная информация:

Re: pf + ftp-proxy

Непрочитанное сообщение tom.cat » 2008-01-14 21:29:06

Привет. Могу предположить, что у тебя не открыты порты для пассивного режима ФТП. У меня ФТП сервер стоит на шлюзе и я не использую фтп-прокси. Попробуй с этой строкой

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

pass in on $ext_if proto tcp from any to any port > 49152 keep state
When you see pigs fly it means Windows has become open source

osipen
рядовой
Сообщения: 38
Зарегистрирован: 2007-12-24 16:29:03

Re: pf + ftp-proxy

Непрочитанное сообщение osipen » 2008-01-14 21:40:20

На шлюзе не катит, хотя конешно это выход из положения, но мне это подходит.
ну я думал об этом, только вот разрешать нечего у меня
ВСЕ РАЗРЕШЕНО.

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

pass in all
pass out all
Может сам ftpd не дает подключится, может пассивные порты не поксируются не понятно

Аватара пользователя
tom.cat
старшина
Сообщения: 446
Зарегистрирован: 2007-11-24 20:23:49
Откуда: Мытищи
Контактная информация:

Re: pf + ftp-proxy

Непрочитанное сообщение tom.cat » 2008-01-15 9:00:43

У меня тоже самое стоит в pf.conf

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

pass in all
pass out all
Но ниже мне пришлось добавлять строку

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

pass in on $ext_if proto tcp from any to any port > 49152 keep state
Чтобы заработал пассивный режим на ФТП. Если не получается попробуй в активном режиме. Есть очень хороший и бесплатный клиент FileZilla. Возможно в активном режиме он не будет обрывать соединения :)
When you see pigs fly it means Windows has become open source

osipen
рядовой
Сообщения: 38
Зарегистрирован: 2007-12-24 16:29:03

Re: pf + ftp-proxy

Непрочитанное сообщение osipen » 2008-01-15 9:46:40

Строку дописал бестолку. Нужно просто в пасивном режиме настроить :cry:

Аватара пользователя
tom.cat
старшина
Сообщения: 446
Зарегистрирован: 2007-11-24 20:23:49
Откуда: Мытищи
Контактная информация:

Re: pf + ftp-proxy

Непрочитанное сообщение tom.cat » 2008-01-15 16:18:07

А не пробовал сделать именно с правилами, как указано на сайте http://www.openbsd.org/faq/pf/ftp.html? Возможно надо указать жесткое правило для корректной работы фтп-прокси?
When you see pigs fly it means Windows has become open source

osipen
рядовой
Сообщения: 38
Зарегистрирован: 2007-12-24 16:29:03

Re: pf + ftp-proxy

Непрочитанное сообщение osipen » 2008-01-15 16:55:19

Угу пробовал :( , в самом начале моего вопроса написано что это уже прочел. Просто реально в инете на эту тему инфы мало на эту тему. Все почти полностью копируется с данной статьи.

Аватара пользователя
tom.cat
старшина
Сообщения: 446
Зарегистрирован: 2007-11-24 20:23:49
Откуда: Мытищи
Контактная информация:

Re: pf + ftp-proxy

Непрочитанное сообщение tom.cat » 2008-01-15 22:49:09

Исчерпался :) Не могу больше ничем помочь, т.к. не устанавливал подобное. У Лиса спроси :wink:
When you see pigs fly it means Windows has become open source

osipen
рядовой
Сообщения: 38
Зарегистрирован: 2007-12-24 16:29:03

Re: pf + ftp-proxy

Непрочитанное сообщение osipen » 2008-01-16 1:01:52

tom.cat спасибо тебе дружище, я разобрался. Если кому потребуется решение пишете. :P

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

Re: pf + ftp-proxy

Непрочитанное сообщение Alex Keda » 2008-01-16 1:22:52

osipen писал(а):tom.cat спасибо тебе дружище, я разобрался. Если кому потребуется решение пишете. :P
ну так отпишись...
никогда не метерился, натыкаясь в инете на темы, где чувак в конце радостно отписался что у него всё заработало, а ты сдишь и не можешь понять что не так? =)
Убей их всех! Бог потом рассортирует...

osipen
рядовой
Сообщения: 38
Зарегистрирован: 2007-12-24 16:29:03

Re: pf + ftp-proxy

Непрочитанное сообщение osipen » 2008-01-16 10:42:12

На самом деле тут просто были грабли, с запуском ftp-proxy.

Начнем с начала!
Ставим ftp-proxy ( в дефолтной фре его нет )

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

# cd /usr/ports/ftp/ftp-proxy
# make install
Далее важный момент где я споткнулся.
Запускать надо не через Inetd почему не понятно.
В rc.conf добавляем:

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

# ee /etc/rc.conf
# Разрешаем запуск ftp-proxy
ftpproxy_enable="YES"
# Проксируем на ftp в моем случае это 192.168.0.250, ключ –R обязателен служит для перенаправления.
ftpproxy_flags="-R 192.168.0.250"
ну далее:

В pf.conf ничего сильно не изменилось, но все равно посмотрите.

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

# ee /etc/pf.conf

prov_if="rl0" # Внешняя сетевуха
int_if="fxp0" # Внутренняя сетевуха
ftp_server="192.168.0.250" # фтп сервер
internal_net="{192.168.0.0/24}" # локальная сеть
scrub in all

nat on $prov_if from $internal_net to any -> $prov_if

# Вот правила для проксиравания, но тут так заморочка мозги поразмять? вол линк кому интересно почитайте
# http://house.hcn-strela.ru/BSDCert/BSDA-course/apcs02.html#pf-ftp-modes
nat-anchor "ftp-proxy/*"
rdr-anchor "ftp-proxy/*"
rdr pass on $prov_if proto tcp from any to any port 21 -> 127.0.0.1 port 8021

# Если не хотите использовать ftp-proxy просто расскоментируйте и уберите выше стоящие правила, только не жалуйтесь потом что 
# ftp работает как то криво и медленно
# rdr on $prov_if proto tcp from any to any port ftp-data -> $ftp_server port 21
# rdr on $prov_if proto tcp from any to any port 21 -> $ftp_server port 21
# rdr on $prov_if proto tcp from any to any port 49152:65535 -> $ftp_server port 49152:65535

pass in all
pass out all

anchor "ftp-proxy/*"
В итоге действительно по сравнению с nat скорость даже визуально возврасла. :lol: