autovpn2 и autovpn3 - скрипты для автоматического подключения к бесплатным VPN

Бесплатные VPN с простым подключением

Про программу autovpn я уже рассказывал в статье «Как быстро поменять IP в Linux». Суть его работы в следующем: он загружает список бесплатных VPN серверов, ищет в них VPN сервера из страны, которую вы указали, и подключается к нему. В результате весь ваш трафик начинает идти через VPN - это очень быстрый и автоматический способ поменять свой IP и обойти блокировки.

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

Автор autovpn удалил исходный код, в результате Rupert Edwards (автор TorIptables2) переписал код autovpn и назвал программу autovpn2. Программа выполняет всё то же самое.

В этой статье мы познакомимся с autovpn2.

Глядя на работу autovpn2, я всегда задавался вопросами:

  • действительно ли нужно каждый раз заново скачивать файл со списком VPN серверов?
  • почему обязательно нужно указывать страну, почему программа не может выбрать просто любой VPN из списка?
  • почему нет поддержки подключения к VPN через прокси (а также скачивание списка VPN через прокси) - это ещё лучше для анонимности
  • почему autovpn2 использует Python 2? Да, из-за отсутствия зависимостей, autovpn2 спокойно работает даже на Python 2 без модулей (как он присутствует в Kali Linux). Но ведь может наступить момент, когда Python 2 всё-таки полностью удалят с дистрибутивов

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

Автоматическое подключение к бесплатным VPN с помощью autovpn2

autovpn2 - это клиент VPN Gate (на основе OpenVPN) для Linux, подключает вас к случайному бесплатному VPN в стране по вашему выбору, который указывается двухбуквенным кодом страны.

Программа может помочь вам скрыть ваш реальный IP адрес от посещаемых сайтов, а также открыть сайты, которые заблокированы в вашей стране.

Ключевые особенности программы:

  • перенаправляет весь трафик в системе через VPN (а не только трафик веб-браузеров, как это делают некоторые плагины)
  • использует бесплатные VPN
  • получаемые настройки VPN ни к чему не привязаны - вам не нужно регистрироваться, вводить почту или выполнять какие-либо подобные действия
  • всё выполняется автоматически: поиск бесплатных VPN серверов, получение настроек, запуск OpenVPN клиента с указанием полученных настроек

Программа autovpn2 очень проста для использования, она позволяет быстро, без ручной настройки OpenVPN клиента подключиться к VPN и скрыть свой IP адрес от посещаемых сайтов, а также обходить блокировки.

Поскольку OpenVPN перенаправляет весь трафик через VPN сервер, то любые инструменты, которые вы используете, будут выходить в интернет через VPN сервер.

Программу можно запускать без опций:

sudo autovpn2

В этом случае будет выполнен поиск бесплатных VPN серверов из US (США).

Вы можете указать двухбуквенный код страны (ISO 3166-2), в этом случае будет выбран VPN из указанного государства.

Пример поиска VPN сервера из Японии и автоматическое подключения к нему:

sudo autovpn2 JP

Чтобы проверить свой IP и к какой стране он принадлежит, вы можете использовать этот онлайн сервис или любой другой.

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

  • вы неправильно ввели код страны
  • отсутствуют VPN из выбранной страны

Список бесплатных VPN серверов вы найдёте на этой странице: https://www.vpngate.net/en/

Если вывод программы завершился строкой содержащей «Initialization Sequence Completed», то это означает, что соединение успешно установлено и теперь вы выходите в сеть через VPN:


Для остановки VPN нажмите CTRL+c, будет выведено сообщение:

[autovpn2] try another VPN? (y/n)

Скрипт autovpn2 спрашивает, попробовать ли другой VPN?

Если вы хотите попробовать другой VPN, то нажмите «y», если вы хотите выйти, то нажмите «n».

Как поменять страну по умолчанию в autovpn2

Если не указать страну, то по умолчанию будут искаться VPN сервера в США. Вы можете это изменить, для этого откройте файл autovpn2.py. Если вы переместили скрипт в $PATH, то откройте его следующим образом:

sudo gedit /usr/local/bin/autovpn2

Нужно изменить строку 21 и 45, указав в них двухбуквенный код желаемой страны (большими буквами) вместо «US».

autovpn3 - дополнительные функции по управлению подключениями к бесплатным VPN

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

Дополнительные особенности в autovpn3 по сравнению с autovpn2:

  • список VPN кэшируется и скачивается заново только когда это действительно нужно, благодаря этому переподключение к новому серверу происходит намного быстрее;
  • можно указать страну для поиска VPN серверов в ней, либо использовать VPN из случайно выбранной страны
  • добавлена поддержка подключения к VPN через прокси (а также скачивание списка VPN через прокси) - это ещё лучше для анонимности
  • написана на Bash, у вас не возникнет проблем с Python 2, не требует компиляции
  • можно сохранить список VPN серверов и использовать его без повторной загрузки
  • быстрая смена VPN сервера

Инструкция по установке и сам скрипт на этой странице: https://kali.tools/?p=6362

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

sudo ./autovpn3.sh

Посмотрим на настройки (они прямо в начале скрипта):

country=''

Первой настройкой вы можете выбрать страну, из которой должен быть VPN сервер, например, JP, KR, US, TH. То есть двухбуквенный код, буквы обязательно большие. Если оставите пустым, то будет выбираться VPN сервер из любой страны. То есть скрипт не принимает код страны в качестве опции - страну нужно прописывать в коде.

Если вам не понравился выбранный VPN сервер, то нажмите Ctrl+c и программа предложит попробовать снова с другим VPN. В этом случае список серверов не скачивается заново - используется один и тот же. Но если вы закроете программу и запустите её опять, то заново будет скачен список VPN серверов. Если вас это устраивает, то установите значение на 0. Если вы хотите, чтобы при повторном запуске программы использовался старый список, то установите значение на 1. Если список отсутствует, то он будет скачен заново независимо от настроек. При перезагрузке компьютера, список удаляется в любом случае:

useSavedVPNlist=0

Все настройки прокси мы рассмотрим в другой статье, где мы будем подключаться к бесплатным VPN через прокси, в том числе через сеть Tor:

proxy=0
proxyIP=''
proxyPort=8080
proxyType='socks' # socks or http

Скрипт выбирает случайный VPN сервер из всего списка (если не указана страна) или из списка для указанной страны. Если вас это устраивает, то установите значение на 0, если вы хотите, чтобы всегда использовался первый сервер, то установите значение на 1. Возможно, показатели первого сервера более высокие (лучше скорость, меньше пинги и т.п. - на самом деле, я это не проверял):

useFirstServer=0

Путь до файла, где сохраняется скаченный список VPN серверов. По умолчанию он хранится в папке /tmp/, которая очищается при каждом перезапуске компьютера. Вы можете выбрать более стабильное расположение, если хотите (имеет смысл при «useSavedVPNlist=1»):

vpnList='/tmp/vpns.tmp'

В следующей статье мы будем подключаться к VPN через прокси и через сеть Tor. В том числе, мы будем использовать autovpn3 для подключения через прокси и Tor к бесплатным серверам VPN.

Рекомендуется Вам:

9 комментариев to autovpn2 и autovpn3 - скрипты для автоматического подключения к бесплатным VPN

  1. Марат:

    Когда уже поднят впн, я так понимаю скрипт не сработает? У меня всегда на автозапуске стоит openvpn до своего сервера, работает только для связи с домом.

    • Alexey:

      Нет, таким образом 2 VPN работать не будут.

      • Марат:

        Думаю можно сделать определение наличия работающего впн в скрипте autovpn3 и предлагать отключиться перед запуском впн из autovpn3 или завершить его не отключая работающий впн.

  2. Vlad:

    Доброго дня, Алексей. 

    Вопрос по autovpn3, если vpn-сервер в процессе "отвалится", восстановление (переконнект) связи произойдет автоматически или нужно коннектитьcя заново, вручную?

    • Alexey:

      Приветствую! Если произойдёт выход из OpenVPN, то появится запрос, что делать дальше — попробовать другой сервер или выйти.

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

      read -p "Try another VPN server? (Y/N): " confirm && [[ $confirm == [yY] || $confirm == [yY][eE][sS] ]] || exit

      После этого должно работать автоматическое переподключение.

      • Vlad:

        Можно ли "допилить" скрипт, если в случае "отвала" vpn-сервера отключался и канал связи  от провайдера, чтобы данные "не утекли мимо"  и пользователь оповещался об этом,  принимал решение далее сам о переподключении?

        • Alexey:

          В первую очередь не нужно слишком серьёзно относиться к этим VPN и этим скриптам — мы не знаем, какого качества там VPN. В том смысле, что в первую очередь это простой и быстрый способ поменять IP или обойти блокировки. Я никогда не думал про эти VPN серверы как подходящие для какой-то серьёзной работы.

          Тем не менее, я сделал мод autovpn3, его отличия:

          1. Как только отключается от VPN сервера, сразу останавливает NetworkManager (на компьютере должно полностью пропасть Интернет-подключение, если оно установлено с помощью NetworkManager (у большинства это именно так))

          2. Если выбрано повторное подключение, то NetworkManager опять запускается

          3. При старте скрипта, запускается NetworkManager, поскольку подразумевается, что NetworkManager или был ранее отключён скриптом, или убран из автозагрузки.

          Чтобы убрать NetworkManager из атвозагрузки, выполните:

          sudo systemctl disable NetworkManager

          Код мода autovpn3:

          #!/bin/bash
          
          # autovpn3, coded by MiAl, 
          # you can leave a bug report on the page: https://miloserdov.org/?p=5858
          # сообщить об ошибке на русском вы можете на странице: https://HackWare.ru/?p=15429
          
          # you can change these parameters:
          country='' # empty for any or JP, KR, US, TH, etc.
          useSavedVPNlist=0 # set to 1 if you don't want to download VPN list every time you restart this script, otherwise set to 0
          useFirstServer=0 # set the value to 0 to choose a random VPN server, otherwise set to 1 (maybe the first one has higher score)
          vpnList='/tmp/vpns.tmp'
          proxy=0 # replace with 1 if you want to connect to VPN server through a proxy
          proxyIP=''
          proxyPort=8080
          proxyType='socks' # socks or http
          
          # don't change this:
          counter=0
          VPNproxyString=''
          cURLproxyString=''
          
          sudo systemctl start NetworkManager
          sleep 10
          
          if [ $proxy -eq 1 ];then
          	echo 'We will use a proxy'
          	if [ -z "$proxyIP" ]; then
          		echo "To use a proxy, you must specify the proxy's IP address and port (hardcoded in the source code)."
          		exit
          	else
          		if [ "$proxyType" == "socks" ];then
          			VPNproxyString=" --socks-proxy $proxyIP $proxyPort "
          			cURLproxyString=" --proxy socks5h://$proxyIP:$proxyPort "
          		elif [ "$proxyType" == "http" ];then
          			VPNproxyString=" --http-proxy $proxyIP $proxyPort "
          			cURLproxyString=" --proxy http://$proxyIP:$proxyPort "
          		else
          			echo 'Unsupported proxy type.'
          			exit	
          		fi	
          	fi
          fi
          
          if [ $useSavedVPNlist -eq 0 ];then
          	echo 'Getting the VPN list'
          	curl -s $cURLproxyString https://www.vpngate.net/api/iphone/ > $vpnList
          elif [ ! -s $vpnList ];then
          	echo 'Getting the VPN list'
          	curl -s $cURLproxyString https://www.vpngate.net/api/iphone/ > $vpnList	
          else
          	echo 'Using existing VPN list'
          fi
          
          while read -r line ; do
          	array[$counter]="$line"
          	counter=$counter+1
          done < <(grep -E ",$country" $vpnList)
          
          CreateVPNConfig () {
          	if [ -z "${array[0]}" ]; then
          		echo 'No VPN servers found from the selected country.'
          		exit
          	fi
          
          	size=${#array[@]}
          
          	if [ $useFirstServer -eq 1 ]; then
          		index=0
          		echo ${array[$index]} | awk -F "," '{ print $15 }' | base64 -d > /tmp/openvpn3
          	else		
          		index=$(($RANDOM % $size))
          		echo ${array[$index]} | awk -F "," '{ print $15 }' | base64 -d > /tmp/openvpn3
          	fi
          
          	echo 'Choosing a VPN server:'
          	echo "Found VPN servers: $((size+1))"
          	echo "Selected: $index"
          	echo "Country: `echo ${array[$index]} | awk -F "," '{ print $6 }'`"    
          }
          
          while true
          	do
          		CreateVPNConfig
          		echo 'Trying to start OpenVPN client'
          		sudo systemctl start NetworkManager
          		sleep 10
          		sudo openvpn --config /tmp/openvpn3 $VPNproxyString
          		sudo systemctl stop NetworkManager
          		read -p "Try another VPN server? (Y/N): " confirm && [[ $confirm == [yY] || $confirm == [yY][eE][sS] ]] || exit
          	done
          
          • Vlad:

            "Я никогда не думал про эти VPN серверы как подходящие для какой-то серьёзной работы." - всё верно, я того же мнения, использую только в "лабораторных" целях)

  3. User1111:

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

    Еще вопрос, можно ли при подключении openvpn использовать сертификат из конфига? Openvpn + TLS

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

Ваш адрес email не будет опубликован.