Перейти к содержимому

Как написать свой vpn на python

  • автор:

Свой VPN сервер дома

Последнее время вижу очень много статей на тему vds с впн для тех или иных задач.

В основном людям нужен такой сервер для обычного неторопливого серфинга.

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

1) Создаем отдельную виртуальную машину с ОС linux, например ubuntu.

2) Настроим машину, все команды выполняются от root.

echo net.ipv4.ip_forward=1 > /etc/sysctl.conf sysctl -p
apt update && apt install iptables-persistent -y systemctl enable iptables systemctl start iptables

Можно очистить все текущие правила если вы понимаете зачем это делаете

iptables -F -t nat && iptables -F

Базовые правила которые нужны для работы:

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

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 9051 iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 9051 iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 9053 iptables -t nat -A POSTROUTING -o ens18 -j MASQUERADE 

Установим tor и obfsproxy

apt install obfs4proxy tor -y systemctl enable tor

Обратите внимание что в конфиге используются Bridge, если с этими не заработает можно взять здесь.

 cat /etc/tor/torrc DataDirectory /var/lib/tor Log notice file /var/log/tor/notice.log VirtualAddrNetworkIPv4 10.192.0.0/10 AutomapHostsOnResolve 1 SocksPort 0.0.0.0:9052 TransPort 0.0.0.0:9051 DNSPort 0.0.0.0:9053 ClientTransportPlugin obfs4 exec /usr/bin/obfs4proxy Bridge obfs4 94.140.115.5:443 28CA5C42872FD6FBEDA9658F2A63618776A54416 cert=GYIbAY5uvHsfB9lBMGOS9/0+nU3uIO+DdxBZsOWwfwZsjUlxz3YIOqFKQg5GRzINiy1jAw iat-mode=0 Bridge obfs4 162.19.245.215:42001 9953E998B6C65012A49A6B48BE42065E6559804A cert=vBTn9bnFVGxcL067lP3zwqkN1gKv9VsKVZIgUIYOirVXd0D2KaPQnZjgKTgIt1sk1sZyFA iat-mode=0 UseBridges 1 # для жителей СНГ рекомендую исключить Exit-ноды следующих стран ExcludeExitNodes ,, EOF cat /etc/tor/torsocks.conf TorAddress 127.0.0.1 TorPort 9050 OnionAddrRange 127.42.42.0/24 EOF systemctl restart tor 

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

tail -f /var/log/tor/notice.log

Если увидели Bootstrapped 100% (done) : Done значит все хорошо.

Далее нам нужно установить любой удобный вам vpn, я предпочитаю этот.

apt install wget -y wget https://raw.githubusercontent.com/hwdsl2/setup-ipsec-vpn/master/vpnsetup_ubuntu.sh -O vpn.sh && sh vpn.sh 

Скрипт выведет вам настройки для подключения. ip адрес локальной машины можете посмотреть через команду ip a .

Сохраним правила iptables

iptables-save > /etc/iptables/rules.v4

Если ваш сервер доступен по публичному адресу рекомендую немного настроить безопасность:

# разрешаем ssh iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT # разрешаем весь трафик через впн соединения iptables -A INPUT --in-interface ppp+ -j ACCEPT iptables -A INPUT --in-interface lo -j ACCEPT # запрещаем все что не разрешили iptables -P INPUT DROP # сохраним правила iptables-save > /etc/iptables/rules.v4 

На всякий случай выложу полный листинг правил iptables.

# Generated by iptables-save v1.8.4 on Fri May 12 08:00:50 2023 *nat :PREROUTING ACCEPT [41:9322] :INPUT ACCEPT [22:3346] :OUTPUT ACCEPT [39:2458] :POSTROUTING ACCEPT [27:1638] -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 9051 -A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 9051 -A PREROUTING -p udp -m udp --dport 53 -j REDIRECT --to-ports 9053 -A POSTROUTING -s 192.168.42.0/24 -o ens18 -j MASQUERADE -A POSTROUTING -s 192.168.43.0/24 -o ens18 -m policy --dir out --pol none -j MASQUERADE -A POSTROUTING -o ens18 -j MASQUERADE COMMIT # Completed on Fri May 12 08:00:50 2023 # Generated by iptables-save v1.8.4 on Fri May 12 08:00:50 2023 *filter :INPUT DROP [2:256] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [348:126087] -A INPUT -p udp -m udp --dport 1701 -m policy --dir in --pol none -j DROP -A INPUT -m conntrack --ctstate INVALID -j DROP -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -p udp -m multiport --dports 500,4500 -j ACCEPT -A INPUT -p udp -m udp --dport 1701 -m policy --dir in --pol ipsec -j ACCEPT -A INPUT -p udp -m udp --dport 1701 -j DROP -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -i ppp+ -j ACCEPT -A INPUT -i lo -j ACCEPT -A FORWARD -m conntrack --ctstate INVALID -j DROP -A FORWARD -i ens18 -o ppp+ -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i ppp+ -o ens18 -j ACCEPT -A FORWARD -i ppp+ -o ppp+ -j ACCEPT -A FORWARD -d 192.168.43.0/24 -i ens18 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A FORWARD -s 192.168.43.0/24 -o ens18 -j ACCEPT -A FORWARD -s 192.168.43.0/24 -o ppp+ -j ACCEPT -A FORWARD -j DROP COMMIT # Completed on Fri May 12 08:00:50 2023 

UPD для тех кто читает через слово или видит ФР хостинг и пугается:

  • трафик выходит через tor, блокировки запрещенных ресурсов обходятся.
  • статья что это еще один способ который подойдет для некоторых ситуаций, а не лучший итп

VPN сервер, создание VPN подключения

Каким образом можно создать VPN сервер, к которому можно создать подключение через Питон?

Отслеживать

16.5k 4 4 золотых знака 19 19 серебряных знаков 30 30 бронзовых знаков

задан 24 июн 2018 в 14:27

Jedi Knight Jedi Knight

281 3 3 серебряных знака 14 14 бронзовых знаков

Так вопрос в создании сервера или в подключении к серверу средствами python?

24 июн 2018 в 15:31

Скорее в подключении средствами

24 июн 2018 в 15:46

Запустить из питона программу или батник/скрипт, который в свою очередь запустит vpn-клиента, поднимет туннельные интерфейсы и т.д. и т.п. А если найдёте системные вызовы для этого и как вызывать их из питона, то будет ещё лучше.

5 июл 2022 в 2:34

если подключаемся средствами ОС, то какой ОС?

2 ноя 2022 в 7:16

а так то щас как напишу впн сервер и клиента на питоне — тут на часик делов то

2 ноя 2022 в 7:19

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Попробуй через http.server:

