Поднимаем proxy для Telegram

Давно я не писал, что то в своем блоге. К данному посту меня сподвигла ситуация в России и Иране связанная с блокировкой мессенджера Telegram.

Не жуя сопли, хочу рассказать Вам как же поднять собственный proxy для telegram. То-есть через proxy будет проходить только трафик к telegram, а к другим сетям блокироваться.

И так приступим. Я буду показывать на примере centos 7.

Загружаем последний релиз gf-release:

wget http://mirror.ghettoforge.org/distributions/gf/el/7/plus/x86_64/

Ставим rpm:
rpm -Uvh gf-release*rpm

Устанавливаем сам dante-server:
yum --enablerepo=gf-plus install dante-server

И так мы установили ПО dante-server которое и будет реализовывать нам socks5 proxy для telegram.

После установки включаем автозагрузку демона:
systemctl enable sockd.service

Создадим папку необходимую для работы прокси:
mkdir /var/run/sockd

Забекапим оригинальный конфиг:
mv /etc/sockd.conf /etc/sockd.conf_bkp

Дальше приведу готовый конфиг с разрешением доступа только к сетям telegram и сайтам мессенджера, листинг ниже необходимо вставить в файл:
/etc/sockd.conf

Конфиг:
user.privileged: root
user.unprivileged: nobody
internal: eth1 port = 1080
external: eth1
logoutput: syslog stdout /var/log/sockd.log
errorlog: /var/log/sockd_err.log
clientmethod: none
socksmethod: username
# allow any client connection
client pass {
    from: 0.0.0.0/0 port 1-65535 to: 0.0.0.0/0
    log: connect disconnect error
}
# deny proxied to lo
socks block {
    from: 0.0.0.0/0 to: 127.0.0.0/8
    log: error
}
# deny binding
socks block {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    command: bind
    log: error
}
#Networks
#AS62041
socks pass {
    from: 0.0.0.0/0 to: 91.108.4.0/22
    log: connect disconnect error
    socksmethod: username
}
socks pass {
    from: 0.0.0.0/0 to: 91.108.8.0/22
    log: connect disconnect error
    socksmethod: username
}
socks pass {
    from: 0.0.0.0/0 to: 91.108.56.0/22
    log: connect disconnect error
    socksmethod: username
}
socks pass {
    from: 0.0.0.0/0 to: 149.154.160.0/20
    log: connect disconnect error
    socksmethod: username
}
socks pass {
    from: 0.0.0.0/0 to: 149.154.164.0/22
    log: connect disconnect error
    socksmethod: username
}
#AS62014
socks pass {
    from: 0.0.0.0/0 to: 91.108.16.0/22
    log: connect disconnect error
    socksmethod: username
}
socks pass {
    from: 0.0.0.0/0 to: 91.108.56.0/23
    log: connect disconnect error
    socksmethod: username
}
socks pass {
    from: 0.0.0.0/0 to: 149.154.168.0/22
    log: connect disconnect error
    socksmethod: username
}
#AS59930
socks pass {
    from: 0.0.0.0/0 to: 91.108.12.0/22
    log: connect disconnect error
    socksmethod: username
}
socks pass {
    from: 0.0.0.0/0 to: 149.154.172.0/22
    log: connect disconnect error
    socksmethod: username
}
#AS44907
socks pass {
    from: 0.0.0.0/0 to: 91.108.20.0/22
    log: connect disconnect error
    socksmethod: username
}
socks pass {
    from: 0.0.0.0/0 to: 91.108.36.0/23
    log: connect disconnect error
    socksmethod: username
}
socks pass {
    from: 0.0.0.0/0 to: 91.108.38.0/23
    log: connect disconnect error
    socksmethod: username
}
socks pass {
    from: 0.0.0.0/0 to: 91.108.4.0/22
    log: connect disconnect error
    socksmethod: username
}
#Others AS
socks pass {
    from: 0.0.0.0/0 to: 149.154.167.0/22
    log: connect disconnect error
    socksmethod: username
}
socks pass {
    from: 0.0.0.0/0 to: 149.154.174.0/22
    log: connect disconnect error
    socksmethod: username
}
#sites telegram
socks pass {
    from: 0/0 to: .telegram.org
    log: connect disconnect error
    socksmethod: username
}
socks pass {
    from: 0/0 to: .t.me
    log: connect disconnect error
    socksmethod: username
}
socks pass {
    from: 0/0 to: .stel.com
    log: connect disconnect error
    socksmethod: username
}
socks pass {
    from: 0/0 to: .telegram.me
    log: connect disconnect error
    socksmethod: username
}
socks pass {
    from: 0/0 to: .telegram.dog
    log: connect disconnect error
    socksmethod: username
}
socks pass {
    from: 0/0 to: .telegra.ph
    log: connect disconnect error
    socksmethod: username
}
# deny the rest
socks block {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    log: error
}

