What's new

Article Socks5 сервер на Golang без Dante и 3Proxy

W 0

Wipe

New Member
Jan 13, 2020
3
13
Socks5 сервер на Golang

Socks5_and_VPN.png

В этой статье я постараюсь рассказать и показать вам - как настроить свой socks5 сервер на Golang без бубнов с несомненно меньшим количеством бубнов чем при использовании Dante и 3proxy

Статья расчитана на абсолютных новичков, поэтому будет очень много перекрестных ссылок

Нам понадобится:

1) Любой VPS (можно поискать вот тут), либо, для тестов, любой Android смартфон (для данной статьи использован второй вариант)
2) Прямые руки, можно и кривые, но обязательно из плеч :)

Для того, чтобы подключится к вашему телефону с компьютера - и то и другое устройство должны быть в одной сети (например телефон подключен к Wifi, а ПК подключен по проводу к тому же роутеру который раздает Wifi)

Установите терминал для Android смартфонов - Termux

Если хочется подключится к телефону с компьютера - выполните в Termux следующие действия:
1) Команда pkg install openssh установит ssh клиент и sshd сервер
2) Команда passwd с последующим вводом паролей - собственно и установит пароль для пользователя (пароль при вводе не отображается, это нормально)
3) Команда whoami выдаст вам имя пользователя для которого в пункте 2 вы задали пароль, запомните это имя
4) Команда sshd запустит ваш ssh сервер на порту 8022 (в стандартной сборке openssh для Termux установлен именно этот порт)
5) Команда ifconfig выведет настройки вашего интернет соединения, ищите wlan, там в строке будет ваш IP, пригодится

1578946990100.png


6) Если у вас Windows - скачайте putty, если под Linux - команда ssh вам в помощь
6.1) При подключении из putty - вбейте в соответсвующие поля IP (в моем случае 192.168.1.145) и порт (8022), нажмите "Open" и введите логин и пароль полученные ранее
6.2) При подключении из Linux - команда выглядит вот так ssh -p 8022 логин@IP_адрес
7) После завершения работы - с телефона убейте процесс sshd командой killall -9 sshd
и удалите пароль пользователя командой rm .termux_authinfo (находится в домашнем каталоге, перейти в него - команда cd)

Установка socks5 сервера

1) Необходимо загрузить на ваше устройство компилятор Go, сделать это можно командами:
  • Для Android - pkg install golang
  • Для VPS - apt install golang (в зависимости от установленной системы команда может отличаться, смотрите документацию на ваш дистрибутив)
1578948316000.png


2) Тем же способом грузим git (без него не работает необходимая команда go get)
  • Для Android - pkg install git
  • Для VPS - apt install git
1578948398600.png


3) Создаем директорию под наши файлы командой mkdir golang-socks и переходим в нее командой cd golang-socks

4) Устанавливаем переменную GOPATH командой export GOPATH=$HOME/golang-socks

5) С помощью go get выкачиваем вот этот репозиторий Go-Socks5
  • Для всех - go get github.com/armon/go-socks5
6) Используя команду nano main.go записываем в файл вот этот код:

C-like:
package main

import socks5 "github.com/armon/go-socks5"

func main() {
    cred := socks5.StaticCredentials{"user": "pass"}
    conf := &socks5.Config{Credentials: cred}
    server, err := socks5.New(conf)
    if err != nil {
        panic(err)
    }
    err = server.ListenAndServe("tcp", "0.0.0.0:9000")
    if err != nil {
        panic(err)
    }
}
В данном коде обязательно измените строку cred := socks5.StaticCredentials{"user": "pass"} указав желаемое имя пользователя (вместо слова user) и пароль (соответственно вместо pass), а также вы можете изменить порт на котором будет запускаться ваш socks5 сервер изменив число 9000 в строке err = server.ListenAndServe("tcp", "0.0.0.0:9000")[B][/B]

Для того чтобы выйти из nano требуется нажать CTRL+X, согласится с сохранением клавишей Y и утвердить имя файла клавишей Enter

1578950099000.png


1578950142000.png


7) Готово, теперь можно запускать наш socks5 сервер командой go run main.go и попробовать просканировать через nmap командой nmap localhost -p9000, просто потому что он под рукой :) (ошибка как раз вышла из за попытки просканировать через nmap, сервер полностью рабочий)

1578950910600.png


7.1) В случае если при запуске посыпались ошибки о нехватке библиотек - выполните команду go get golang.org/x/net/context, она догрузит недостающую библиотеку

8) Для того чтобы запуск socks5 сервера не занимал терминал и не падал при выходе с сервера - я предпочитаю использовать команду screen, если запущен прошлый socks5 сервер - останавливаем его сочетанием CTRL+C, вводим screen, жмем Enter и запускаем socks5 сервер как из прошлого пункта. Для отключения от виртуального терминала screen - нажмите CTRL+A и отдельно D (в будущем в этот терминал можно вернуться командой screen -r)

9) Можешь скомпилировать текущий код, но тут уж сам :)
PROTEY.NET
Зашел в топик? Оставь коммент!
Не зарегистрирован? Регистрируйся и оставляй коммент!
Нет пк? Покупай, регистрируйся и оставляй коммент!
Оставил коммент? Не скупись - оставь еще, найди полезных ссылок, похожих статей и оставляй!
 
Top Bottom