Прокси-сервер для Телеграмма на Dante Server

Master

Master

Модератор
Противостояние длинною в год закончилось - в России таки заблокировали Телеграм. Дуров постоянно меняет прокси-сервера, но и Роскомнадзор не отстает - блокирует новые IP, в результате чего под раздачу попало множество сайтов. Сейчас цензоры уже несколько ослабили хватку и мессенджер более-менее работает (если скачать последние обновления или Telegram X), но перебои случаются. Конечно, можно поискать в сети бесплатные прокси-сервера для Telegram, но и они не всегда стабильно работают. Если вам нужен бесперебойный вариант, то можно купить VPN/прокси, либо настроить прокси на своем сервере. Для нашей задачи подойдет VPS-ка с минимальными характеристиками (например, у известного хостера fastvps такой сервер стоит около 5 долларов).

В качестве прокси-сервера я предпочитаю Dante Server, так как он прост и удобен в установке, стабилен в использовании. Но я также буду выкладывать здесь и альтернативные варианты.

update
Появился официальный прокси-сервер от Telegram - MTProto. Инструкция по установке здесь.

Установка Dante Socks5 на Centos
Код:
yum install http://mirror.ghettoforge.org/distributions/gf/gf-release-latest.gf.el7.noarch.rpm

#или попробовать сразу
#yum install dante-server

## Включаем репу и устанавливаем dante-server
yum --enablerepo=gf-plus install dante-server

## Разрешаем автозагрузку сервиса
systemctl enable sockd.service

## Создаем рабочую папку
mkdir /var/run/sockd

## Забэкапим оригинальный конфиг
mv /etc/sockd.conf /etc/sockd.conf.orig

## Создаем конфиг, прокси будет слушать на порту 443
cat >> /etc/sockd.conf << 'EOF'
user.privileged: root
user.unprivileged: nobody

internal: ens160 port = 443
external: ens160

logoutput: syslog stdout /var/log/sockd.log
errorlog: /var/log/sockd_err.log

socksmethod: username none #rfc931

client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect disconnect iooperation
}

socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
command: connect udpassociate
log: connect disconnect iooperation
}
EOF

## Стартуем сервис
systemctl start sockd.service

## Правило для фаервола
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="ваш_внешний_ip/32" port protocol="tcp" port="443" accept"

Проверить работу dante server можно командой.
Код:
curl -v -x socks5://ваш ip:1080 http://www.google.com/
Конфиг для dante, позволяющий ограничить доступ к прокси только для пользователей Телеграма.
Код:
# /etc/danted.conf
logoutput: syslog /var/log/sockd.log
internal: eth0 port = 1080
external: eth0
clientmethod: none
socksmethod: username
user.privileged: root
user.unprivileged: nobody
user.libwrap: nobody
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: error
}
# Telegram
socks pass { from: 0.0.0.0/0 to: 149.154.0.0/16 }
socks pass { from: 0.0.0.0/0 to: 91.108.0.0/16 }
socks pass { from: 0.0.0.0/0 to: .telegram.org }
socks pass { from: 0.0.0.0/0 to: .stel.com }
socks pass { from: 0.0.0.0/0 to: .t.me }
socks pass { from: 0.0.0.0/0 to: .telegram.me }
socks pass { from: 0.0.0.0/0 to: .telegram.dog }
socks pass { from: 0.0.0.0/0 to: .telegra.ph }
В dante также предусмотрена возможность ограничить входящий и исходящий трафик (например, только для Телеграм).
Делается это с помощью модуля bandwidth, но он платный, стоит 400 евро.
Код:
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0 port http
command: connect
log: error
bandwidth: 10240 #100kbps
}
Впрочем, некоторые настройки от спама все же предусмотрены в бесплатной версии.
Вот например, из моего конфига.
Код:
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
session.max: 100
session.throttle: 10/1
session.state.key: from
session.state.max: 30
session.state.throttle: 10/2

log: error connect disconnect
}
session.max это ограничение на количество подключений, а session.state.max ограничение на количество подключений с одного IP.


Создаем пользователя для Dante

Код:
adduser testuser
Логин и пароль затем нужно будет указать в настройках Телеграма (см. инструкцию).

Включаем сервис и добавляем в автозагрузку
Код:
service danted start
service danted enable

Чтобы не вводить настройки вручную, можно создать ссылку вида.
Код:
tg://socks?server=[ваш айпи]&port=1080&user=testuser&pass=test
При нажатии по ссылке из телефона или браузера настройки будут автоматически применяться.
 
Последнее редактирование модератором:
moder

moder

Администратор
Команда форума
Установка Dante Socks5 на Ubuntu и Debian

Процедуры установки Dante Server на Ubuntu и Debian схожи, поэтому я сделал общую инструкцию.

Устанавливаем Dante Server
Код:
# Возможно понадобится обновиться.
sudo apt-get update && sudo apt-get upgrade

sudo apt-get install dante-server
Добавляем пользователя.
Код:
sudo useradd -m sockduser --shell /usr/sbin/nologin && sudo passwd sockduser
Даже если вы поднимаете прокси только для себя, лучше задать пользователя, чтобы сканеры не ломились.

Вот еще один вариант конфига с нестандартным портом.
Код:
internal: eth0 port = 7081
external: eth0

socksmethod: username
logoutput: syslog /var/log/sockd.log

client pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    log: error
    socksmethod: username
}

socks pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    command: bind connect udpassociate
    log: error
    socksmethod: username
}

socks pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    command: bindreply udpreply
    log: error
}
Но вы можете использовать конфиги из инструкции выше.
 
Последнее редактирование:
moder

moder

Администратор
Команда форума
Появилось решение для автоматической настройки: Lozy danted

Установка.
Код:
wget --no-check-certificate https://raw.github.com/Lozy/danted/master/install.sh -O install.sh
bash install.sh
Удалить также просто.
Код:
bash install.sh --uninstall
Добавляем пользователя.
Код:
/etc/init.d/sockd adduser USERNAME PASSWORD
И создаем ссылку типа
tg://socks?server=[ваш айпи]&port=1080&user=testuser&pass=test
 
Сверху