The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"PF и пассивный ftp внутри сети"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"PF и пассивный ftp внутри сети"  
Сообщение от dark_stealth email on 01-Мрт-07, 05:07 
Задача простая- расшарить ресурсы фтп из серой сети.
В принципе все просто- делаем редирект при помощи ipnat/pf nat/natd и идем дальше.
Быстро и просто - это natd- две строки в конфиге, но ресурсы... Посему пользуем PF nat.
# cat /etc/pf.conf
ext_if = " re0 " #и-фейс наружу
int_if = " fxp0 "#и-фейс внутрь
ext_if_IP = " 123.123.123.123 " #основной IP сервера
ext_if_IP2 = " 123.123.123.124 "#IP на который делаем редирект
allow_net = " 123.123.123.0/24 " #сеть из которой можно подключаться к нашим сервисам
web2server = " 172.17.16.15"     #IP сервера в серой сети с сервисами для расшаривания  
service = "{ http, https, ssh }" # сервисы для расшаривания  
ftp2ports = "{ ftp, ftp-data }" # сервисы для расшаривания  
ftp_ext_ports = "{ 30000:30500 }"# дополнительный диапазон портов разрешенный для ftp

rdr on $ext_if proto tcp from $allow_net to $ext_if_IP2 port $ftp2ports -> $web2server
rdr on $ext_if proto tcp from $allow_net to $ext_if_IP2 port $ftp_ext_ports -> $web2server
rdr on $ext_if proto tcp from $allow_net to $ext_if_IP2 port $service -> $web2server

pass in quick on $ext_if proto tcp from $allow_net to $ext_if_IP2 port $ftp2ports keep state
pass in quick on $ext_if proto tcp from $allow_net to $ext_if_IP2 port $ftp_ext_ports keep state
pass in quick on $ext_if proto tcp from $allow_net to $ext_if_IP2 port $service flags S/SA synproxy state

после запуска видим :
# pfctl -sa
TRANSLATION RULES:
rdr on re0 inet proto tcp from 123.123.123.0/24 to 123.123.123.124 port = ftp -> 172.17.16.15
rdr on re0 inet proto tcp from 123.123.123.0/24 to 123.123.123.124 port = ftp-data -> 172.17.16.15
rdr on re0 inet proto tcp from 123.123.123.0/24 to 123.123.123.124 port 30000:30500 -> 172.17.16.15
rdr on re0 inet proto tcp from 123.123.123.0/24 to 123.123.123.124 port = http -> 172.17.16.15
rdr on re0 inet proto tcp from 123.123.123.0/24 to 123.123.123.124 port = https -> 172.17.16.15
rdr on re0 inet proto tcp from 123.123.123.0/24 to 123.123.123.124 port = ssh -> 172.17.16.15

FILTER RULES:
pass in quick on re0 inet proto tcp from 123.123.123.0/24 to 123.123.123.124 port = ftp keep state
pass in quick on re0 inet proto tcp from 123.123.123.0/24 to 123.123.123.124 port = ftp-data keep state
pass in quick on re0 inet proto tcp from 123.123.123.0/24 to 123.123.123.124 port 30000:30500 keep state
pass in quick on re0 inet proto tcp from 123.123.123.0/24 to 123.123.123.124 port = http flags S/SA synproxy state
pass in quick on re0 inet proto tcp from 123.123.123.0/24 to 123.123.123.124 port = https flags S/SA synproxy state
pass in quick on re0 inet proto tcp from 123.123.123.0/24 to 123.123.123.124 port = ssh flags S/SA synproxy state

Все работает! Кроме всего разрешен доступ к ssh http и работает прекрасно.
Но добраться до ресурсов ftp никак- все попытки замерзают на стадии запроса листинга.
Допустим конектимся с удаленной машины 123.123.123.127, используя Minight Commander
# pfctl -sa
STATES:
self tcp 172.17.16.15:21 <-123.123.123.124:21 <- 123.123.123.127:52552       ESTABLISHED:ESTABLISHED
self tcp 172.17.16.15:21 <- 123.123.123.124:21 <- 123.123.123.127:52221       TIME_WAIT:TIME_WAIT
И так до таймаута...

Но в тоже время при попытке подключиться из шелла с той же машины все проходит нормально
# pfctl -sa
STATES:
self tcp 172.17.16.15:30431 <- 123.123.123.124:30431 <- 123.123.123.127:60293       FIN_WAIT_2:FIN_WAIT_2
self tcp 172.17.16.15:21 <- 123.123.123.124:21 <- 123.123.123.127:52221       ESTABLISHED:ESTABLISHED
листинг получен, файлы качаются

