The OpenNET Project / Index page

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

Принудительное FTP-проксирование в FreeBSD и Linux (squid ftp proxy transparent)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: squid, ftp, proxy, transparent,  (найти похожие документы)
From: Дмитрий Новиков <dmn@nnz.ru> Newsgroups: http://www.artmagic.ru/labs/ Date: Mon, 4 Dec 2002 13:01:37 +0000 (UTC) Subject: Принудительное FTP-проксирование в FreeBSD и Linux Оригинал: http://www.artmagic.ru/labs/transparent-proxy-ftp.shtml Принудительное FTP-проксирование в FreeBSD и Linux Администраторы очень часто пользуются технологией принудительного проксирования - когда весь HTTP-трафик "разворачивается" на ПРОКСИ-сервер. Как это делается можно прочитать [8]здесь. Использование ПРОКСИ-сервера повышает уровень управляемости трафиком и позволяет разгружать канал за счет кеширования данных. Например с помощью ПРОКСИ-сервера можно запретить скачивать mp3 и mpeg файлы, что для корпоративной сети весьма актуально. Конечно после "постановки на учет" HTTP-трафика хочется также контролировать и FTP-трафик, тем более что по этому протоколу пересылаются большие файлы. Аналогично http-потокам, FTP-трафик не "развернуть" на ПРОКСИ-сервер. Однако существует специализированный сервер, который позволяет производить принудительное проксирование FTP-трафика и, что самое приятное, есть возможность использовать для доставки любой ПРОКСИ-сервер. Называется этот проект frox и работает для ОС Linux и FreeBSD. В нашей лаборатории мы успешно испытали этот сервер для OC Linux Slackware 8.1 и ОС FreeBSD 4.7 совместно с ПРОКСИ-сервером SQUID 2.5. Практическое решение: 1. Собираем пакет Для Linux frox был собран из исходников: - Скачиваем frox с сайта разработчика (http://sourceforge.net/projects/frox/) - Компилируем и инсталируем пакет ./configure --enable-http-cache --enable-local-cache --enable-virus-scan make make install (такая сборка активирует модуль локального кеширования, кеширования через ПРОКСИ-сервер и модуль проверки на вирусы) Для FreeBSD frox собирается аналогично или из системы портов: cd /usr/ports/ftp/frox make WITH_HTTP_CACHE=YES make install 2. Настраиваем конфигурационный файл пакета Конфигурационный файл пакета frox.conf по умолчанию располагается в каталоге (/usr/local/etc/). Он достаточно прост и содержит всего несколько ключевых параметров, а также снабжен подробными комментариями. Listen 10.128.1.1 - указываем IP интерфейс, на котором будет работать frox (как правило, интерфейс локальной сети). Port 2121 - номер порта, на котором frox принимает соединения #BindToDevice eth0 - только для Linux можно указать интерфейс, на котором будет работать frox # FromInetd yes - frox можно запускать из демона inetd В этом случае нужно добавить в /etc/inetd.conf: frox stream tcp nowait nobody /usr/local/sbin/frox frox и в /etc/services frox 2121/tcp нужно указать пользователя и группу, под которыми будет работать frox. это должен быть пользователь с минимальными превилегиями. User nobody Group nogroup WorkingDir /tmp/frox - указываем рабочий каталог программы. Важно дать права пользователю nobody на полный доступ к каталогу. (mkdir /tmp/frox; chown nobody /tmp/frox; chmod 700 /tmp/frox) LogLevel 20 - лучше указать 20 - для максимальной информативности LogFile /var/log/frox.log - лог-файл MaxForks 10 - максимальное число процессов frox (число одновременных FTP-соединений через frox). MaxForksPerHost 4 - максимальное количество соединений с одного IP. Другими словами, максимальное число одновременных сессий от одного пользователя. Действенный метод борьбы с разного рода "качалками" (типа reget), которые качают в кучу потомков (до 8) и "забивают" канал. CacheModule http - активизируем модуль, работающий через http ПРОКСИ-сервер HTTPProxy 10.128.7.11:3128 - указываем адрес ПРОКСИ-сервера и порт MinCacheSize 5 - указываем минимальый размер файла, который будет запрашиваться через ПРОКСИ-сервер (здесь поставлен размер 5кб, чтобы практически все файлы шли через ПРОКСИ) Указываем сети, которым можно пользоваться сервисом. ACL Allow 10.128.0.0/16 - * ACL Allow 10.5.0.0/16 - * Другие параметры и подробные комментарии можно изучить из документации и из комментариев в самом конфигурационном файле. 3. Настраиваем форвардинг FTP-пакетов на порт frox. - Для Linux (эту команду можно записать в /etc/rc.d/rc.local): iptables -A FORWARD -p tcp --dport 21 -j REDIRECT --to-port 2121 - Для FreeBSD (эту команду можно записать в /etc/rc.local): /sbin/ipfw add 100 fwd 10.128.1.1,2121 tcp from 10.128.0.0/16 to any 21 - важно не перепутать и не указать адрес 127.0.0.1,2121 - рабоатть не будет, потому что frox слушает другой адрес (10.128.1.1). 4. Настраиваем SQUID. Нужно дать права в ПРОКСИ-сервере на доступ frox. Самое замечательное, что тут же можно и ограничить доступ (например файлы mp3 и т.п.). Например, вот как можно ограничить закзачку подобных файлов и разрешить закачку всех остальных. squid.conf acl mp3 urlpath_regex -i \.mp3$ acl wav urlpath_regex -i \.wav$ acl avi urlpath_regex -i \.avi$ acl mpeg urlpath_regex -i \.mpeg$ acl froxserver src 10.128.1.1 http_access deny avi http_access deny wav http_access deny mp3 http_access deny mpeg http_allow froxserver 5. Запускаем правила файрволла, frox (/usr/local/sbin/frox или из inetd), squid. С небольшой долей вероятности все запустится и будет работать. Первое что нужно посмотреть - регистрирует ли frox FTP-сессии. >tail -f /var/log/frox.log Fri Jan 17 18:44:28 2003 frox[82826] Connect from 10.128.92.2 Fri Jan 17 18:44:28 2003 frox[82826] ... to 65.24.133.64(dhcp065-024-133-064.col umbus.rr.com) Если таких записей нет, то форвардинг на порт 2121 не работает. Нужно также посмотреть в лог-файл ПРОКСИ-сервера, скачивает ли он по запросу frox файлы: 1042580618.892 11022 10.128.1.1 TCP_MISS/200 7488 GET ftp://128.100.1.32/pub/mes/gifs/sev-zap.gif - DIRECT/128.100.1.32 image/gif Если таких записей нет, то frox не связывается с SQUID. В противном случае - все работает. Остается насладиться кешированными запросами к ФТП-серверам и запретами на скачивание музыки и фильмов. Примечания: Frox кеширует только анонимные заходы. С чем это связано нам неизвестно. Полезные ссылки: - Домашняя страница frox: http://www.hollo.org/frox/

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
 
  • 1.1, Dennis Yusupoff, 11:32, 21/03/2005 [ответить] [смотреть все]
  • +/
    >Frox кеширует только анонимные заходы. С чем это >связано нам неизвестно.
    Из конфига frox.conf:
    # CacheAll no   # Set to yes to cache non anonymous ftp downloads
     
  • 1.2, John_V, 14:19, 09/10/2007 [ответить] [смотреть все]
  • +/
    У меня проблема возникла, все настроил как написано, frox запросы получает, лог ведется, файлы с ftp-сервера качаются, но со сквидом связи нет! все работает и при включенном и при выключенном squid.

    Как это разрешить?

     
  • 1.3, John_V, 15:41, 09/10/2007 [ответить] [смотреть все]
  • +/
    После непродолжитекльного танца с бубнами все разрешилось, всем спасибо.

    Только вот так все равно не удобно, ибо в логах не видно с какого IP ходили на ftp. естественно везде адрес сервера... млин

     
  • 1.4, RandoMan, 16:33, 16/04/2008 [ответить] [смотреть все]
  • +/
    Если сделать все, как в этой статье, можно остаться в заблуждении. Если frox видит 403 ответ от squid, он упорно ломится напрямую, и все-таки скачает файл.
     
  • 1.5, Laminor10, 13:33, 22/09/2011 [ответить] [смотреть все]
  • +/
    Всем доброго дня.
    Не получается настроить frox - хочу установить на ноутбук и в связке со сквидом работать на своем стационаре...
    Помогите пожалуйста с настройкой Frox - ОС Xubuntu
    Устанавливаю Frox - sudo apt-get install frox, захожу в настройки frox.conf, устанавливаю IP 192.168.0.5(нотика на котором и стоит сам frox...) (у стационара установил 192.168.0.3), далее порт, права, все по выше написанной инструкции, далее делаю как написади на офф. сайте, ввожу в терминал под рутом ''echo 1 >> /proc/sys/net/ipv4/ip_forward''но как только доходит дело до iptables (нужно ввести ''iptables -t nat -A PREROUTING -p tcp -s LOCALNET --dport 21 -j REDIRECT --to 2121'') то выдается ошибка iptables v1.4.10: host/network 'LOCALNET' not found
    Try 'iptables -h' or 'iptables --help' for more information. помогите пожалуйста.
    Спасибо.
     
     
  • 2.6, Igor, 08:31, 02/02/2012 [^] [ответить] [смотреть все]  
  • +/
    iptables -t nat -A PREROUTING -p tcp -s LOCALNET --dport 21 -j REDIRECT --to 2121
    iptables -t nat -A PREROUTING -p tcp -s $LOCALNET --dport 21 -j REDIRECT --to 2121
    , где макрос LOCALNET - твоя сеть или IP твоего ноутбука
     
  • 1.7, Laminor10, 11:13, 31/03/2012 [ответить] [смотреть все]  
  • +/
    Igor, СПАСИБО тебе ОГРОМНОЕ!.
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:





      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor