Поднять свой 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
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
}
client pass {
	from: 0/0 to: 0/0
        log: error
}



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

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

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

sudo firewall-cmd --reload

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

sudo systemctl start sockd

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

sudo systemctl status sockd



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

sudo useradd proxyuser

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

sudo passwd proxyuser

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

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

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

Комментарии (28)


  1. surefire
    18.04.2018 16:15
    +1

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

    sudo: yum: command not found


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


    1. AHDPEu
      18.04.2018 16:40
      -1

      Centos7



  1. interprise
    18.04.2018 18:11
    +1

    у socks есть огромный недостаток, по сути нету шифрования и как следствия все знаю куда вы подключаетесь. Нужно сделать socks over ssl и добавить поддержку этого протокола в клиенты.


    1. chuikoffru
      19.04.2018 02:28

      Может поделитесь как?!


      1. lleo_aha
        19.04.2018 11:55
        +1

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


        ssh server -D8765

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


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


        1. Chugumoto
          20.04.2018 13:51

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

          Win8.1 — не работает :)
          использую plink
          и да. везде? вы к цысковскому оборудованию пытались так подключиться? :)


          1. lleo_aha
            20.04.2018 13:55

            Эммм… Во первых, я указал что это способ для linux — причём тут win 8.1?
            Во вторых, причём тут цысовское оборудование? Статья про запуск прокси на centos == «на своём забугорном сервере». Я просто написал что если нужен по быстрому шифрованный socks proxy через свой серевер — оно работает само


        1. mihmig
          21.04.2018 14:31

          Присоединяюсь,
          также можно настроить и Firefox на работу через прокси, дополнительно решается проблема в подменой DNS провайдерами.


  1. chelaxe
    18.04.2018 18:29
    +1

    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, авторизацию по паролю — только ключи и настроить разрыв сессии при простое.


    1. chelaxe
      18.04.2018 18:45

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


  1. dmitry_dvm
    18.04.2018 18:36

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


    1. nckma
      18.04.2018 19:06

      Если не секрет где впс по 1евро? Дешевле двух не видел.


      1. vtulin
        18.04.2018 19:29
        -1

        Аруба.


    1. kirillzak
      19.04.2018 01:10

      Если не сложно, то можно поделиться настройки EdgeRouterX?


      1. dmitry_dvm
        19.04.2018 11:55

        Отправил в личку


  1. Andrusha
    19.04.2018 01:03

    Зачем все таскают из конфигурации в конфигурацию эту портянку из отдельных адресов? Есть же список 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


    1. Andrusha
      19.04.2018 01:14

      С IPv6 аналогично: трёх последних записей с /48 вполне достаточно.
      91.108.56.0/23, кстати, тоже можно выкинуть, есть /22, просто скопипастил так.


  1. chuikoffru
    19.04.2018 01:59

    А как же sudo useradd --shell /usr/sbin/nologin proxyuser?
    Чтобы юзер по ssh не гонял на сервер.


  1. Taburen
    19.04.2018 18:02
    +1

    sudo vim — не справится.


    1. vconst
      19.04.2018 18:21

      Кстати да)))
      Надо бы заменить на nano))


  1. to2n
    19.04.2018 18:02

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


  1. Vovan58
    19.04.2018 18:02
    -2

    А нравственные аспекты борьбы с терроризмом не мучают? — Если еще один норд-ост используя телегу данную устроят — то я ни причем?


    1. Free_ze
      19.04.2018 18:36
      +1

      Норд-Ост устроили без телеграма.


    1. WaveCut
      19.04.2018 23:08
      +1

      То-есть вы серьезно считаете, что если тг не будет, то и терроризма не будет?


  1. sintez
    20.04.2018 16:55

    Рекомендую обратить внимание на данный проект — getoutline.com


  1. alexbers
    20.04.2018 18:52

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


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


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


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


    1. mihmig
      21.04.2018 14:32
      +1

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