Поднимаем SOCKS прокси для Telegram

  • Tutorial
Поднять свой socks прокси очень просто — справится даже далекий от Linux и серверного администрирования человек. Достаточно иметь VDS/выделенный сервер за границей.


Пошаговая инструкция для запуска своего sockd прокси на Centos7

Добавляем репозиторий

sudo yum install http://mirror.ghettoforge.org/distributions/gf/gf-release-latest.gf.el7.noarch.rpm

Включаем репозиторий и устанавливаем Dante

sudo yum --enablerepo=gf-plus install dante-server

Разрешаем автозагрузку сервиса

sudo systemctl enable sockd.service

Создаем рабочую папку

sudo mkdir /var/run/sockd

Делаем бэкап оригинального конфига

sudo mv /etc/sockd.conf /etc/sockd.conf.orig

Узнаем название сетевого интерфейса — например eth0

sudo ifconfig

Пишем свой конфиг

sudo vim /etc/sockd.conf

Подставляем название своего сетевого интерфейса и порт, а также добавляем IP адреса Telegram

sockd.conf

#logoutput: /var/log/socks.log
logoutput: stderr

# На каком сетевом интерфейсе и порту обслуживаем socks клиентов
internal: eth0 port = 433
# С какого IP или интерфейса выходим во внешний мир
external: eth0
#internal: x.x.x.x port = 1080
#external: x.x.x.x

# Используемый метод авторизации клиентов. none - без авторизации.
#user.libwrap: nobody
socksmethod: username
#clientmethod: username
#socksmethod: username none
user.privileged: root
user.unprivileged: nobody
#user.libwrap: nobody
client pass {
        from: 0/0 to: 0/0
        log: error
        session.state.key: from
        session.state.max: 10
        session.state.throttle: 10/2
        session.inheritable: no
}

socks pass {
        from: 0/0 to: 149.154.167.99/32
        log: error
}
socks pass {
        from: 0/0 to: 149.154.175.10/32
        log: error
}
socks pass {
        from: 0/0 to: 149.154.175.117/32
        log: error
}
socks pass {
        from: 0/0 to: 149.154.167.42/32
        log: error
}
socks pass {
        from: 0/0 to: 149.154.175.50/32
        log: error
}
socks pass {
        from: 0/0 to: 149.154.167.50/32
        log: error
}
socks pass {
        from: 0/0 to: 149.154.167.51/32
        log: error
}
socks pass {
        from: 0/0 to: 149.154.175.100/32
        log: error
}
socks pass {
        from: 0/0 to: 149.154.167.91/32
        log: error
}
socks pass {
        from: 0/0 to: 149.154.165.120/32
        log: error
}
socks pass {
        from: 0/0 to: 149.154.166.120/32
        log: error
}
socks pass {
        from: 0/0 to: 149.154.164.250/32
        log: error
}
socks pass {
        from: 0/0 to: 149.154.167.117/32
        log: error
}
socks pass {
        from: 0/0 to: 149.154.167.118/32
        log: error
}
socks pass {
        from: 0/0 to: 149.154.167.192/27
        log: error
}
socks pass {
        from: 0/0 to: 149.154.164.8/29
        log: error
}
socks pass {
        from: 0/0 to: 91.108.8.0/27
        log: error
}
socks pass {
        from: 0/0 to: 91.108.12.0/27
        log: error
}
socks pass {
        from: 0/0 to: 91.108.16.0/27
        log: error
}
socks pass {
        from: 0/0 to: 91.108.56.0/24
        log: error
}
socks pass {
        from: 0/0 to: 91.108.4.0/24
        log: error
}
socks pass {
        from: 0/0 to: 149.154.160.0/22
        log: error
}
socks pass {
        from: 0/0 to: 149.154.164.0/22
        log: error
}
socks pass {
        from: 0/0 to: 149.154.168.0/22
        log: error
}
socks pass {
        from: 0/0 to: 149.154.172.0/22
        log: error
}
socks pass {
        from: 0/0 to: 91.108.56.0/22
        log: error
}
socks pass {
        from: 0/0 to: 91.108.4.0/22
        log: error
}
socks pass {
        from: 0/0 to: 91.108.8.0/22
        log: error
}

socks pass {
        from: 0/0 to: 91.108.16.0/22
        log: error
}

socks pass {
        from: 0/0 to: 91.108.12.0/22
        log: error
}

socks pass {
        from: 0/0 to: 149.154.160.0/20
        log: error
}

socks pass {
        from: 0/0 to: 2001:b28:f23d:f001::e/128
        log: error
}
socks pass {
        from: 0/0 to: 2001:67c:4e8:f002::e/128
        log: error
}
socks pass {
        from: 0/0 to: 2001:b28:f23d:f001::a/128
        log: error
}
socks pass {
        from: 0/0 to: 2001:67c:4e8:f002::a/128
        log: error
}
socks pass {
        from: 0/0 to: 2001:b28:f23d:f003::a/128
        log: error
}
socks pass {
        from: 0/0 to: 2001:67c:4e8:f004::a/128
        log: error
}
socks pass {
        from: 0/0 to: 2001:b28:f23f:f005::a/128
        log: error
}
socks pass {
        from: 0/0 to: 2001:67c:4e8:fa60::/64
        log: error
}
socks pass {
        from: 0/0 to: 2001:b28:f23d::/48
        log: error
}
socks pass {
        from: 0/0 to: 2001:b28:f23f::/48
        log: error
}
socks pass {
        from: 0/0 to: 2001:67c:4e8::/48
        log: error
}
socks pass {
        from: 0/0 to: 0/0
        command: bind connect udpassociate bindreply udpreply
        log: error connect
}



Жмем ctrl+C, набираем :wq и жмем Enter — конфиг сохранен

Разрешаем порт в фаерволе

sudo firewall-cmd --zone=public --add-port=433/tcp --permanent

sudo firewall-cmd --zone=public --permanent --add-port=1024-65535/udp

sudo iptables -A INPUT -p udp -m multiport --dports 1024:65535 -j ACCEPT

sudo firewall-cmd --reload

Запускаем сервис

sudo systemctl start sockd

Проверяем статус

sudo systemctl status sockd



nload -m –u h –U H

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

sudo useradd proxyuser

Устанавливаем пароль

sudo passwd proxyuser

Все — можно подключаться, рекомендую также перенести ssh порт на другой, запретить подключение по ssh для всех пользователей кроме основного — почитать про это можно, например здесь

Пять простых шагов для защиты ssh

VDS в России и Нидерландах
Выделенные серверы в России и Нидерландах
t.me/audiotube_stream — наш канал в Telegram с бесплатным скоростным прокси на выделенных серверах в Германии и Нидерландах
VDS.SH / DEDIC.SH
VDS и серверы нужно покупать только у нас :)

