Как сделать свой прокси сервер linux

Обновлено: 05.07.2024

Вводятся постоянные блокировки, и может возникнуть потребность в бюджетном способе их обхода, например, использование socks5. Как это сделать? Рассказываем в нашем материале.

  1. Создайте аккаунт на Digital Ocean и добавьте свои платежные данные.
  2. Заходим сюда.
  3. Скрипт собирает droplet c vpn после установки отдаёт настройки с vpn и все, пользуетесь на здоровье.

И того, всего нужно сделать 3 клика.

Правда это будет стоить $5 в месяц, но можно легко разделить на друзей.

Если кто тестировал VPN в три клика на DigitalOcean и не получалось подключить клиента с Win 10 и в «диспетчере событий» (eventvwr.msc) появляется error 720, то в «Диспетчере устройств» (devmgmt.msc) удалите все сетевые адаптеры начинающиеся с «WAN Miniport» и обновите конфигурацию оборудования. После всё будет работать.

  • Выберете самый дешевый тариф как описано ниже (у вас будут списывать деньги за час, а не сразу за весь месяц)
  • Создаем новый droplet любой конфигурации, минимальный стоит 5$/месяц, трафик 1TB, чуть дороже 10$/месяц — трафик 2TB, 20$ — 4TB. Операционная система ubuntu 16.04.4 x64 подойдет идеально.

socks5


Просто создайте дроплет. Меню может изменится в будущем, но все будет понятно

socks5


Выберете Ubuntu 16.04.

socks5


Выберите самый дешевый тариф. Провайдеры типа Vulture или Hetzner дешевле, но у DO отличнейший сервис

socks5


Выберите регион, который ближе всего к вашему

Вы можете заметить, что у вас нет ssh ключа в вашем аккаунте. Если так, то вот чуть про ssh ключи и как их настроить

Если вы пользователь Windows — не беспокойтесь, я расскажу как легко работать с ssh ключами в Windows.

Доступ до вашего VDS

socks5

Если вы Linux или Mac пользователь, то вы скорее всего уже знаете как сгенерировать ssh ключи и как использовать их. В этом случае, просто загрузите приватный ключ на ваш аккаунт Digital Ocean и проследуйте дальше.

socks5

Также — включение двухфакторной аутентификации добавит безопасности и избавит от головной боли в случае чего.

Это меню находит в разделе Settings -> Security tab

socks5


Загрузка вашего ключа это просто копирование и вставка вашего публичного ключа

Есть один момент — DO ожидает формат вашего ключа как если бы он был сгенерирован Linux ssh генератором. Это выглядит вот так:

ssh-rsa AAAAB3NzaC . 7QpNuybOgF root@proglib-ubuntu

Теперь часть для windows пользователей

Я лично использую Putty и PuttyGen. SSH ключи — это базовый метод контроля Linux серверов и защищенного доступа. Можно прочитать про это на википедии. Если вы Windows пользователь ssh консоль это тоже самое как и cmd.exe.

Не беспокойтесь об этом, на самом деле это довольно просто.

Но если вы сгенерировали ключи через Putty, ваш публичный ключ будет выглядеть как то так и в таком виде он не будет работать с Ubuntu:

Убедиться, что ваш ключ будет работать с DO можно следуя этим указаниям

  • Создать ключ используя Linux как описано здесь. Вы будете использовать этот ключ на сервере DO.
  • Сохраните новые созданные публичный и приватные ключи где нибудь на своем компьютере
  • Загрузите приватный ключ в PuttyGen через Conversion -> Import Key
  • Затем нажмите "save private key" — вы будете использовать этот ключ с Putty позже

socks5

Конвертирование ключа в PuttyGen

Если вы не имеет доступа до Linux консоли, вы можете сгенерировать ключи используя следующие действия**:

  • Создайте дроплет в DO, сбросьте root пароль (смотрите картинку), откройте в онлайн консоли. Создайте ключи там и используйте команду cat для вывода ключа
  • Создайте дроплет в DO, сбросьте root пароль, откройте Putty и введите логин, пароль
  • В обоих случаях — будет проще создать новый дроплет после того, как нужные ключи будут установлены

socks5


Это меню позволяет сбросить пароли и запустить онлайн консоль

Наконец-то получить доступ до своего дроплета используя Putty и ключи

  • Создайте новое соединение в Putty
  • Введите ваш IP адрес и порт (обычно 22)
  • Введите имя для вашего соединения и нажмите сохранить
  • Пойдите в data -> Auto-login username и введите root
  • Пойдите в data -> SSH -> Auth и выберет приватный ключ, который вы сохранили с помощью PuttyGen;
  • Не забудьте вернуться обратно в сессию после всех настроек

socks5

socks5

socks5

Настройка вашего VDS и прокси сервера

