Решил поделиться с общественностью установкой и настройкой прокси сервера 3Proxy в среде FreeBSD.
Будем ставить из портов:
- Обновляем порты:
# portsnap fetch update
- Устанавливаем 3Proxy
# cd /usr/ports/net/3proxy && make install clean
- Разрешаем запуск:
# echo "threeproxy_enable="YES"" >> /etc/rc.conf
- Правим конфигурационный файл:
# vi /usr/local/etc/3proxy.cfg
До следующего вида:
daemon nscache 65536 # DNS Servers nserver 8.8.8.8 nserver 8.8.4.4 timeouts 1 5 30 60 180 1800 15 60 # Директория под логи (создаст сам) log /var/log/3proxy/log D rotate 60 # Включаем авторизацию auth strong # Описываем пользователей (Имя:ТИП:Пароль) users user1:CL:password1 users user2:CL:password2 # Какие порты обслуживаем allow * * * 80 HTTP allow * * * 443 HTTPS # Запрещаем остальные порты deny * # Либо разрешаем все # allow * # Описываем наши сетевые интерфейсы, # если интерфейс один, один IP в ext. и int (или можно не указывать). external 222.222.222.222 internal 222.222.222.222 # Количество соединений maxconn 150 # SOCKS5 сервер на 43434 порту socks -p43434 # HTTP Proxy-server на 8989 порту proxy -n -p8989 setgid 65534 setuid 65534
- Запускаем сервер:
# /usr/local/etc/rc.d/3proxy start Starting threeproxy.
- Проверим:
# /usr/local/etc/rc.d/3proxy statusthreeproxy is running as pid 44333.
В конфигурационном файле мы создали двух пользователей:
user1 с паролем password1 и user2 с паролем password2, тип пароля CL — чистым текстом, что не очень красиво, но можно задать пароль в формате crypt().
Для этого создадим пароль немного присолив:
# openssl passwd -1 -salt free password3 $1$free$J5rNKlRJ0ZqIsQxJWdhYb/
В конфигурационном файле создадим нового пользователя user3 (запись заключаем в кавычки из-за попадающихся в пароле символов: $, /):
users "user3:CR:$1$free$J5rNKlRJ0ZqIsQxJWdhYb/"
Рестартуем наш 3Proxy:
# /usr/local/etc/rc.d/3proxy restart
Пользователей можно вообще исключить из конфигурационного файла, сделать отдельный подключаемый файл с пользователями, для этого в конфигурационном файле делаем подключение файла пользователей:
users $/usr/local/etc/3proxy/passwd
Создаем директорию для файла пользователей:
mkdir /usr/local/etc/3proxy/
В файле /usr/local/etc/3proxy/passwd перечислим пользователей:
user1:CL:password1 user2:CL:password2 user3:CR:$1$free$J5rNKlRJ0ZqIsQxJWdhYb/
Рестартуем 3Proxy:
# /usr/local/etc/rc.d/3proxy restart
На этом все:)
У вас указана команда flush перед командами proxy и socks, а команда flush сбрасывает все ACL’и. Это означает, что у вас proxy и socks будут запущены без каких-либо ограничений вообще, т.е. доступны будут любые порты и адреса. Проверьте.
Спасибо за комментарий, но это не так.
Я на практике проверил.
Причем долго не мог понять в чем дело.
Делал по вашему примеру:
При этом ограничения по 995 и 465 не работали.
Как только убрал flush — все стало работать.
Как посмотрел другие примеры + почитал документацию (хотя она крайне плохая, практически никакая) — подумал, что все логично
У вас есть какое-то иное объяснение для этого?
Я провел много тестов, чтобы убедиться, что ограничения в одном случае работают, а в другом нет. Комбинаторно перебрал кучу вариантов (т.е. менял IP, когда работали, и проверял разные комбинации; и так же, когда не работало).
Тут беда с форматированием, не знаю как написать — он все enter съедает.
В общем, написал везде, где перевод строки. Как седлать нормально — не знаю
Максим, а вы правы!
Действительно flush сбрасывает разрешающие-запрещающие правила.
У меня не было задачи ограничивать по портам, по этому не обратил внимание, что не работает ограничение с указанием портов
Для какой цели вы там используете flush перед proxy и socks? Т.е. какую функцию он несете, как вы считаете? (Зачем он нужен именно там)
Сброс существующего списка доступа, хз как оно сюда попало
пытаюсь настроить прокси, http работает нормально, socks не хочет :(
в чем может быть проблема?