SOCKS5 прокси-сервер для себя и друзей

SOCKS5 прокси-сервер для себя и друзей
5 (100%) 4 голос(а)

Все настройки выполнены в VPS от hostsailor.com

Сайт для статьи размещён на fornex.com

Данная статья показывает как с помощью свободно распространяемого программного обеспечения можно обойти проблемы сетевых соединений (блокировки) путём использования прокси-сервера, расположенного за пределами страны пребывания клиента.

Немного формальностей. Данная статья, а также сайт secfall.com не предоставляет способов обхода блокировок. И в данной статье, и на сайте secfall.com описываются инструменты штатного применения программного продукта 3roxy. Автор статьи и администрация сайта secfall.com не могут нести ответственность за противоправные действия третьих лиц, при использовании описываемых в статье и на сайте инструментов.

На самом деле миллион мануалов на эту тему. Инструкцию написана только для того, чтобы показать, как в написанные по моим статьям конфиги впилить самостоятельно работающий прокси-сервер. Если Вам лениво делать свой или вы соменваетесь, поможет ли он Вам — воспользуйтесь демонстрационным бесплатным сервисом rknsucks.xyz

Но лучше сделать свой.

Небольшое техническое описание нашего будущего сервиса:

  • ОС: CentOS 7 x64
  • Используемое ПО: 3proxy
  • Протокол прокси: SOCKSv4-5
  • Аутентификация: Да

Кроме того, для иллюстрирования работы сервиса будет настроен прокси-сервер по адресу proxy.rknsucks.xyz

Это доменное имя будет смотреть на тот же сервер, что ovpn.rknsucks.xyz из прошлой статьи.

Я уже писал как установить и настроить 3proxy, но там мы делали прозрачный прокси-сервер для клиентов OpenVPN сервера.

Здесь же мы сделаем прокси-сервер как самостоятельный сервис. Это позволит использовать его отдельно от OpenVPN.

Опишу весь порядок установки. Также дам примеры конфигов iptables для разных случаев установки сервера.

Да, можно было бы установить 3proxy моим скриптом автоустановки, но поскольку в прошлой статье мы правили /root/ipt-set, то скрипт вернёт нам его к дефолтному состоянию и поломает работу OpenVPN. Поэтому поставим руками, тем более, что ничего сложного тут нет. 

Ладно, для лентяев в разделе 2 статьи будет скрипт автоматической установки 3proxy. Этот скрипт делает ровно всё то, что написано в разделе 1.

Все конфиги можно найти на GitHub.

Краткое содержание:

  1. Установка прокси-сервера 3proxy вручную
  2. Установка прокси-сервера 3proxy скриптом
  3. Настройка iptables
  4. Установка прокси-сервера 3proxy вручную

Подготовим сервер, если он еще не готов:

Для компиляции нам понадобиться компилятор:

Перейдём во временную папку

и скачаем актуальную версию 3proxy

Номер последней версии можно узнать тут. На момент написания статьи это 0.8.12.

Распаковываем (не забудьте исправить команду под скачанную версию):

И переходим в папку с исходниками:

Компилируем

Создаём папку для бинарника и pid-файл:

Теперь перенесем скомпилированный исполняемый файл и дефолтный конфиг в рабочую папку:

В папке /etc/systemd/system с помощью WinSCP или любым удобным для Вас способом создаем файл 3proxy.service следующего содержания:

Образец файла.

Теперь откроем файл /opt/3proxy/3proxy.cfg

Удалите всё его содержимое и вставьте следующее:

Образец файла.

Здесь для нас важны следующие строчки:

external 185.45.193.66 — внешний ip-адрес Вашего сервера

allow * — строчка разрешений для клиентов. В таком виде она разрешает любые подключения.

В общем виде строчка разрешений имеет такой формат:

где нас интересуют следующие поля:

  • <userlist> — список логинов пользователей через запятую
  • <sourcelist> — список сетей клиентов через запятую. Сеть задается в формате xxx.yyy.zzz.mmm/l, где l — длина маски сети (количество ненулевых байт). Например, 192.168.1.0/24 соответствует сети с маской 255.255.255.0.
  • <targetlist> — список сетей назначения через запятую
  • <targetportlist> — список портов назначения через запятую. можно задать диапазон портов через -, например, 80,1024-65535

Тут уже настраиваете как Вам нужно. Как видно в приведенном выше конфиге, мы пока ничего не ограничиваем.   Если вы делаете этот сервер для себя и хотите пропускать через него трафик к любым сайтам, то так и оставьте.

Если хотите разрешать подключение к прокси только по логину и паролю, то конфиг будет такой:

Где строчки:

users proxyuser1:CL:password1

users proxyuser2:CL:password2

задают логины и пароли пользователей прокси-сервера.

Образец файла.

Мне, для сервера proxy.rknsucks,xyz, важно пропускать трафик только к сетям Telegram, а весь остальной блокировать. Тогда в конфиге моего сервера строчка будет имеет вид (не используемые поля заменяем *):

Напомню, что адреса подсетей нужного сайта можно получить на специализированных ресурсах. Например, на https://bgp.he.net

 

Можно список подсетей назначения реализовать и по-другому. Прописать их не в конфиге прокси, а в iptables (т.е. в моём случае в файле /root/ipt-set). Учитывая, что у меня на одной машине подняты и OpenVPN, и прокси, такой способ будет являться для меня предпочтительным и описан в разделе 3 статьи. Если подсетей, для которых нужно настроить ограничения, много, то тут лучше использовать более взрослые способы настройки iptables. Например ferm. Вы можете выбирать то, что лучше подходит к Вашей задаче.

Не забудьте сохранить и закрыть конфиг.

Можно попробовать запустить прокси-сервер командой:

И проверить его состояние командой:

Если есть ошибки, проверяйте конфиги. Если нет, то настроим автозапуск службы командой:

На этом ручные настройка и запуск прокси-сервера завершены.

  1. Установка прокси-сервера 3proxy скриптом

Тут всё будет просто. Мой скрипт установки есть на GitHub. Он очень простой. Скачивает, компилирует, устанавливает, делает конфиг, запускает добавляет в автозагрузку 3proxy. Проверка ошибок минимальна. Просто, чтобы сократить рутину. Скрипт не настраивает файрволл и/или iptables.

Чтобы воспользоваться запустите команду:

Если будет ошибка из-за отсутствия пакета wget, то тогда так

  1. Настройка iptables для прокси

3.1 Если у Вас уже настроен iptables по статье «Анонимность в интернете своими руками. Установка и настройка VPN сервера» или моим скриптом автоустановки OpenVPN, то приводим файл /root/ipt-set к такому виду:

Пример файла.

Обращаем внимание на строчки

Должны быть правильно указаны название физического интерфейса, порт и протокол OpenVPN сервера.

Применяем настройки командой:

3.2 Если у Вас уже настроен iptables по статье «Избирательная маршрутизация в OpenVPN«, то приводим файл /root/ipt-set к такому виду:

Пример файла.

Также обращаем внимание на строчки

Должны быть правильно указаны название физического интерфейса, порт и протокол OpenVPN сервера.

Применяем настройки командой:

ВАЖНО: указанный выше конфиг не ограничивает клиента по адресам назначения. Т.е. если в конфиге прокси-сервера не указаны разрешенные сети назначения (как написано в разделе 1 этой статьи) и такие сети не указаны в файле /root/ipt-set, то клиент прокси сервера сможет через него ходить на любой ресурс.

3.3 Если вы хотите ограничить список разрешённых сетей назначения через iptables, то тогда в файле /root/ipt-set строчки (если не используете IPv6, то только первая строчка):

Правим на:

Т.е. мы запрещаем новые исходящие соединения, но разрешаем исходящий трафик по уже установленным соединениям.

Теперь настроим правила исходящих соединений на примере Telegram и MyIP.ru (и еще разрешим исходящие на гугловые DNS). В раздел # OUTPUT chain файла /root/ipt-set допишем:

Пример файла.

Теперь пользователь нашего сервиса, причем и пользователь прокси, и пользователь vpn, сможет ходить только на подсети Telegram и на сайт myip.ru.

Не забываем применить настройки командой

Ну вот и всё. Осталось вписать адрес и порт сервера в настройки клиента Telegram (Настройки -> Данные и диск  ->  Настройки прокси).

 

 

 

 

Вы можите оставить комментарий, или поставить трэкбек со своего сайта.

Написать комментарий

XHTML: Вы можете использовать эти теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">