Теперь у вас есть ваш собственный VDS и ssh терминал с root доступом до него. Отлично!

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

socks5

Логинимся на сервер через ssh и загружаем готовый Docker-образ и запускаем его:

Таким образом, вы создали прокси сервер с логином your_username и паролем your_password c портом 1080. См. секцию Использование socks5 для добавления настроек в приложение Telegram.

После создания авторизуемся как root, используя ssh и выполняем следующие команды (должны работать):

Можно из под ssh это сделать используя vim, либо подключитесь по ftp/sftp и отредактруйте файл текстовым редактором
Важный момент — юзера стоит создавать с флагом --shell /usr/sbin/nologin
Таким образом, этот юзер не сможет шариться по VPS через ssh. Особенно учитывая что пасс от него летает по сети в открытом виде.
Теперь создаем пользователя для прокси

вводим ему пароль дважды и запоминаем

Использование socks5

socks5

Hostname это IP адрес вашего дроплета. Порт из конфига данте. Логин и пароль, тот который вы выбрали

Или например, можно использовать браузер Firefox, который из коробки умеет это, в отличии от Chrome и других браузеров на основе Chromium, которые не поддерживают прокси аутентификацию. А еще можно установить в него дополнительные расширения (тысячи их), которые позволять легко управлять прокси для разных сайтов.

Поднимаем сервера, делимся с друзьями. Учтите, что чем больше друзей использует ваш прокси-сервер, тем выше расход трафика.

Для начала стоит сразу определиться, что такое прокси и зачем он нужен. Proxy можно перевести, как «посредник». В данном контексте подразумевается компьютер-посредник, который стоит между пользователем, его обычным ПК и сетью Интернет.

Почему имеет смысл запускать прокси-сервер для Linux или отдельных приложений


Использовать такой метод для доступа в Интернет имеет смысл сразу по нескольким причинам. В первую очередь, подключение через сервер позволит оптимизировать скорость, а также имеет ряд других преимуществ:

  • пользователь может посещать сайты, запрещенные администратором сети ПК пользователя;
  • посещать сайты, серверы и узлы можно абсолютно анонимно, не оставляя следов в Сети;
  • посещать сайты, которые были заблокированы для пользователя.

Универсальные конфигурации серверов прокси для Linux

Самый простой и одновременно действенный способ – это использование командной строки для подключения к серверу. Иначе говоря, вы можете прописать прокси в Linux . Для этого необходимо:

Как настроить сервер прокси под Outlook


Для этого необходимо пройти в панель управления рабочей станцией, найти пункт «Сервис» в меню приложения «Почта». Далее необходимо проследовать в настройки учетных записей и здесь включить возможность настраивать сервер и его параметры вручную.

После этих манипуляций обычный вход через ярлык приложения будет запускать подключение уже в настроенной конфигурации.

Как можно пользоваться Skype через прокси


Для этого необходимо открыть настройки (обычно они спрятаны под кнопкой «Еще» или «…». Далее переходим в раздел параметры и там находим пункт «Сеть». Здесь находим пункт, касающийся прокси-настроек и там выставляем все данные вручную (порт и адрес).

Закончив настройку, можно начинать использовать дополнительные параметры безопасности:

  • выбрать уровень конфиденциальности;
  • сделать переадресацию звонков;
  • изменить другие значения, тем самым упростив работу с программой.

Но стоит помнить, что при использовании Skype через прокси, вы можете понижать стабильность работы программы (это зависит не от самого приложения, а от конкретного сервера, который вы используете).

Автоматическая настройка прокси сервера для серфинга

Для обычного серфинга под прокси подойдет любой из существующих браузеров. Для этого необходимо открыть настройки и:

Дальнейшие манипуляции для всех браузеров идентичные: для автоматической настройки прокси сервера необходимо прописать путь к удаленному или локальному Pac-файлу, в котором и находятся автоматические настройки.

В любом случае, для корректной работы любого приложения потребуется использовать корректный прокси-сервер. Говоря проще, таковой должен обладать:

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

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

На Линукс прокси сервер можно подключить при помощи ввода новых настроек в терминал. Ниже мы подробно разберем, какие данные нужно вводить в командную строку, чтобы правильно настроить прокси. За основу возьмем Kali Linux, но принцип настройки сервера-посредника будет идентичным на всех версиях этой операционной системы.

Настройка прокси Линукс: пошаговая инструкция

Для подключения прокси-сервера на этой операционной системе вам нужно выполнить следующие шаги:

  1. Откройте терминал.
  2. Введите туда фразу «sudo apt-get install git gcc» (без кавычек) и нажмите «Enter».

1.jpg

В будущем нажимайте клавишу «Enter» после ввода каждой новой команды.

2.jpg

3.jpg

4.jpg

5.jpg

6.jpg

7.jpg

8.jpg

9.jpg

Введите «leafpad /etc/proxychains.conf».

11.jpg

12.jpg

При выборе прокси старайтесь избегать прозрачных серверов (transparent). Они не обеспечат вам анонимность при работе в интернете, так как не скрывают действительный IP-адрес.

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

Первое число — это IP вашего прокси, второе — его порт. Пропуски такого плана делайте при помощи нажатия на кнопку «Tab».

13.jpg

14.jpg

Например, чтобы запустить на вашем компьютере браузер Firefox через прокси нужно ввести следующую фразу: «proxychains4 firefox».

15.jpg

Узнать текущий IP-адрес используемого прокси-сервера можно, введя фразу «proxychains4 wget -qO- eth0.me».

16.jpg

Настройка завершена! Теперь вы можете использовать прокси сервер на Линукс для повышения анонимности, защиты от различных видов сетевых атак и решения многих других задач.

Настройка брандмауэра

По умолчанию, в Ubuntu брандмауэр разрешает все подключения. Однако, если у нас настроен фаервол для запрета лишних соединений, необходимо открыть порт для прокси.

а) если используем Iptables.

