Всем доброго времени суток. При поиске бесплатного впн всегда сталкиваемся с некими проблемами: ограничение трафика, времени, скорости и т.д. Но все же хочется комфортно использовать впн для просмотра ютуба, вк, фейбука и прочего добра. Мне кажется, что такого бесплатного впна не существует. Из бесплатных, наверное, самый популярный это фриопенвпн (freeopenvpn.org). Это очень хороший впн, который можно проксифицировать, ведь он может работать по tcp. Этот впн имеет два ограничения – скорость и время работы (около 2мб\с и вводить пароль с каптчи раз в 10-12 часов). Вечерами скорость обычно просаживается до полумегабита. С этим ничего нельзя поделать, ну разве что купить премиум. И как-то пришла идея, а почему бы не запустить еще такой же впн и распределить нагрузку между ними, и тем самым расширить канал. Создадим виртуальные машины Route I – receiver – принимает трафик от машин с впн Vpn I nl, Vpn I uk, Vpn I usa – машины на которых запущены впн Vpn I receiver – принимает трафик от ютуба, вк и прочего, затем распределяет его между впн. Что же касается настройки, рассмотрим машины приема трафика от впн. Тут все просто, ccproxy и proxifier На машинах с впн еще нужен файервол, для ограничения трафика, ведь ос windows будет стремится обновится, проверить активацию и т.д. Режим все кроме нужд впн, службы времени, прокси сервера. Еще важный момент, в конфиге впн-файла прописаны доменные имена, нам нужно изменить их на ip. Это сделаем для упрощения, чтобы не вводить днс сервер и не прописывать дополнительные правила для файерволов И рассмотрим машину, которая делит трафик между впнами. Разделение трафика происходит с помощью проксифайера, а именно создание прокси цепочки и присвоение ей атрибута load balancing Почему не ставим файерволы на все машины, а только на некоторые? Да потому, что они там попросту не нужны, а только усложнят прописку правил. Так как машины находятся в изолированной внутренней сети, и не могут быть подвергнуты атакам из вне. Также на них отсутствует основной шлюз, что препятствует протеканию трафика «самоходом», ведь трафику попросту некуда идти, так как отсутствует направление. Такие машины имеют высокую степень безопасности и без файерволов В отличии от машин на которых установлены впн клиенты, там необходим любой маршрут по умолчанию, для работы впна, например, поставим основной шлюз на nl машине на машину «route I – receiver». Трафик будет стучаться на машину, но зайдет в тупик и некому не навредит В статье рассказано про три конфига - nl, uk, usa. Это не означает, что нельзя использовать один и тот же конфиг три или более раз. Конечно можно, тем самым будет легче вводить код авторизации один для всех, нежели для каждого отдельно. Но все же рекомендую использовать разные конфиги, так как нагрузка на сервера разная. Сегодня может еле-еле работать uk сервер, а завтра usa. vk.com/id58924119
Извращенство какое-то. И в добавок у вас в цепи "слабое звено" есть, откройте географическую карту и посмотрите на вашу цепочку. Как вообще в голову пришло что добавив цепочку медленных сетей на выходе будет одна быстрая?)) Это желание халявы и нежелание учиться создает такие высеры забавные. Купите себе VDS да поднимите личный VPN с приличной скоростью и постоянным IP чтоб капчу не выдавал каждый сайт. если бюджет очень ограничен покупайте максимально дешевые хостинги рублей по 100 за сервер. Я для себя взял Амазон, он не дешевый но я могу менять локацию сервера в момент, что позволяет мне иметь максимально выгодные маршруты с минимальными пингами. P.S в моей сети где в промежутках используется ТОР даже скорость в 10 раз выше чем в вашей сети))
Слабое звено? Какую карту отрыть надо, и что там можно увидеть? Что я использую три впна сразу? Слабое звено до жути, аж страшно теперь мне стало. Мне в голову много чего интересного приходит, некоторые идеи воплощаю в жизнь. То что будет скорость якобы выше, это действительно так, так как идет распределение трафика. Ютуб работает на одном, вк на другом Суть сделать что то из бесплатного.
Немного автоматизации Когда имеется несколько виртуальных машин с одинаковыми впн, то надоедает выполнять однотипные действия на всех машинах. А на фриопенвпн еще и 2 раза в день! Поэтому нужно свести порядок действий к минимуму и воспользуемся скриптовым языком автоит. Допустим, у нас есть три впн клиента, которые имеют одинаковую конфигурацию. Благо то, что openvpn способен управляться с консоли, например, есть команды для подключения и отключения конфигов. Нужно только дать эти команды с одной машины на три другие. Рассмотрим клиентский скрипт, который будет слушать 33333 tcp порт на своем айпи адресе, и при получении данных произведет работу. Посмотрим на сам скрипт #include <Process.au3> $ip = IniReadSection("ip.ini", "ip") TCPStartup() OnAutoItExitRegister("_exit") $iListenSocket = TCPListen($ip[1][1], 33333) While True Do $iSocket = TCPAccept($iListenSocket) Sleep(100) Until $iSocket <> -1 While True $sData = TCPRecv($iSocket, 2048) If @Error Then ExitLoop $sData = BinaryToString($sData, 4) If $sData Then _go() Sleep(100) WEnd WEnd Func _go() $country = StringLeft($sData, 2) $pass = StringTrimLeft($sData, 2) $file = FileOpen("C:\Users\pepsi\OpenVPN\config\login", 2) FileWrite($file, "freeopenvpn" & @crlf & $pass) FileClose($file) For $i = 1 To 2 If $i = 1 Then _RunDos('"C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --command disconnect_all') Sleep(10000) EndIf _RunDos('"C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --connect ' & $country & '.ovpn --silent_connection 1') Sleep(25000) PixelSearch(680, 732, 895, 764, 0x72E672) If Not @Error Then ExitLoop EndIf PixelSearch(680, 732, 895, 764, 0xFFFF80) If Not @Error Then _RunDos('"C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --command disconnect_all') Sleep(25000) EndIf Next EndFunc Func _exit() TCPShutdown() EndFunc Теперь рассмотрим сам конфиг опенвпн клиента, пример приведу на uk, там много лишнего записано, какие-то идентификаторы и прочие настройки, очистим их и получим Code: client dev tun dev-type tun remote 85.239.62.22 443 tcp-client remote-random nobind persist-tun cipher AES-128-CBC auth SHA1 verb 0 mute 0 push-peer-info remote-cert-tls server comp-lzo no auth-user-pass login key-direction 1 Разумеется, сертификаты не трогаем, их нету смысла редактировать. Важным тут является строка auth-user-pass login, которая указывает на файл с логином\паролем. Теперь рассмотрим серверную часть программы #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <ButtonConstants.au3> TCPStartup() OnAutoItExitRegister("_exit") $ini = IniReadSection("vpnserv.ini", "pass") $iSocket1_1 = TCPConnect("192.168.100.8", "33333") $iSocket1_2 = TCPConnect("192.168.100.9", "33333") $iSocket1_3 = TCPConnect("192.168.100.10", "33333") ;~ $iSocket1_3 = TCPConnect("192.168.100.10", "33333") GUICreate("", 270, 80, -1, -1) $input = GUICtrlCreateInput($ini[1][1], 5, 5, 150, 35) GUICtrlSetFont(-1, 12, 400, 1, "Comic Sans MS") $go = GUICtrlCreateButton("go", 160, 5, 40, 35) $nCh1_1 = GUICtrlCreateCheckbox("vpn 1.1", 2, 50, 62, 25, $BS_PUSHLIKE + $BS_ICON) GUICtrlSetFont(-1, 12, 400, 1, "Comic Sans MS") GUICtrlSetState($nCh1_1, Execute($ini[3][1])) $nCh1_2 = GUICtrlCreateCheckbox("vpn 1.2", 70, 50, 62, 25, $BS_PUSHLIKE + $BS_ICON) GUICtrlSetFont(-1, 12, 400, 1, "Comic Sans MS") GUICtrlSetState(-1, Execute($ini[4][1])) $nCh1_3 = GUICtrlCreateCheckbox("vpn 1.3", 140, 50, 62, 25, $BS_PUSHLIKE + $BS_ICON) GUICtrlSetFont(-1, 12, 400, 1, "Comic Sans MS") GUICtrlSetState(-1, Execute($ini[5][1])) $nCh2 = GUICtrlCreateCheckbox("vpn2", 205, 50, 62, 25, $BS_PUSHLIKE + $BS_ICON) GUICtrlSetFont(-1, 12, 400, 1, "Comic Sans MS") $res = GUICtrlCreateButton("res", 210, 5, 40, 35) GUICtrlSetState(-1, $GUI_disable) GUISetState(@SW_SHOW) If $ini[2][1] = "yes" then IniWrite("vpnserv.ini", "pass", "go", "no") _go() Endif While True Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop Case $go _ini_checkbox() IniWrite("vpnserv.ini", "pass", "go", "yes") _res() Case $res _ini_checkbox() _res() EndSwitch Wend Func _ini_checkbox() IniWrite("vpnserv.ini", "pass", "pass", GUICtrlRead($input)) If GUICtrlRead($nCh1_1) = $GUI_CHECKED Then IniWrite("vpnserv.ini", "pass", "vpn1", "$GUI_CHECKED") Else IniWrite("vpnserv.ini", "pass", "vpn1", "$GUI_UNCHECKED") EndIf If GUICtrlRead($nCh1_2) = $GUI_CHECKED Then IniWrite("vpnserv.ini", "pass", "vpn2", "$GUI_CHECKED") Else IniWrite("vpnserv.ini", "pass", "vpn2", "$GUI_UNCHECKED") EndIf If GUICtrlRead($nCh1_3) = $GUI_CHECKED Then IniWrite("vpnserv.ini", "pass", "vpn3", "$GUI_CHECKED") Else IniWrite("vpnserv.ini", "pass", "vpn3", "$GUI_UNCHECKED") EndIf EndFunc Func _res() If Not StringInStr($CmdLineRaw, "/CmdLineRun") Then Run(@AutoItExe & ' "' & @ScriptFullPath & '"') TCPShutdown() Exit EndFunc Func _go() If GUICtrlRead($nCh1_1) = $GUI_CHECKED Then TCPSend($iSocket1_1, StringToBinary(GUICtrlRead($input), 4)) If GUICtrlRead($nCh1_2) = $GUI_CHECKED Then TCPSend($iSocket1_2, StringToBinary(GUICtrlRead($input), 4)) If GUICtrlRead($nCh1_3) = $GUI_CHECKED Then TCPSend($iSocket1_3, StringToBinary(GUICtrlRead($input), 4)) EndFunc Func _exit() _ini_checkbox() TCPShutdown() EndFunc Полагаю, в коде пояснять нечего, все понятно без слов, единственное что стоит добавить, так это ини файл, содержимое его такое Code: [pass] pass=uk516416641 go=no vpn1=$GUI_CHECKED vpn2=$GUI_CHECKED vpn3=$GUI_CHECKED Вводим пароль, выбираем впн, и запускаем скрипт кнопкой «go». Все данные программы сохраняются после закрытия. Теперь посмотрим, откуда же берется пароль. К примеру с этого сайта (https://www.freeopenvpn.org/premium.php?cntid=UK&lang=en). Он очень насыщен рекламой, и привередлив к блокировщикам (не показывает пароль). Поэтому воспользуемся каскадными таблицами, напишем правила с помощью плагина stylish (для firefox) Code: .passchng,body > center:nth-child(8),body > div:nth-child(9) > h1:nth-child(1), html body center div div p.exclam,html body center div div p.attn_2, p.data:nth-child(1), p.data:nth-child(2), .attn_1 > span:nth-child(1),body > div:nth-child(7),body > hr:nth-child(4),body > hr:nth-child(6),.offer, body > div:nth-child(1) > center:nth-child(1),body > div:nth-child(5), body > div:nth-child(1),body > div:nth-child(2), body > div:nth-child(14), body > center:nth-child(13) > div:nth-child(1) {display: none !important;} #result > img:nth-child(1) {margin-left: -150px !important; margin-top: -80px !important;} body > div:nth-child(9),.adsbygoogle, body > center:nth-child(10) > div:nth-child(1) > div:nth-child(1), body > center:nth-child(10) > div:nth-child(1) > div:nth-child(3),body > center:nth-child(11) > div:nth-child(1) {margin-left: -4090px !important;} После таких манипуляций останется только капча. Для удобства уменьшим размер сайта, и он примет вот такую форму Данные в скрипте корректируются в зависимости от разрешения экрана, так как существует поиск цвета по координатам в клиентском скрипте.