Внезапно (с чего бы вдруг..) появилось куча запросов пользователей об организации sock5 proxy на серверах под управлением FreeBSD и Debian
Краткая заметка для всех желающих. Мы рекомендуем использовать dante в качестве sock5 proxy сервера. Это безопасный и быстрый вариант proxy
FreeBSD
1. Установка dante
Если используется pkg, то можно просто установить dante командой pkg install dante и сразу перейти к конфигурированию dante…
Конечно же, это не наш метод! Мы будем использовать православные ports. Собранные пакеты работают как минимум втрое быстрее ;).
В портах FreeBSD dante находится здесь /usr/ports/net/dante/
После обновления портов заходим и даем команду собрать и установить dante:
cd /usr/ports/net/dante/ && make install clean |
У меня FreeBSD 10.3 и при попытке установить возникает ошибка.
Смотрим зависимости dante:
make search name=dante | more Port: dante-1.4.2 Path: /usr/ports/net/dante Info: Circuit-level firewall/proxy Maint: cpm@FreeBSD.org B-deps: cyrus-sasl-2.1.26_13 miniupnpc-2.0.20170509 R-deps: cyrus-sasl-2.1.26_13 miniupnpc-2.0.20170509 WWW: https://www.inet.no/dante/ |
Оказывается, старый perl5. Cyrus-sasl-2 не собирается, просит старше, чем 5.20
Поэтому приходится вначале собрать perl5 посвежее:
cd /usr/ports/ make search name=perl5 | more |
У меня самый свежий сейчас:
Port: perl5-5.26.1
Path: /usr/ports/lang/perl5.26
Устанавливаем его вместо 5.20. Для этого исправляем файл /etc/make.conf перед сборкой и добавляем в него новую версию perl5 для замены: DEFAULT_VERSIONS+=perl5=5.26
После этого собираем порт perl5.26:
cd /usr/ports/lang/perl5.26/ make install clean # Иногда требуется, особенно если не исправили /etc/make.conf make deinstall make reinstall |
После этого dante собирается без проблем.
2. Конфигурация dante
Все предельно просто: редактируем файл /usr/local/etc/socks.conf
# файл логов. По умолчанию плюется в консоль, это не удобно. Можно так же писать в syslog logoutput: /var/log/socks.log #logoutput: stderr #logoutput: syslog # На каком сетевом интерфейсе и порту обслуживаем socks клиентов (nfe0) у меня. # Если у вас несколько IP на интерфейсе, то вы можете указать конкретный IP здесь internal: nfe0 port = 1111 # С какого IP или интерфейса выходим во внешний мир external: nfe0 #internal: x.x.x.x port = 1080 #external: x.x.x.x # Используемый метод авторизации клиентов. none - без авторизации. socksmethod: username #socksmethod: username none user.privileged: root user.notprivileged: nobody # здесь можно масками разрешить - запретить подключение клиентов client pass { from: 0.0.0.0/0 to: 0.0.0.0/0 log: error connect disconnect } client block { from: 0.0.0.0/0 to: 0.0.0.0/0 log: connect error } socks pass { from: 0.0.0.0/0 to: 0.0.0.0/0 log: error connect disconnect } socks block { from: 0.0.0.0/0 to: 0.0.0.0/0 log: connect error } |
Добавляем пользователя в систему командой adduser, запоминаем его пароль и логин.
Стартуем сервер proxy командой /usr/local/etc/rc.d/sockd onestart
Для проверки статуса работы используем следующие команды:
netstat -na | grep LIST | grep 1111 # показывает, слушается ли порт 1111 tcp4 0 0 80.xx.xx.xx.1111 *.* LISTEN tcp4 0 0 62.xx.xx.xxx.1111 *.* LISTEN sockstat -l | grep 1111 # - показывает, какой демон слушает порт: nobody sockd 70336 9 tcp4 62.xx.xx.xxx:1111 *:* nobody sockd 70336 10 tcp4 80.xx.xx.xx:1111 *:* |
Пробуем подключаться снаружи на proxy. Если порядок, то добавляем в rc.conf старт демона при перезагрузке:
echo 'sockd_enable="YES"' >> /etc/rc.conf |