iptables -I INPUT 1 -p tcp --dport 3128 -j ACCEPT

* если система вернет ошибку при вводе команды для сохранения правил, устанавливаем пакет командой apt-get install iptables-persistent.

б) если у нас firewalld.

firewall-cmd --permanent --add-port=3128/tcp

* 3128 — порт по умолчанию, по которому работает 3proxy в режиме прокси;

Установка и запуск 3proxy

3proxy отсутствует в репозиториях Ubuntu, поэтому для установки сначала необходимо скачать его исходник.

Для начала устанавливаем пакет программ для компиляции пакетов:

apt-get install build-essential

Переходим на официальную страницу загрузки 3proxy и копируем ссылку на версию пакета для Linux:

Копируем ссылку на версию пакета для Linux

. используя ссылку, скачиваем пакет:

* в моем случае будет скачена версия 0.9.3.

Распакуем скачанный архив:

tar xzf 0.9.3.tar.gz

Переходим в распакованный каталог:

Запускаем компиляцию 3proxy:

make -f Makefile.Linux

Создаем системную учетную запись:

adduser --system --disabled-login --no-create-home --group proxy3

Создаем каталоги и копируем файл 3proxy в /usr/bin:

mkdir -p /var/log/3proxy

cp bin/3proxy /usr/bin/

Задаем права на созданные каталоги:

chown proxy3:proxy3 -R /etc/3proxy

chown proxy3:proxy3 /usr/bin/3proxy

chown proxy3:proxy3 /var/log/3proxy

Смотрим uid и gid созданной учетной записи:

Получим, примерно, такой результат:

uid=109(proxy3) gid=113(proxy3) groups=113(proxy3)

* где 109 — идентификатор пользователя; 113 — идентификатор для группы.

Создаем конфигурационный файл:

setuid 109
setgid 113

nserver 77.88.8.8
nserver 8.8.8.8

nscache 65536
timeouts 1 5 30 60 180 1800 15 60

external 111.111.111.111
internal 111.111.111.111

log /var/log/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
rotate 30

* необходимо обратить внимание на настройки setuid и setgid — это должны быть значения для созданной нами учетной записи; external и internal — внешний и внутренний интерфейсы (если наш прокси работает на одном адресе, то IP-адреса должны совпадать).

Настройка браузера

Проверяем работоспособность нашего 3proxy. Для этого настраиваем браузер для работы через прокси-сервер, например, Mozilla Firefox:

Пример настройки Mozilla Firefox для работы через прокси

. пробуем открыть сайты.

Настройка автозапуска

Для автозагрузки 3proxy настроим его как сервис. Создаем файл в systemd:

[Unit]
Description=3proxy Proxy Server

[Service]
Type=simple
ExecStart=/usr/bin/3proxy /etc/3proxy/3proxy.cfg
ExecStop=/bin/kill `/usr/bin/pgrep -u proxy3`
RemainAfterExit=yes
Restart=on-failure

Обновляем конфигурацию systemd:

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

systemctl enable 3proxy

systemctl start 3proxy

Настройка аутентификации

Для редактирования настроек открываем конфигурационный файл:

Добавляем опции users и добавляем пользователей:

users 3APA3A:CL:3apa3a "test:CR:$1$qwer$CHFTUFGqkjue9HyhcMHEe1"
users dmosk1:CL:password
users "dmosk2:CR:$1$UsbY5l$ufEATFfFVL3xZieuMtmqC0"

* в данном примере мы добавили 3-х пользователей: 3APA3A с паролем 3apa3a, dmosk1 с открытым паролем password и dmosk2 с паролем dmosk2 в виде md5 и солью UsbY5l (Для получения хэша пароля можно воспользоваться командой openssl passwd -1 -salt UsbY5l, где в качестве соли можно использовать любую комбинацию).
* обратите внимание, при использовании знака $, строчка пишется в кавычках.

* возможные типы паролей:

  • CL — текстовый пароль
  • CR — зашифрованный пароль (md5)
  • NT — пароль в формате NT.

Чтобы включить запрос логина, необходимо поменять значение для опции auth на strong:

* возможные варианты для auth:

  • none — без авторизации.
  • iponly — авторизация по IP-адресу клиента.
  • nbname — по Netbios имени.
  • strong — по логину и паролю.

Также можно использовать двойную авторизацию, например:

auth nbname strong

После внесения изменений, перезапускаем службу:

systemctl restart 3proxy

SOCKS

Для прозрачного прохождения пакетов через прокси можно настроить SOCKS5. В конфигурационном файле добавляем:

* запускаем socks на порту 1080.

socks -p8083 -i192.168.1.23 -e111.111.111.111

* запускаем socks на порту 8083; внутренний интерфейс — 192.168.1.23, внешний — 111.111.111.111.

После перезапускаем сервис:

systemctl restart 3proxy

Настройка анонимности

Для обеспечения полной анонимности при использовании прокси-сервера, делаем дополнительные настройки.

1. Меняем порты, которые используются по умолчанию — 3128, 1080. Данные порты известны, как порты для прокси. Открываем конфигурационный файл 3proxy:

socks -p1088
proxy -n -p3111

* в данном примере мы укажем серверу работать на портах 3111 и 1088.

После перезапускаем сервис:

systemctl restart 3proxy

2. Необходимо, чтобы время на сервере совпадало с временем на компьютере.

На стороне сервера необходимо задать часовой пояс, например, если наш прокси находится в Германии, вводим:

timedatectl set-timezone Europe/Berlin

На стороне клиента либо меняем часовой пояс в системе, либо устанавливаем плагин для браузера, например, для Mozilla Firefox и меняем часовой пояс уже в нем.

3. Отключение icmp. По времени ответа на ping можно определить отдаленноесть клиента от прокси. Чтобы проверку нельзя было выполнить, отключаем на сервере icmp. Для этого создаем файл:

И применяем настройки:

sysctl -p /etc/sysctl.d/icmp.conf

4. Проверяем настройки.

Переходим к проверке анонимности прокси

Будет выполнена проверка анонимности нашего сервера.

Дополнительные настройки

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

Настройка портов и прокси-интерфейсов

При необходимости, можно настроить 3proxy на использование разных интерфейсов на разных портах:

proxy -n -a -p3128 -i192.168.0.23 -e222.222.222.222
proxy -n -a -p8080 -i192.168.1.23 -e111.111.111.111

* 3proxy будет слушать на порту 3128 с внутреннего интерфейса 192.168.0.23 и направлять пакеты в сеть Интернет через внешний интерфейс 222.222.222.222, а также, на порту 8080 для внутреннего и внешнего интерфейсов 192.168.1.23 и 111.111.111.111 соответственно.
* не забываем также настраивать брандмауэр (вначале инструкции мы открывали только 3128 порт).

systemctl restart 3proxy

Ограничение пропускной способности

При необходимости, можно ограничить скорость.

bandlimin 1000000 user1,user3
bandlimin 5000000 user2,user4

* в данном примере пользователям user1 и user3 установлено ограничение в 1000000 бит/сек (1 мбит); для user2 и user4 — 5 мбит/сек.

systemctl restart 3proxy

Ограничения доступа

Можно ограничить доступ и разрешить только для определенных портов, сетей и пользователей.

allow <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist> <weekdays> <timeperiodslist>
deny <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist> <weekdays> <timeperiodslist>

  • userlist — список пользователей через запятую.
  • sourcelist — сети клиентов через запятую.
  • targetlist — сети назначения через запятую.
  • targetportlist — порты назначения через запятую.
  • commandlist — команды, к которым применяется правило.
  • weekdays — в какие дни недели работает правило. 0 - 6 — Пн - Вс, 7 — тоже Вс.
  • timeperiodslist — время, когда работает правило. Указываются диапазоны.

* в данном примере пользователям user1 и user3 установлено ограничение в 1000000 бит/сек (1 мбит); для user2 и user4 — 5 мбит/сек.

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

maxconn 700
proxy -n -a -p3128 -i192.168.0.23 -e222.222.222.222
proxy -n -a -p8080 -i192.168.1.23 -e111.111.111.111

* таким образом, мы установим 700 максимальных соединений для прокси на порту 3128 и 700 — для proxy на порту 8080.

Читайте также: