Установка 3proxy с поддержкой http(s) и socks5-proxy на FreeBSD


Некоторые люди хотят установить у себя на сервере proxy-сервер. Squid который также описан в wiki потребляет много ресурсов, да и сложнее в настройке. Поэтому рассмотрим установку простого и легкого сервера с поддержкой протоколов http и socks. Ни в коем случае не устанавливайте сервер без авторизации, т.к. этим незамедлительно воспользуются злоумышленники и создадут большой трафик и рассылку спама через сервер.

Итак, далее краткое описание установки и настройки.

Установка производится на системе FreeBSD из портов:
# cd /usr/ports/net/3proxy/
# make install clean

Создайте файл конфигурации на основе файла-образца:
# cp /usr/local/etc/3proxy.cfg.sample /usr/local/etc/3proxy.cfg

Создайте директорию под лог-файлы
# mkdir /var/log/3proxy

Отредактируйте его
# vi /usr/local/etc/3proxy.cfg


Пример файла конфигурации 3proxy.cfg, который должен у вас получиться после его редактирования:
# Пропишите правильные серверы имен посмотрев их на своем VDS в /etc/resolv.conf
#

nserver 82.146.40.4
nserver 82.146.40.6

# Оставьте размер кэша для запросов DNS по умолчанию
#

nscache 65536

# Равно как и таймауты
#

timeouts 1 5 30 60 180 1800 15 60

# Если несколько IP на одном сервере, указываем тот, через который ходить во внешний мир
# Иначе эту строку игнорируем
external 192.168.1.1

# Тоже самое, только указываем IP, который надо слушать
# Если проигнорировать, то прокся слушает все адреса на сервере
internal 192.168.0.1

# Создайте пользователей proxyuser1 и proxyuser2, пароль простым текстом
#

users proxyuser1:CL:password1
users proxyuser2:CL:password2

# укажите режим запуска как deamon
#

daemon

# путь к логам и формат лога, к имени лога будет добавляться дата создания
#

log /var/log/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"

# сжимать логи при помощи gzip
#

archiver gz /usr/bin/gzip %F

# и хранить их 30 дней
#

rotate 30


# Конфигурация http(s) proxy
#
# включаем авторизацию по логинам и паролям
#

auth strong

# ограничим доступ по портам через http(s)-proxy
#

allow * * * 80-88,8080-8088 HTTP
allow * * * 443,8443 HTTPS

# запускаем http-proxy без поддержки ntlm-авторизации
#

proxy -n


# Конфигурация socks5-proxy
#
# включаем авторизацию по логинам и паролям
#

auth strong

# очищаем список access-листов которые остались от http-proxy
#

flush

# ставим ограничение на 32 одновременных подключения
#

maxconn 32

# запускаем socks
#

socks

Ограничьте права доступа к файлу только пользователю root (поскольку в файле хранятся пароли доступа, для безопасности)
# chmod 600 /usr/local/etc/3proxy.cfg

Добавьте 3proxy в автозапуск:
echo 'threeproxy_enable="YES"' >> /etc/rc.conf

И запустите его:
# /usr/local/etc/rc.d/3proxy start

Настройка закончена. На порту 3128 теперь у вас работает http-proxy, на порту 1080 socks-proxy


Исправление некоторых проблем.
Проблема 1.

Из-за кеширования доменных имён есть вероятность, что ваш новый домен, лично для вас будет недоступен.
Проблема 2.

Ваш прокси-сервер, с дефолтными портами, рано или поздно найдут. И ваши логи, в которых отражаются все соединения, и если вы их ведёте, станут занимать всё больше места. Решений 3.
Поменять порты. Но найти всё равно могут.
proxy -n -p7834 # на http proxy слушать порт 7834
socks -p7835 # на socks слушать порт 7835
Не вести логи.
В фаерволе разрешить доступ с определённых адресов, остальным запретить. Довольно негибкое, но железное решение.

Обновлено: 12.03.2015