Комментарии 38

    +1
    справится даже далекий

    sudo: yum: command not found


    сомневаюсь, что справится

      0
      Centos7
        0
        та не знает он, ты бы еще ifconfig попросил показать (sarcasm)
      +1
        0
        если собрать получится
        +1
        у socks есть огромный недостаток, по сути нету шифрования и как следствия все знаю куда вы подключаетесь. Нужно сделать socks over ssl и добавить поддержку этого протокола в клиенты.
          0
          Может поделитесь как?!
            +1

            [linux] лучше всего socks over ssh:


            ssh server -D8765

            данная команда просто использует ssh подключение для того чтобы открыть локальный (127.0.0.1) socks5 proxy на указанном порту


            при этом, на удаленный сервер ставить вообще ничего не нужно
            не слишком удобно для постоянного использования, но зато работает везде и сразу

              –1
              работает везде и сразу

              Win8.1 — не работает :)
              использую plink
              и да. везде? вы к цысковскому оборудованию пытались так подключиться? :)
                0
                Эммм… Во первых, я указал что это способ для linux — причём тут win 8.1?
                Во вторых, причём тут цысовское оборудование? Статья про запуск прокси на centos == «на своём забугорном сервере». Я просто написал что если нужен по быстрому шифрованный socks proxy через свой серевер — оно работает само
                0
                Присоединяюсь,
                также можно настроить и Firefox на работу через прокси, дополнительно решается проблема в подменой DNS провайдерами.
            +3
            CentOS 7

            вместо:
            sudo ifconfig

            , которого нет, но можно поставить:
            sudo yum -y install net-tools

            использовать нужно:
            ip addr


            Далее
            Разрешаем порт в фаерволе

            вернее будет:
            sudo vim /usr/lib/firewalld/services/sockd.xml

            Описываем наш сервис:
            <?xml version="1.0" encoding="utf-8"?>
            <service>
                <short>sockd</short>
                <description>My sockd Server.</description>
                <port port="433" protocol="tcp" />
            </service>
            

            И добавляем правило:
            
            sudo firewall-cmd --reload
            sudo firewall-cmd --get-services
            sudo firewall-cmd --permanent --zone=public --add-service=sockd
            sudo firewall-cmd --permanent --list-all
            sudo firewall-cmd --reload
            


            рекомендую также перенести ssh порт на другой, запретить подключение по ssh для всех пользователей кроме основного


            Так же запретить соединение для root, авторизацию по паролю — только ключи и настроить разрыв сессии при простое.
              0
              Вообще лучше VPN сервер поднять, а чтобы не светить его можно к нему через TOR соединяться (OpenVPN умеет). TOR с обфусцированным мостом. Так надежнее и спокойнее =)
              0

              Купил впс за 1 евро в чехии, поднял там ikev2, все работает с компа и мобилы. 2 дня пытаюсь завести в него весь трафик с роутера Ubiquiti EdgeRouterX, который под debian wheezy. Это просто ад какой-то поднять ikev2 клиент на линухе. После кровавых боев он наконец-то подключается, но как, черт бы его побрал, отправить через впн весь трафик, учитывая, что инет в него идет через pppoe?

                0
                Если не секрет где впс по 1евро? Дешевле двух не видел.
                  –2
                  Аруба.
                  0
                  Если не сложно, то можно поделиться настройки EdgeRouterX?
                    0
                    Отправил в личку
                  +1
                  Зачем все таскают из конфигурации в конфигурацию эту портянку из отдельных адресов? Есть же список AS'ок, где всё это в нормальном виде:
                  91.108.12.0/22
                  149.154.172.0/22
                  91.108.16.0/22
                  91.108.56.0/23
                  149.154.168.0/22
                  91.108.4.0/22
                  91.108.8.0/22
                  91.108.56.0/22
                  149.154.160.0/20
                  149.154.164.0/22
                    0
                    С IPv6 аналогично: трёх последних записей с /48 вполне достаточно.
                    91.108.56.0/23, кстати, тоже можно выкинуть, есть /22, просто скопипастил так.
                    +2
                    А как же sudo useradd --shell /usr/sbin/nologin proxyuser?
                    Чтобы юзер по ssh не гонял на сервер.
                      +1
                      sudo vim — не справится.
                        0
                        Кстати да)))
                        Надо бы заменить на nano))
                        +1

                        Можете подсказать чем отличается
                        client от socks в контексте конфигурационного файла? "clientmethod" vs "socksmethod", "client pass" vs "socks pass"?
                        В man sockd.conf не достаточно понятно для меня это изложено =(

                          –12
                          А нравственные аспекты борьбы с терроризмом не мучают? — Если еще один норд-ост используя телегу данную устроят — то я ни причем?
                            +3
                            Норд-Ост устроили без телеграма.
                              +2
                              То-есть вы серьезно считаете, что если тг не будет, то и терроризма не будет?
                                +1
                                когда в грузовикe, в баллоне тащили через страну бомбу, никакой телеграм не нужен был. только продажная милиция. запрет телеграмма эту проблему не решит.
                                0
                                Рекомендую обратить внимание на данный проект — getoutline.com
                                0

                                Вчера попробовал поднять dante, но уж больно он память любит.
                                image


                                Судя по документации 64 воркеров хватит, чтобы обслужить около 500 пользователей.


                                Попробовал найти что-то хорошее/асинхронное, но не удалось. Поэтому по-быстрому написал на питоне свой: https://github.com/alexbers/tgsocksproxy. Он потребляет мало памяти, одновременно держит очень много пользователей и просто поднимается.


                                Работаю под ним уже сутки, полёт нормальный.

                                  +1
                                  Сложно ли будет Вам «прикрутить» БД для ведения списка пользователей?
                                    0

                                    В самом простом виде база данных пользователей прикручивается очень просто, примерно так: https://pastebin.com/4v7xJdXL.


                                    Весь прокси-сервер по-сути состоит из одного файла, размером ~250 строк, поэтому добавлять туда новую функциональность, в соотвествии со своими потребностями (напр. логирование, интеграция с ldap, статистика, другие разрешённые адреса проксирования) должно быть несложно. Сейчас он заточен на максимально простое развёртывание и использование.

                                      0

                                      По многочисленным просьбам применил этот патч к основной ветке. Ещё добавил вывод статистики раз в 10 минут. Её формат примерно такой:


                                      Stats for 23.04.2018 23:01:22
                                      tg: 4 connects (3 current), 0.00 MB
                                      tg2: 0 connects (0 current), 0.00 MB
                                  0
                                  Ничего не работает, пишите инструкцию как это все снести )))
                                  Я — ламер, кроме VPN ничего поднять не смог. Прокси не работает хоть об стену расшибись, пробовал уже и dante и ss5, все делал по инчтрукциям, видимо чегото не хватает.
                                    0
                                    Фаерволл есть? Порты открыты?
                                    0
                                    Нубский вопрос наверное — а вот эти вот все VDS и прочее что я оплачу и настрою под себя, они сегодня вечером или завтра не попадут в очередной список РКН по примеру амазона и DigitalOcean?
                                      0
                                      Могут и попасть. Но никто не мешает поменять IP. Тот же Амазон и DigitalOcean это позволяют

                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                    Самое читаемое