Аналогичная ситуация при подключении с любыйх виндовых клиентов... кроме браузера Опера- здесь все проходит на ура (листинг, скачка все работает), в то время когда CuteFTP отваливается по таймауту не дождавшись списка файлов.
На роутере и на фтп сервере стоит FreeBSD 5.4, сервер фтп- vsftpd: version 2.0.3 работает в пассивном режиме используя дополнительно дипазон портов 30000-30500. Внутри сети все работает на ура.
Где я не прав... ткните носом, а? ;(

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

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


1. "PF и пассивный ftp внутри сети"  
Сообщение от dark_stealth email on 01-Мрт-07, 08:55 
Вывод tcpdump'a
# tcpdump -i re0 host 123.123.123.124
listening on re0, link-type EN10MB (Ethernet), capture size 96 bytes
12:49:53.271118 IP 123.123.123.127.49380 > 172.17.16.15.ftp: P 226644911:226644919(8) ack 4159887268 win 32942 <nop,nop,timestamp 8497417 22561448>
12:49:53.272219 IP 172.17.16.15.ftp > 123.123.123.127.49380: . ack 8 win 32940 <nop,nop,timestamp 22564884 8497417>
12:49:53.272243 IP 172.17.16.15.ftp > 123.123.123.127.49380: P 1:38(37) ack 8 win 32942 <nop,nop,timestamp 22564884 8497417>
12:49:53.273116 IP 123.123.123.127.49380 > 172.17.16.15.ftp: P 8:36(28) ack 38 win 32942 <nop,nop,timestamp 8497418 22564884>
12:49:53.274217 IP 172.17.16.15.ftp > 123.123.123.127.49380: . ack 36 win 32935 <nop,nop,timestamp 22564884 8497418>
12:49:53.274241 IP 172.17.16.15.ftp > 123.123.123.127.49380: P 38:89(51) ack 36 win 32942 <nop,nop,timestamp 22564884 8497418>
12:49:53.275117 IP 123.123.123.127.49380 > 172.17.16.15.ftp: P 36:46(10) ack 89 win 32942 <nop,nop,timestamp 8497418 22564884>
12:49:53.276216 IP 172.17.16.15.ftp > 123.123.123.127.49380: . ack 46 win 32939 <nop,nop,timestamp 22564884 8497418>
Все есть, а работать не работает редирет как надо.... или парадокс, или /dev/hand прямить надо срочно
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "PF и пассивный ftp внутри сети"  
Сообщение от niksonnnn email(??) on 01-Мрт-07, 12:38 
>Вывод tcpdump'a
># tcpdump -i re0 host 123.123.123.124
>listening on re0, link-type EN10MB (Ethernet), capture size 96 bytes
>12:49:53.271118 IP 123.123.123.127.49380 > 172.17.16.15.ftp: P 226644911:226644919(8) ack 4159887268 win 32942 <nop,nop,timestamp 8497417 22561448>
>12:49:53.272219 IP 172.17.16.15.ftp > 123.123.123.127.49380: . ack 8 win 32940 <nop,nop,timestamp 22564884 8497417>
>12:49:53.272243 IP 172.17.16.15.ftp > 123.123.123.127.49380: P 1:38(37) ack 8 win 32942 <nop,nop,timestamp 22564884 8497417>
>12:49:53.273116 IP 123.123.123.127.49380 > 172.17.16.15.ftp: P 8:36(28) ack 38 win 32942 <nop,nop,timestamp 8497418 22564884>
>12:49:53.274217 IP 172.17.16.15.ftp > 123.123.123.127.49380: . ack 36 win 32935 <nop,nop,timestamp 22564884 8497418>
>12:49:53.274241 IP 172.17.16.15.ftp > 123.123.123.127.49380: P 38:89(51) ack 36 win 32942 <nop,nop,timestamp 22564884 8497418>
>12:49:53.275117 IP 123.123.123.127.49380 > 172.17.16.15.ftp: P 36:46(10) ack 89 win 32942 <nop,nop,timestamp 8497418 22564884>
>12:49:53.276216 IP 172.17.16.15.ftp > 123.123.123.127.49380: . ack 46 win 32939 <nop,nop,timestamp 22564884 8497418>
>Все есть, а работать не работает редирет как надо.... или парадокс, или
>/dev/hand прямить надо срочно


также не удалось настроить редирект..... все молчат, либо говорят что руки кривые.... ИМХО что-то не так в настройках или с pf, иначе просто нет вариантов.
Правда у меня случай другой совсем...... Прошу прощение за флуд, цель поста сказать что редирект в pf реализован через анус (говорю так потомучто сам лоб разбил об rdr правила).
Еще раз sorry.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "PF и пассивный ftp внутри сети"  
Сообщение от dark_stealth email on 01-Мрт-07, 13:18 
>также не удалось настроить редирект..... все молчат, либо говорят что руки кривые....
>ИМХО что-то не так в настройках или с pf, иначе просто
>нет вариантов.
>Правда у меня случай другой совсем...... Прошу прощение за флуд, цель поста
>сказать что редирект в pf реализован через анус (говорю так потомучто
>сам лоб разбил об rdr правила).
>Еще раз sorry.

Нет, не согласен с редиректом у PF весьма не плохо и диапазон портов поставить без проблем и   поддержка keep state в rdr правиле по умолчанию... и т.п. Если честно, больший гемморой вызвало настройка того же редиректа в ipnat'e . Тут дело именно в методах поведения пассивного и активного ftp как класса. Собственно и приходится иметь секс именно с этим, все остальное редиректится как по маслу.

Lavr, ,батенька помогите, не дайте... разбить голову об очевидное ;)  

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "PF и пассивный ftp внутри сети"  
Сообщение от niksonnnn email(??) on 01-Мрт-07, 13:53 
>>также не удалось настроить редирект..... все молчат, либо говорят что руки кривые....
>>ИМХО что-то не так в настройках или с pf, иначе просто
>>нет вариантов.
>>Правда у меня случай другой совсем...... Прошу прощение за флуд, цель поста
>>сказать что редирект в pf реализован через анус (говорю так потомучто
>>сам лоб разбил об rdr правила).
>>Еще раз sorry.
>
>Нет, не согласен с редиректом у PF весьма не плохо и диапазон
>портов поставить без проблем и   поддержка keep state в
>rdr правиле по умолчанию... и т.п. Если честно, больший гемморой вызвало
>настройка того же редиректа в ipnat'e . Тут дело именно в
>методах поведения пассивного и активного ftp как класса. Собственно и приходится
>иметь секс именно с этим, все остальное редиректится как по маслу.
>
>
>Lavr, ,батенька помогите, не дайте... разбить голову об очевидное ;)