В данном конфиге как минимум нужно заменить название сетевых интерфейсов на Ваши.

Так как данная конфигурация написана для авторизации по паре логин / пароль системных пользователей, то создадим пользователя с помощью которого будем авторизовываться:
useradd --shell /usr/sbin/nologin telegram
*- где telegram имя Вашего пользователя

Установим пароль для только что созданного пользователя:
passwd telegram

Дальше стартуем:
systemctl start sockd

Проверяем статус:
systemctl status sockd

Если видим, что то подобное, значит все ОК:
● sockd.service - SOCKS v4 and v5 compatible proxy server and client
   Loaded: loaded (/usr/lib/systemd/system/sockd.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2018-05-02 16:07:26 EEST; 1 day 21h ago

Так же если у Вас включен фаервол, то необходимо открыть порт 1080:
iptables -I INPUT -p tcp -m tcp --dport 1080 -j ACCEPT

Так же советую заблокировать на сервере с proxy сети mail.ru, зачем? погуглите)
iptables -A INPUT -s 5.61.16.0/21 -j DROP
iptables -A INPUT -s 5.61.232.0/21 -j DROP
iptables -A INPUT -s 79.137.157.0/24 -j DROP
iptables -A INPUT -s 79.137.174.0/23 -j DROP
iptables -A INPUT -s 79.137.183.0/24 -j DROP
iptables -A INPUT -s 94.100.176.0/20 -j DROP
iptables -A INPUT -s 95.163.32.0/19 -j DROP
iptables -A INPUT -s 95.163.212.0/22 -j DROP
iptables -A INPUT -s 95.163.216.0/22 -j DROP
iptables -A INPUT -s 95.163.248.0/21 -j DROP
iptables -A INPUT -s 128.140.168.0/21 -j DROP
iptables -A INPUT -s 178.22.88.0/21 -j DROP
iptables -A INPUT -s 178.237.16.0/20 -j DROP
iptables -A INPUT -s 178.237.29.0/24 -j DROP
iptables -A INPUT -s 185.5.136.0/22 -j DROP
iptables -A INPUT -s 185.16.148.0/22 -j DROP
iptables -A INPUT -s 185.16.244.0/23 -j DROP
iptables -A INPUT -s 185.16.246.0/24 -j DROP
iptables -A INPUT -s 185.16.247.0/24 -j DROP
iptables -A INPUT -s 188.93.56.0/21 -j DROP
iptables -A INPUT -s 194.186.63.0/24 -j DROP
iptables -A INPUT -s 195.211.20.0/22 -j DROP
iptables -A INPUT -s 195.218.168.0/24 -j DROP
iptables -A INPUT -s 217.20.144.0/20 -j DROP
iptables -A INPUT -s 217.69.128.0/20 -j DROP

На этом в принципе все. В данном конфиге на свое усмотрение Вы можете менять порты, типы авторизации и т.д.

P.S. Ниже приведу сылку для автоматической настройки proxy в telegram:
tg://socks?server=IP&port=1080&user=telegram&pass=telegram
*-где IP нужно заменить на ip Вашего сервера. А telegram логин и пароль на те, что Вы создали. 

P.P.S. Данная статья была написана при поддержке ISPLevel, которая любезно предоставила VDS для тестов.

P.P.P.S. Digital Resistance да прибудет с нами сила)

  • Автор: WereWolf
  • Комментарии: 0
  • Просмотры: 214

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

Вы не авторизованы и вам запрещено писать комментарии. Для расширенных возможностей зарегистрируйтесь!