import http.server import urllib PORT = 9097 class MyProxy(http.server.SimpleHTTPRequestHandler): def do_GET(self): url=self.path[1:] self.send_response(200) self.end_headers() self.copyfile(urllib.urlopen(url), self.wfile) httpd = socketserver.ForkingTCPServer(('', PORT), MyProxy) print ("Now serving at", str(PORT)) httpd.serve_forever()``` 

Как написать свой vpn на python

1.1. Установка Pritunl

Обновим список пакетов и систему (в статье используется Ubuntu 20):

�� Как за 3 простых шага создать свой VPN и прокси-сервер

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

Установка Pritunl

Сгенерируем пару логин/пароль:

Вход в веб-интерфейс Pritunl

1.2. Настройка Pritunl

Чтобы начать пользоваться Pritunl нужно:

  1. Создать сервер Pritunl.
  2. Создать организацию и прикрепить ее к серверу.
  3. Создать пользователя и прикрепить его к организации.

Создание сервера

Чтобы создать сервер, перейдем во вкладку Servers → Add Server и активируем вкладку Advanced :

Создание сервера в Pritunl

Создание организации

Перейдем во вкладку Users → Add Organization и добавим новую организацию:

Создание организации в Pritunl

Прикрепим организацию к серверу. Для этого перейдем во вкладку Servers → Attach Organization :

Прикрепление организации к серверу в Pritunl

Нажмем на кнопку Start для запуска сервера.

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

Чтобы создать пользователя, перейдем во вкладку Users → Add User :

Создание пользователя в Pritunl

1.3. Раздаем ключи

Чтобы подключиться к VPN, скачаем и установим клиент для своей ОС pritunl.com/platforms . Вернемся к серверу и перейдем во вкладку Users → Add User , и кликнем по значку цепочки:

Раздача ключей в Pritunl

Раздача ключей в Pritunl

Вставим URI-ссылку в клиент и подключимся к VPN:

Соединение с сервером Pritunl

Мы подключились к серверу.

2. Shadowsocks и Outline

Outline создан стартапом Jigsaw, примкнувшим к компании Google. Под капотом у Outline находится протокол Shadowsocks, который маскирует данные под HTTPS-трафик.

Для установки Outline потребуется Docker.

2.1. Установка Docker

Обновим список пакетов и систему:

Установка менеджера Outline

Выберем Настройте Outline где угодно:

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

Чтобы установить Outline, введем на сервере команду из пункта 1:

Команда для установки Outline на сервер

После установки Outline мы получим строчку с инфой о нашем Outline-сервере в формате JSON:

�� Как за 3 простых шага создать свой VPN и прокси-сервер

Скопируем JSON-строку, вставим ее во второе поле Менеджера Outline и нажмем Готово.

�� Как за 3 простых шага создать свой VPN и прокси-сервер

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

Менеджер Outline

2.3. Раздаем ключи

Скачаем и установим клиент Outline :

Установка клиента Outline

Откроем менеджер Outline и скопируем ключ в клиент Outlline:

Подключение к серверу Outline Подключение к серверу Outline

�� Как за 3 простых шага создать свой VPN и прокси-сервер

Если в Windows 10 клиент Outline не подключается к серверу, то нужно отключить Hyper V . Для этого откроем PowerShell от имени администратора и введем:

Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Hypervisor 

В этой статье мы научились:

  • создавать VPN-соединение с помощью Pritunl;
  • создавать прокси-сервер, используя Outline;
  • раздавать VPN и прокси другим пользователям.

Материалы по теме

  • Как поставить Joomla 4 на выделенный сервер VDS/VPS?
  • Как работает прокси-сервер: максимально простое объяснение
  • Что такое кибербезопасность и почему за этой профессией будущее?
  • Зашифрованный трафик тоже можно вскрыть: рассказываем, как сделать это безопасно
  • GPG и все-все-все: настраиваем шифрование переписки за 10 минут по методу Кристофера Робина

Инструкция: как настроить и запустить собственный VPN-сервер за 15 минут, даже если вы не разбираетесь в программировании

Заботитесь о безопасности и анонимности в сети? Тогда лучше не полагайтесь на сторонние VPN-сервисы — запустите свой. Здесь найдете короткую инструкцию.

Обложка поста Инструкция: как настроить и запустить собственный VPN-сервер за 15 минут, даже если вы не разбираетесь в программировании

Материал предоставлен Нуру Набиевым, нашим подписчиком

На фоне новых законов о регулировании трафика все больше людей начинают волноваться о своей конфиденциальности в сети. Однако это не означает, что вы должны платить большие деньги VPN-сервисам и туннелировать весь ваш интернет-трафик через незнакомые VPN-серверы. В этой статье я расскажу о создании собственного VPN-сервера за 15 минут.

VPN не делает вас анонимным пользователем интернета

Так что же такое тогда VPN и для чего она нужна? В этой части статьи я кратко расскажу о функции VPN, а далее разберемся с настройкой собственного сервера.

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

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

Вот почему я не рекомендую подписываться на незнакомые вам VPN-сервисы и еще и платить им — третьи лица могут продавать ваши данные налево и направо.

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

Но VPN-сервисы могут быть и полезны. Иногда вы не можете получить доступ к веб-сайту из общедоступной сети, так как он заблокирован. Например, если вы находитесь в Китае, то вам придется использовать VPN, чтобы иметь доступ к своей учетной записи Gmail.

Инструкция: настраиваем и запускаем собственный VPN-сервер

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

Я создал VPN-сервер на DigitalOcean, это сервер Scaleway в связке с Amazon Web Services. Через пару минут после этого я уже смог подключиться ко всем этим VPN-сетям с моего Mac и iPhone.

Algo VPN автоматизирует процесс установки VPN, поэтому вам не нужно устанавливать соединение SSH с сервером и запускать сложные командные строки.

Для начала, вы должны подписаться на облачного провайдера (в данном случае это DigitalOcean) и запустить мастер настройки Algo VPN на вашем терминале. Я подробно опишу процесс установки позже, однако он может измениться после публикации этого поста. Все объявления можете найти в официальном репозитории GitHub.

В DigitalOcean нам не нужно создавать и настраивать собственный сервер. Algo VPN позаботится об этом для нас, так как он использует API DigitalOcean для создания сервера и установки всего необходимого для VPN.

В конце установки вы получите несколько файлов на локальном жестком диске. Например, в macOS двойной щелчок на профиле конфигурации добавит VPN-сервер к вашим сетевым настройкам и подключит вас к вашему VPN-серверу. Вам не нужно устанавливать VPN-клиент, он работает изначально на macOS и iOS.

Подробная инструкция со скриптами

1. Создайте учетную запись на хостинг-провайдере DigitalOcean.

Algo поддерживает DigitalOcean (наиболее доверенный), Amazon EC2, Google Compute Engine, и Microsoft Azure.

2. Загрузите Algo VPN на свой локальный компьютер.

Содержимое архива разархивируйте в отдельную директорию.

3. Установите зависимости с командной строкой на этой странице.

Откройте терминал. Интерпретатор python, который вы используете для развертывания Algo, должен быть второй версии. cd в algo-master директорию (где вы разархивировали Algo), далее:
Для macOS:

$ python -m ensurepip --user $ python -m pip install --user --upgrade virtualenv 

Для Linux (deb-based):

$ sudo apt-get update && sudo apt-get install build-essential libssl-dev libffi-dev python-dev python-pip python-setuptools python-virtualenv –y 

Более подробная информация для каждой ОС содержится в официальной документации.

4. Установите остальные зависимости Algo для вашей операционной системы.

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

$ python -m virtualenv env && source env/bin/activate && python -m pip install -r requirements.txt 

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

5. Укажите пользователей, которых вы хотите создать.

Откройте config.cfg в вашем любимом текстовом редакторе, после чего укажите пользователей в списке users .

6. Начинайте развертывание.

Вернитесь к своему терминалу. В директории Algo запустите ./algo и следуйте инструкциям. Существует несколько дополнительных функций. Эти дополнительные функции более подробно описаны в ROLES.md (на GitHub).

На этом все! Подробную инструкцию вы сможете найти в официальном репозитории GitHub.

Одноразовые VPN

Запуск собственного VPN-сервера не означает, что вы будете в полной безопасности в Интернете. Еще раз, вы переносите ваш риск на туннель к провайдеру облачного хостинга.

Если вы используете Algo VPN для Microsoft Azure, Роскомнадзор или АНБ может запрашивать у Microsoft дополнительную информацию о вас, если они посчитают это необходимым. Не забывайте, что у Microsoft есть ваша платежная информация.

Но в Algo VPN есть возможность настроить одноразовые VPN. Вы можете загрузить новый VPN-сервер и подключиться к этой VPN всего за несколько минут. Как только вы закончите, вы можете просто удалить свой экземпляр и сделать вид, что этот VPN-сервер никогда не существовал.

Это намного дешевле, чем подписка на услугу VPN, оплата которой стоит около 0,006 долл. США за час использования или даже меньше. И вы получите гораздо лучшую производительность, так как вы не будете передавать свой VPN-сервер другим пользователям VPN. Я добился удивительных сетевых характеристик от моего сервера AWS VPN:

Инструкция: как настроить и запустить собственный VPN-сервер за 15 минут, даже если вы не разбираетесь в программировании 1

Хотя Algo VPN упрощает настройку VPN-сервера на DigitalOcean, AWS, Microsoft Azure и Google Cloud, он отлично справится и на самом маленьком облачном сервере под Ubuntu.

UPD от 13 апреля 2018 г.
Ещё более быстрый способ развёртывания собственного VPN:

  • Заходим на DigitalOcean и регистрируемся по этой ссылке (да, она реферальная, но вы получите 10 долларов на счёт);
  • Затем заходим сюда и логинимся через DO;
  • В итоге скрипт соберёт дроплет с VPN и после установки предоставит вам все необходимые настройки.

Готово, можно пользоваться!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *