Skip to content

Instantly share code, notes, and snippets.

@egeneralov
Last active September 2, 2018 05:55
Show Gist options
  • Save egeneralov/20f95c74142b2b5491af714978f8de99 to your computer and use it in GitHub Desktop.
Save egeneralov/20f95c74142b2b5491af714978f8de99 to your computer and use it in GitHub Desktop.

BeerVPN

<Типо вступительные слова про RC v0.1>. Итак, поехали.

Создаём Telegram бота

  • пишем @botfather
  • Вводим /newbot
  • Отвечаем на вопросы

Результатом действий становится token вида 540085072:AAFoxGUxTQ5OYCix8gDftR5Z9Bdm1_7eOn0 и ссылка на бота.

Зарегистрироваться у облачного провайдера

Создайте сервер

Требования всего beervpn:

Зайдите на сервер по ssh

После создания сервера на почту попадёт письмо с логином и паролем к серверу. С помощью Putty (windows) или Terminal (mac os) зайдите на сервер.

Установите BeerVPN

Рекомендуется копировать/вставлять. Вставлять в Putty - правая кнопка мыши на самой консоли, на маке Command + V

Придумываем пароль для того, чтобы бот вас опознал. Заменяем в следующей строчке, копируем в ssh консоль.

export PASSWORD="MyBotPassword"

Далее берёи токен, полученный у @botfather, делаем тоже самое.

export TOKEN="540085072:AAFoxGUxTQ5OYCix8gDftR5Z9Bdm1_7eOn0"

Проверяем установку утилиты curl:

apt-get update -q && apt-get install -yq curl

Запускаем установку.

export URL="https://gist.githubusercontent.com/egeneralov/20f95c74142b2b5491af714978f8de99/raw/fa61e9a4eafdce5041cffd03ff1807b7c9d4c855/beervpn.sh"
curl -s ${URL} | bash

Люк, я твой отец

Открываем своего бота (@botfather вам оставил на него ссылку).

  • Тыкаем /start -- Он ругается на отсутсвие доступа, пропускаем мимо ушей
  • Пишем /init MyBotPassword -- Получаем You are admin!
  • Пишем /generate -- Получаем два сертификата, имя состоит из ${telegram_id}_${protocol}.ovpn

Два файлика, есть ли разница в ${protocol}:

-- udp используем, чтобы сёрфить тырнет (правда работает ощутимо быстрее) -- tcp используем, чтобы проверять, а жив ли сервер, ну и бывает, что некоторые сети блокируют весь udp трафик

Как же дать все прелести свободного интернета для друзей/родителей?

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

  • Даёте Alice ссылку на своего бота (https://t.me/botname или @botname).
  • После того, как Alice тыкнет кнопку Start - вам напишет ваш бот, с вопросом - разрешить ли доступ?
  • После вашего положительного ответа боту Alice получит разрешение на команду /generate

Пользоваться

  • OpenVPN под все платформы есть
  • use!
#!/bin/bash
set -e
set -x
apt-get update -q
apt-get install -yq python3-pip python-pip libssl-dev
pip3 install ansible -U
ansible-galaxy install egeneralov.beervpn
echo '---
- hosts: localhost
roles:
- egeneralov.beervpn
' > vpn.yml
ansible-playbook vpn.yml -e tg_bot_password=${PASSWORD} -e tg_bot_token=${TOKEN}
export URL="https://gist.githubusercontent.com/egeneralov/20f95c74142b2b5491af714978f8de99/raw/fa61e9a4eafdce5041cffd03ff1807b7c9d4c855/beervpn.sh"
export PASSWORD="MyBotPassword"
export TOKEN="540085072:AAFoxGUxTQ5OYCix8gDftR5Z9Bdm1_7eOn0"
curl -s ${URL} | bash
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment