6 апреля 2011 г.

Раздаем интернет в офисе или 3proxy Часть первая "Инсталляция"

Задача:
В офис заходит витая пара с 2мбит'ным инетом. Необходимо его раздать на 10 машин. Так же хочется иметь возможность считать трафик по пользователям, устанавливать им лимиты, ограничивать скорость, трафик, запрещать некоторые сайты. Все компьютеры объединены в локальную сеть. Есть сервер с двумя сетевыми картами.
Все это можно сделать разрешив использовать подключение к интернету для всех (расшарить подключение по локальной сети которое идет к провайдеру). Делается это следующим образом в WinXP выбираем Пуск-Сетевое окружение. В правой части окна нажимаем Отобразить сетевые подключения. Выбираем подключение, которое идет к провайдеру и нажимаем на нем правую клавишу мыши - Свойства. Переходим на закладку Дополнительно и отмечаем галочкой пункт Разрешить другим пользователям сети использовать подключение к Интернету данного компьютера. Все.
Из минусов - интернет мы конечно всем дали, но вот о никаком контроле и ограничении пользователей речи быть не может.
Чтобы получить все плюшки, необходим прокси-сервер. Их существует великое множество (Squid, UserGate, CCProxy, 3Proxy). Все без проблем находятся поисковиком. Рассмотрим их немножко поподробнее:
Squid - проект с открытыми исходниками, и бесплатный. Имеет версии под Windows и Linux. Позволяет очень гибко контролировать и управлять каналом в интернет. Из минусов - сложен в настройке,  как и большинство программ портированных с Linux. Все делается через конфигурационные файлы и об интерфейсе вам придется тут забыть. Все ручками.

UserGate - уже платное решение, но с удобным интерфейсом и не менее богатыми настройками чем вышеописанный прокси. Я не стал его даже устанавливать по той лишь причине что планируется перевод сервера на Linux и нет желания разбираться потом в другой программе и платить за него, зная что потом снесу тоже не хочется.

CCProxy - идеальное решение, если вы не имеете опыта администрирования и настройки прокси. Все удобно и понятно, но возможностей мало, бесплатен только если им пользуется менее 10 клиентов и работает только под Windows

3proxy - это то что нужно!!! Маленький (несколько килобайт), кросплатформенный, позволяет гибко управлять каналом, бесплатный, открыты исходники. Из минусов нет графического интерфейса для настройки, но это компенсируется тем, что все настройки делаются в одном файле, причем очень логично и не запутанно как в том же SQUID.  Автор из России и с удовольствием помогает в официальном форуме программы.
Выбор очевиден.

Под сервер взят старенький комп в Windows XP. Решение не самое лучшее, но пока пойдет.
Итак:
  1. Идем на сайт http://www.3proxy.ru и скачиваем последнюю версию. Так же советую прочитать How-To(На русском) на сайте программы и многие вопросы отпадут сами собой.
  2. Распаковываем скачанный архив в каталог например c:\3proxy
  3. Создаем в каталоге файл c:\3proxy\3proxy.cfg. Это файл конфигурации прокси. Теперь настроить наш прокси-сервер. 
Открываем файл в блокноте и пишем следующие строчки:
monitor "с:\3proxy\bin\3proxy.cfg"
Это чтобы в будущем изменения в настройках применялись сразу после сохранения файла конфигурации

internal 192.168.0.1
external 82.209.xx.xx

где после internal идет ip сервера в локальной сети, а после external ip выданный провайдером.
 Теперь укажем DNS сервера. Я использую сервера, которые бесплатно предоставляет Google. Вы можете использовать их же или указать сервера своего провайдера, тогда придется заменить 8.8.8.8 на первичный DNS сервер провайдера, а 8.8.4.4 на вторичный соответственно
nserver 8.8.8.8
nserver 8.8.4.4



укажем размер DNS кэша
nscache 1152000
и разрешим кэширование DNS
dnspr

Чтобы иметь статистику по пользователям скажем серверу чтобы вел логи по дням и хранил только последние 30 шт. Чтобы было проще потом их анализировать укажем формат записи логов такой же как использует прокси-сервер SQUID. Это даст нам возможность использовать любой лог-анализатор, который работает с squid
logformat "L%C - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" %E %I %O %N/%R:%r"
log С:\3proxy\logs\3proxy.log D
rotate 30


Теперь об авторизации на прокси. 3Proxy позволяет авторизовать клиентов по ip, логину/паролю или через Домен Windows (только для сервера на Windows). Мы будем использовать первый вариант.
allow * 192.168.0.1
allow * 192.168.0.10
allow * 192.168.0.11
allow * 192.168.0.12

deny *

Вместо ip указываем ip своих машин которым нужен интернет и последней строчкой запрещаем интерет всем, кто не прошел авторизацию.

Если вы хотите ограничить объем потребляемого трафика и иметь on-line статистику по количеству потребляемого трафика клиентами, то добавим следующие строчки:
counter "С:\3proxy\3proxy.3cf" D "С:\3proxy\traf\traf"
здесь мы создаем счетчики
countin "1/Server" M 50000 * 192.168.0.1 * * *
countin "2/User" M 900000 * 192.168.0.10 * * *
countin "3/User2" M 900000 * 192.168.0.11 * * *
countin "4/User3" M 900000 * 192.168.0.12 * * *

и устанавливаем лимиты пользователям, где М - это мегабайты, а цифры - собственно предел. Если просто хотите знать сколько клиеенты потребляют трафика, но не ограничивать его лимит, то укажите такой лимит, который они не выкачают.

Указываем что мы используем авторизацию по ip

auth iponly
и запускаем прокси на порту 3128
proxy -p3128 -n -t
Почти все. Еще немного и будем проверять, но прежде еще укажем настройки админки
admin -p8080
Запускаем админку на порту 8080. Я сознательно пропускаю авторизацию для админки, сейчас в нее может попасть любой. После того как настройка будет закончена и все заработает позаботьтесь об авторизации сами или удалите вообще эти строки.
Сохраняемся и закрываем файл.
       4. Открываем командную строку. Пуск-Выполнить пишем cmd и Ок.
       5. С трепетом в душе запускаем наш прокси командой.
c:\3proxy\3proxy.exe c:\3proxy\3proxy.cfg
Если вы сделали что-то неправильно в конфигурационном файле, то программа вам сообщит ошибку и номер строки.
       6. Запускаем браузер и в его настройках устанавливаем галочку использовать прокси-сервер и указываем ip и порт. По моим конфигам это 192.168.0.1 и 3128 соответственно. Если вы что-то меняли, то подставьте свое.
       7. Проверяем работу сервера пробуя перейти на любой сайт. сли сайт открылся все ок.
       8. Идем в папку c:\3proxy\log  и смотрим лог файл. Там должны появится записи о посещении нами веб сайта.
Перейдя по адресу http://192.168.0.1:8080 мы попадаем в админку, в которой можно посмотреть счетчики трафика, содержимое конфига и запущенные службы.

       9. Если все работает устанавливаем 3proxy как сервис Windows и забываем про него. Для этого в командной строке пишем:
C:\3proxy\3proxy.exe --install
       10. Перезагружаем компьютер и идем настраивать браузеры клиентов.

В следующих частях я научу вас ограничивать скорость пользователям, мы запустим SOKS5 сервер, научимся пользоваться портмапингом, почтой за проксей, поднием ftp прокси и установим анализатор логов.

2 комментария:

  1. Здравтсвуйте. Ваша статья замечательная, вот сделал по ней свою блокировку нежелательных сайтов - но не работает.Вот мой конфиг. под скажите что я сделал не верно
    service
    proxy -p3128 -i192.168.10.2
    internal 192.168.10.2
    external 192168.1.4
    nserver 94.255.29.30
    nserver 94.255.29.122
    monitor "c:\3proxy\bin\3proxy.cfg"
    monitor "c:\3proxy\IP_list.txt"
    monitor "c:\3proxy\ban.txt"
    nscache 65536
    logformat "L%C - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" %E %I %O %N/%R:%r"
    log c:\3proxy\logs\3proxy.log D
    rotate 30
    #archiver "c:\Program Files\WinRAR\rar.exe" rar a -df -inul %A %F
    nobandlimin * * * 110
    bandlimin 48000 * 192.168.1.4,192.168.10.3
    #bandlimin 48000 * 192.168.0.4
    bandlimout 24000 *
    auth iponly
    #deny * 192.168.200.4 * 110 * 1-5 18:00:00-23:59:59,00:00:00-08:00:00
    #allow * 192.168.200.4 * * * 1-5 09:00:00-18:00:00
    #deny * * *porno*,*pornosok*
    allow * $"c:\3proxy\IP_list.txt"
    deny * * $"C:\3proxy\ban.txt"
    #allow * 192.168.1.4,192.168.10.3 * 80 * 1-7 00:00:00-23:59:59
    #proxy -p3128 -i192.168.10.2
    #proxy -a -t

    ОтветитьУдалить
  2. Попробуй так:
    allow * $"D:\3proxy\bin\admin.txt" * * * 1-7 00:00:00-23:59:59
    deny * * $"D:\3proxy\bin\ban.txt"
    allow * $"D:\3proxy\bin\user.txt" * * * 1-7 00:00:00-23:59:59
    deny *

    В user.txt ip тех, на кого распространяются правила бана

    ОтветитьУдалить