вот пример, который мусолится уже долгое время....
Нужно чтобы пакеты приходящие на внешний адрес по порту 3389 перекидывались на внутренний адрес с портом 3389....

пишу rdr on $ext_if proto tcp from any to $ext_if port 3389 -> $local_serv port 3389

неработает... в чём грабли??? добавление слова pass ничего не дало....

правильно или нет..... ??? пока работает с rinetd , но хоцца чтобы с pf.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "PF и пассивный ftp внутри сети"  
Сообщение от dark_stealth email on 02-Мрт-07, 06:51 
>вот пример, который мусолится уже долгое время....
>Нужно чтобы пакеты приходящие на внешний адрес по порту 3389 перекидывались на
>внутренний адрес с портом 3389....
>
>пишу rdr on $ext_if proto tcp from any to $ext_if port 3389 -> $local_serv port 3389
>
>неработает... в чём грабли??? добавление слова pass ничего не дало....
>
>правильно или нет..... ??? пока работает с rinetd , но хоцца чтобы
>с pf.

Вот гадство... действительно не работает... нонсенс!
Спецы PF  где вы ? уже двое разбивают лоб об очевидное, но невероятное....

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "PF и пассивный ftp внутри сети"  
Сообщение от niksonnnn (??) on 02-Мрт-07, 09:45 
>>вот пример, который мусолится уже долгое время....
>>Нужно чтобы пакеты приходящие на внешний адрес по порту 3389 перекидывались на
>>внутренний адрес с портом 3389....
>>
>>пишу rdr on $ext_if proto tcp from any to $ext_if port 3389 -> $local_serv port 3389
>>
>>неработает... в чём грабли??? добавление слова pass ничего не дало....
>>
>>правильно или нет..... ??? пока работает с rinetd , но хоцца чтобы
>>с pf.
>
>Вот гадство... действительно не работает... нонсенс!
>Спецы PF  где вы ? уже двое разбивают лоб об очевидное,
>но невероятное....

А что вы пробовали сделать?
Я немного начал сомневться в своих действиях...., но сяс немного отлегло.
Тема мусолилась на форуме и раньше, однако дело не пошло дальше просто советов которые НЕ РАБОТАЮТ.
Предлагаю всем разобраться с данной проблемой, ведь случай далеко не эктраординарный.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "PF и пассивный ftp внутри сети"  
Сообщение от RSG (??) on 03-Мрт-07, 10:47 
>вот пример, который мусолится уже долгое время....
>Нужно чтобы пакеты приходящие на внешний адрес по порту 3389 перекидывались на
>внутренний адрес с портом 3389....
>
>пишу rdr on $ext_if proto tcp from any to $ext_if port 3389 -> $local_serv port 3389
>
>неработает... в чём грабли??? добавление слова pass ничего не дало....
>
>правильно или нет..... ??? пока работает с rinetd , но хоцца чтобы
>с pf.


Не понятно что скрывается за $ext_if и $local_serv.
У меня работает

rdr on rl1 proto tcp from any  to w.x.y.z port 3389 -> 192.168.0.5

$pfctl -sn
rdr on rl1 inet proto tcp from any to w.x.y.z port = rdp -> 192.168.0.5

Естественно, что отрабатываться будут тольоко те пакеты которые из внешней сети, вошедшие в rl1.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "PF и пассивный ftp внутри сети"  
Сообщение от niksonnnn email(??) on 03-Мрт-07, 13:55 
>>вот пример, который мусолится уже долгое время....
>>Нужно чтобы пакеты приходящие на внешний адрес по порту 3389 перекидывались на
>>внутренний адрес с портом 3389....
>>
>>пишу rdr on $ext_if proto tcp from any to $ext_if port 3389 -> $local_serv port 3389
>>
>>неработает... в чём грабли??? добавление слова pass ничего не дало....
>>
>>правильно или нет..... ??? пока работает с rinetd , но хоцца чтобы
>>с pf.
>
>
>Не понятно что скрывается за $ext_if и $local_serv.
>У меня работает
>
>rdr on rl1 proto tcp from any  to w.x.y.z port 3389 -> 192.168.0.5
>
>$pfctl -sn
>rdr on rl1 inet proto tcp from any to w.x.y.z port = rdp -> 192.168.0.5
>
>Естественно, что отрабатываться будут тольоко те пакеты которые из внешней сети, вошедшие
>в rl1.

$ext_if= внешний интерфейс $local_serv=внутренний сервер....

НЕРАБОТАЕТ....


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "PF и пассивный ftp внутри сети"  
Сообщение от RSG (??) on 05-Мрт-07, 09:51 
>>
>>Не понятно что скрывается за $ext_if и $local_serv.
>>У меня работает
>>
>>rdr on rl1 proto tcp from any  to w.x.y.z port 3389 -> 192.168.0.5
>>Естественно, что отрабатываться будут тольоко те пакеты которые из внешней сети, вошедшие
>>в rl1.
>
>$ext_if= внешний интерфейс $local_serv=внутренний сервер....
>
>НЕРАБОТАЕТ....

tcpdump на $ext_if и на внутреннем_if.  
Идет ли замена dst_ip в заголовке?
Доходят ли пакеты до $local_serv?
Уходят или SYN/ACK ответы для поднятия TCP?
tcpdump на $ext_if и на внутреннем_if на наличие ответов от $local_serv.
За тем же ли адресом происходит nat внутреннего ресурса, что и на $ext_if?
Проходит ли установка TCP соединения?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "PF и пассивный ftp внутри сети"  
Сообщение от bakake email on 05-Мрт-07, 10:28 
>Задача простая- расшарить ресурсы фтп из серой сети.
>В принципе все просто- делаем редирект при помощи ipnat/pf nat/natd и идем
>дальше.

При пассивном ftp за dnat'ом, во время соединения сервер "просит" клиента соединить с ним по заданному ip и порту. Если ничего специально не настраивать то сервер выдаст клиенту свой реальный (в вашем случае серый) адрес и порт. Клиент естественно долго пытается ткнуться снаружи по серому адресу и отваливается по таймауту. Для того чтоб обмануть, в proftpd используется директва MasqueradeAddress в которой указывается IP к которому должен лезть клиент при пассивном соединении. Как это делается в vsftpd я не знаю

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "PF и пассивный ftp внутри сети"  
Сообщение от dark_stealth email on 05-Мрт-07, 10:58 
>При пассивном ftp за dnat'ом, во время соединения сервер "просит" клиента соединить
>с ним по заданному ip и порту. Если ничего специально не
>настраивать то сервер выдаст клиенту свой реальный (в вашем случае серый)
>адрес и порт. Клиент естественно долго пытается ткнуться снаружи по серому
>адресу и отваливается по таймауту. Для того чтоб обмануть, в proftpd
>используется директва MasqueradeAddress в которой указывается IP к которому должен лезть
>клиент при пассивном соединении. Как это делается в vsftpd я не
>знаю

в vsftpd за это отвечает строчка pasv_address. И это действительно работает ! Спасибо, вот уж решение действительно лежало на самом видном месте
Теперь осталось разобраться с доступом по rdp и можно радоваться жизни ;)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




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

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