Sock5 proxy

Внезапно (с чего бы вдруг..) появилось куча запросов пользователей об организации 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *