Строим VPN-туннель в локальную сеть с помощью «WireGuard»
Безопасный удаленный доступ к сервисам в локальной сети.
VPN (англ. Virtual Private Network, «виртуальная частная сеть») — обобщённое название технологий, позволяющих обеспечить одно или несколько сетевых соединений (логическую сеть) поверх другой сети (например Интернет).
Наиболее популярные решения с открытым исходным кодом для построения виртуальных частных сетей — «OpenVPN» и «IPSec». В релиз ядра Linux 5.6, который состоялся 30 марта 2020 года, вошла еще одна реализация технологии VPN — «WireGuard». Это молодой набирающий популярность проект.
Основные преимущества «WireGuard»:
- Высокая производительность (бенчмарки можно посмотреть тут)
- Простая настройка
- Современная криптография
- Качественный код
В этой инструкции мы настроим VPN-туннель в локальную сеть с помощью «WireGuard» и обеспечим доступ из интернета к узлам LAN с различных устройств.
Адресация в LAN — 192.168.100.0/24, VPN-сети назначим диапазон 10.0.0.0/24.
Для размещения сервера потребуется VPS. При выборе необходимо обратить внимание на технологию виртуализации: предпочтительно KVM, можно XEN, а вот OpenVZ следует избегать. Дело в том, что в WireGuard реализован как модуль ядра, а в OpenVZ ядро очень старое. Я буду использовать самый дешевый виртуальный сервер c операционной системой Ubuntu 20.04 (KVM 512 МБ RAM 20 ГБ SSD 1 CPU — такая конфигурация вполне подойдет).
Залогинимся на сервер с правами пользователя root и выполним следующие команды:
Создадим конфигурационный файл /etc/wireguard/wg0.conf со следующим содержимым:
Параметры PostUp/PostDown содержат правила iptables, которые будут применены при запуске/остановке сервиса. Обратите внимание на название сетевого интерфейса — оно должно соответствовать общедоступному сетевому адаптеру, в моем случае это eth0. Вывести список адаптеров можно командой:
Выберите из списка тот, которому соответствует внешний IP-адрес. <SERVER_PRIVATE_KEY> — заменяем содержимым файла /etc/wireguard/privatekey.
Запустим VPN-сервис и добавим его в автозагрузку:
Убедимся, что служба запустилась корректно:
Если ваш роутер поддерживает WireGuard (Zyxel KeeneticOS >=3.3, Mikrotik RouterOS >=7.1beta2, OpenWRT) — можно настроить VPN-клиент прямо на нем. Я буду использовать для этой цели сервер Ubuntu 20.04 (локальный адрес 192.168.100.7).
Первый этап настройки аналогичен конфигурации серверной части. Выполняем с правами root-пользователя:
<PEER_LAN_PRIVATE_KEY> — заменяем содержимым /etc/wireguard/privatekey, <SERVER_PUBLIC_KEY> — /etc/wireguard/publickey с сервера, <SERVER_IP> — внешний IP-адрес сервера. Правила iptables в PostUp/PostDown необходимы для того, чтобы наш клиент выступал в роли шлюза в LAN. Указываем в правилах тот сетевой интерфейс, на который назначен локальный адрес (192.168.100.7, в моем случае это wlp2s0). Уточните его путем исполнения команды:
В параметре AllowedIPs задаются адреса, маршрутизация к которым будет осуществляться через VPN-интерфейс. В поле PersistentKeepalive — периодичность проверки доступности соединения в секундах. Запускаем службу и добавляем в автозагрузку:
На сервере добавляем в файл /etc/wireguard/wg0.conf блок:
Где <PEER_LAN_PUBLIC_KEY> — /etc/wireguard/publickey клиента. Перезапустим службу и убедимся, что все настроено корректно:
Проверим теперь с клиента:
Сборки WireGuard доступны для основных платформ: Linux, Windows, Mac, Android, FreeBSD, OpenWRT и др. Рассмотрим настройку VPN-клиента на десктопах под управлением Linux и Windows, а так же на Android-смартфоне.
На клиенте выполняем с правами root:
Конфигурационный файл /etc/wireguard/wg0.conf:
<PEER_1_PRIVATE_KEY> — заменяем содержимым /etc/wireguard/peer_1_privatekey, <SERVER_PUBLIC_KEY> — /etc/wireguard/publickey с сервера.
Обратите внимание на строку «AllowedIPs = 0.0.0.0/0» — в данной конфигурации весь трафик будет маршрутизироваться через VPN-адаптер. Это может понадобиться для сокрытия реального IP при работе в интернет или для защиты трафика при подключении к недоверенным сетям (например публичные Wi-Fi точки доступа). В этом случае указываем «DNS = 8.8.8.8» (8.8.8.8 — DNS-сервер Google), чтобы DNS-запросы выполнялись через защищенное VPN-соединение.
Если VPN-туннель необходим только для доступа к LAN 192.168.100.0/24 — убираем строчку «DNS = 8.8.8.8» и в параметре AllowedIPs меняем «0.0.0.0/0» на «10.0.0.0/24, 192.168.100.0/24».
На сервере в конфигурационный файл /etc/wireguard/wg0.conf добавляем блок:
Где <PEER_1_PUBLIC_KEY> — содержимое файла /etc/wireguard/peer_1_publickey клиента и перезапускаем службу:
Возвращаемся на клиент и проверяем доступность узлов в LAN через VPN-туннель:
Как поделиться VPN-подключением с вашего ПК с Windows
Это руководство покажет вам как поделиться своим Windows VPN-соединением. Вы узнаете, как настроить размещенную сеть или «виртуальный маршрутизатор» через командную строку.
Замечания: Делать не подключиться к приложению ExpressVPN перед началом этого процесса.
Проверьте, поддерживает ли ваш ПК с Windows создание виртуального маршрутизатора
Перед началом необходимо проверить, поддерживает ли ваш компьютер создание виртуального маршрутизатора. нажмите Ключ с логотипом Windows (⊞) + S чтобы запустить панель поиска, затем введите CMD воспитывать Командная строка. Щелкните правой кнопкой мыши командную строку и выберите Запустить от имени администратора.
Для Windows 10 вам не нужно создавать виртуальный маршрутизатор. Перейдите к созданию мобильной точки доступа.

Для Windows 8:

Для более ранних версий Windows:
В командной строке введите следующее:
Netsh Wlan Show драйверов
Хит Войти.

Если вы видите «Поддерживаемая размещенная сеть: Да», тогда ваш сетевой адаптер может создать виртуальный маршрутизатор.
Если вы не видите это сообщение, вам может потребоваться обновить драйверы сетевого адаптера..

Создайте свой виртуальный маршрутизатор
В командной строке введите следующее:
netsh wlan set hostednetwork mode = разрешить ssid = ключ NETWORKNAME = ПАРОЛЬ
Назовите свой виртуальный маршрутизатор, задав следующие значения:
= SSID[выберите имя для вашей сети]
ключ =[выберите пароль для своей сети]
Хит Войти.

Затем вы увидите это сообщение:
Режим размещенной сети был разрешен.
SSID размещенной сети был успешно изменен.
Пароль пользователя в размещенной сети успешно изменен.

Поздравляем! Вы успешно создали виртуальный маршрутизатор.
Запустите свой виртуальный маршрутизатор
Чтобы запустить виртуальный маршрутизатор, введите в командной строке следующую команду:
netsh wlan start hostednetwork
Хит Войти.

Если виртуальный маршрутизатор запускается успешно, вы увидите сообщение «Хостинговая сеть запущена».
Если вы получили сообщение о том, что размещенная сеть не может быть запущена, обновите драйверы сетевого адаптера..

Если вы не используете Windows 10, выполните следующие действия.
Только для Windows 10: делитесь VPN через мобильную точку доступа
Перейти к настройки > сеть & интернет > Мобильная точка доступа.
Переключить ваш Мобильная точка доступа в На.

Перейти к настройки > Сеть и Интернет > Изменить параметры адаптера.
Щелкните правой кнопкой мыши на ExpressVPN Tap Adapter и выберите свойства.

Под Sharing вкладка, установите флажок для Разрешить другим пользователям сети подключаться через интернет на этом компьютере. Из выпадающего меню, выберите точку доступа ты только что создал.

щелчок Ok.
Теперь вы готовы подключиться к ExpressVPN.
Поделись своим виртуальным роутером
Чтобы поделиться своим виртуальным маршрутизатором, вам нужно указать имя соединения. Откройте окно «Выполнить», нажав Клавиша с логотипом Windows (⊞) + R, или нажав на Начало кнопка. Тип ncpa.cpl, затем нажмите Войти или Ok.

В окне «Сетевые подключения» вы должны увидеть новое подключение к Wi-Fi в списке сетевых адаптеров. Описание покажет имя ssid что вы назначили ранее. Обратите внимание на название соединения. (В этом примере используется «Подключение по локальной сети * 5».) Это понадобится вам позже.

Теперь найдите сетевое соединение с описанием «TapVapN ExpressVPN» (в этом примере используется «Ethernet 2».)

Щелкните правой кнопкой мыши на нем и выберите свойства.

В окне «Свойства» щелкните Sharing вкладку и установите флажок для Разрешить другим пользователям сети подключаться к Интернету через этот компьютер.
В разделе «Подключение к домашней сети» выберите недавно созданный виртуальный маршрутизатор из выпадающего меню. (Это тот, который вы определили ранее.) Затем нажмите Ok.

Подключиться к ExpressVPN
Запустите приложение ExpressVPN и подключиться к серверу по вашему выбору используя протокол OpenVPN (UDP или TCP). Инструкции по изменению вашего протокола можно найти здесь.

Поздравляем! Ваш ПК с Windows теперь виртуальный маршрутизатор.
Теперь вы можете подключить любое устройство с поддержкой Wi-Fi к вашему новому виртуальному маршрутизатору и поделиться своим VPN-соединением.
Отключите ваш виртуальный маршрутизатор
Для пользователей Windows 10:
Перейти к настройки > сеть & интернет > Мобильная точка доступа.
Переключить ваш Мобильная точка доступа в от.
Для пользователей не Windows 10:
Чтобы отключить виртуальный маршрутизатор, вернитесь к командная строка и введите следующее:
netsh wlan stop hostednetwork

Вы увидите сообщение «Размещенная сеть остановлена».

Это остановит и отключит ваш виртуальный маршрутизатор. Если ваш виртуальный маршрутизатор больше не находится в Сетевые соединения окно, то вы успешно отключили его.
Объединение компьютеров через VPN и личное облако на VPS сервере
В прошлом материале я подробно рассказал как настроить VPN на арендованном виртуальном сервере.

Данная статья является её продолжением, так как наличие своего сервера и настроенного VPN позволяет использовать сам сервер, в том числе как облачное хранилище которое не сможет заблокировать важные данные, а также организовать зашифрованную связь между устройствами внутри VPN сети и производить обмен данными, в том числе, встроенными возможностями Windows.

Ну и напомню, что одного сервера хватит на несколько домохозяйств и по итогу вы получаете сервис с очень большой скоростью соединения, статическим IP, который не будет вызывать вопросы у сайтов, и если поделить оплату на несколько семей, то выходит 100-150 рублей в месяц на домохозяйство.
Коротко напомню как арендовать сервер и зайти в него через терминал. За рубли иностранные серверы можно заказать на:
RU VDS
RU VDS. Минимальная комплектация около 550 рублей в месяц (есть скидка 5% по промокоду KFQ-OTS-NCD, SKU-SLL-WFW, HNX-AIO-PJN, JJT-SBM-SOE, JFX-FHN-QOP, SJQ-FMH-HBA, AXG-SEJ-FEX, QXX-EAV-LWD, SCC-TRK-IER, IKK-JXW-RGF, QWV-XLP-VTV, CBT-WCD-RIJ, CTU-FSV-WQV, VDL-NWS-UDP, JOI-OTV-BXL, OGJ-GXN-UOF, JHB-TJG-ETK, NJI-CAE-GBR, GCX-LCM-OML, SCN-EJB-HQS, промокоды, к сожалению, одноразовые. Я их периодически обновляю).
Доступны не все сервера
veesp.com
Второй сервис чуть дешевле. И я заранее ещё связался с этим сервисом, так что вам ещё есть промокод (90LHJT906Q9W — скидка 5%).

Забегая вперёд скажу, что я буду показывать на примере этого варианта. Юридически он находится в Латвии, что не ограничивает возможности по расширению доступных мощностей в будущем из-за санкций на покупку оборудования, но при этом ориентирован на русскоязычных пользователей и компании, то есть имеется русскоязычная поддержка, и возможности оплаты любыми нашими картами. И сами сервера находятся в России и в Латвии, что максимально близко к России, а значит обеспечат минимальный пинг, и кроме того в Латвии достаточно много русскоязычных пользователей, чтобы, например, в кешах гугла, быстро дублировались видео на русском языке. То есть для просмотра ютуба сервера в Латвии — это один из наиболее оптимальных вариантов.
Если купить сразу на год, то с учётом скидки выходит примерно 4 доллара в месяц. Если купить просто на месяц то выходит около 5-х долларов.
Как зайти на свой сервер?
Если у вас Windows 10 или 11, MAC и Linux, то там вы можете начать подключение используя встроенную командную строку или терминал. Если у вас Windows 7, то вам понадобится сторонний терминал с поддержкой SSH.

Несмотря на то, что я показываю на Windows 10 я его тоже поставил, так как в нём можно сохранить параметры для входа, что в будущем упростит работу.
Скачиваете его и запускаете.
- В окно имя хоста копируете IP адрес того сервера, что взяли в аренду.
- Придумайте название
- Сохраните запись
- Нажмите кнопку соединиться
При первом соединении возникнет всплывающее окно. В нём нажимаете «ок».

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

В качестве логина вводите Root
Пароль должен быть в сведениях о арендованном сервере.

Его нужно скопировать в буфер обмена в том месте где он у вас записан и далее в окне терминала нажать правую клавишу мыши, он вставится, но внешне отображаться не будет. Далее нажимайте «enter» и если вы сделали всё правильно, то вас залогинен на арендуемый сервер

Далее вы можете сменить пароль введя команду: passwd
И далее дважды ввести новый пароль
Пароль внешне так же не будет отображаться в терминале

Всё. теперь вы на своём сервере. И можете отдавать ему нужные для дальнейшей работы команды.
ОБРАЩАЮ ВАШЕ ВНИМАНИЕ, ЧТО МНОГИЕ ВЕЩИ ИЗ ЭТОЙ СТАТИ ОПИСЫВАЮТ РАБОТУ КОГДА VPN УЖЕ НАСТРОЕН. И ЕЩЁ РАЗ УКАЗЫВАЮ, ЧТО СТАТЬЯ ОБ ЭТОМ ЕСТЬ ТУТ.
Коротко про то из-за чего возможен иной доступ между компьютерами внутри VPN
Мои инструкции направлены на развитие частных VPN, то есть когда вы делаете из для себя и своих близких без посредников, получая более высокое качество и надёжность, за те же деньги. Ну и логично, что если вы разбили один сервер между знакомыми людьми, то общий сервер с VPN даёт вам ряд преимуществ. По сути теперь у каждого из компьютеров есть 3 ip адреса. Первый — локальный, который начинается на 192.168.*.*, его даёт роутер у вас дома, второй — тот что даёт вам ваш провайдер, для внешний части интернета, и третий — это адрес, который вам даёт ваш арендованный сервер для VPN подключения, используя Wiregard, который мы настраивали в прошлой статье — этот адрес у всех пользователей тоже статический, что облегчает настройку связей. Это адрес с маской 10.0.0.0. Так вот.

Все компьютеры внутри VPN получают адреса с маской 10.0.0.0 в едином пространстве адресов.

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

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

Но все подобные группы объединяет то, что в этой группе образуются люди, которые хорошо доверяют друг другу и нуждаются в обмене данными между собой. Например, у меня на одном из компьютеров хранится семейный фотоархив, к которому могут хотеть иметь доступ остальные пользователи сервера. И по сути находясь в единой сети через VPN я могу расшарить какие-то свои папки другим пользователям. И делается это просто средствами Windows.
Как раздать доступ на любые папки между компьютерами внутри VPN средствами Windows?
Выбираете папку, которую хотите расшарить в сети и в её параметрах задаёте общий доступ.

Тут же сразу вы можете увидеть как эту папку вводить на других компьютерах в сети. Но если вы не переименовывали свой компьютер, то у него как правило какое-то дурацкое название. Так что в других компьютерах в сети можно в проводнике входить через ip адрес в маске 10.0.0.0 по адресу, который указан в профиле WireGuard того компьютера, с которого вы расшарили папку.

На разные папки вы можете задавать разные параметры по доступу. Выбирать какие пользователи или группы пользователей должны иметь доступ. Или вообще делать папки доступными без пароля. Чтобы было проще настроить доступ надо на всех компьютерах сети включить обнаружение компьютера в сети.
Для открытия этих настроек, просто копируете текст ниже его в проводник Windows жмёте Enter и в открывшемся меню включаете отображение компьютера в сети:
Это позволит проще раздавать права доступа, так как в настройках начнут «светится» пользователи других компьютеров сети. Потом, после завершения настроек отображение можно отключить.
В остальном с этим — разберётесь сами. Тут всё понятно, там ничего сложного нет, да и, думаю, домашнюю сеть устройств объединённых внутри роутера многие и так делали, так что тут ничего нового знать не надо, так как делается всё точно так же.
Но это только половина дела.
Дело в том, что для того чтобы обмениваться таким образом данными компьютер того, у кого вам надо что-то посмотреть должен быть включен и подключен к VPN.
Два способа сделать «облако» на своём сервере
И тут возникает вторая важная вещь. Дело в том, что сам сервер тоже находится в этой же локальной сети и он как раз таки включен всегда. Более того сервер имеет статический ip адрес, а значит вы можете сделать его ресурсы доступными как через просто интернет, так и внутри VPN.
И в этом плане сервер может полноценно заменить облачные сервисы, так как можно раздать доступ к синхронизируемым ресурсам на любые свои устройства. И всё это, само собой, входит в оплату сервера поверх уже настроенного быстрого VPN.
Вообще если вам нужно чтобы облако было прям как в коммерческих вариациях, рюшки и всякие интерфейсы — то такое тоже можно сделать.

Гуглите по запросу Linux VPS облако, это будет требовать больше мощностей от самого сервера, но если это надо, то такое тоже можно сделать. И в интернете есть гайды как это сделать.
Мне лично нужно только то, чтобы у меня была папка к которой у меня будет доступ через интернет с любых моих устройств. К обычным сетевым папкам можно подключиться как с компьютеров, так и с мобильных устройств, через приложения проводников, в которых можно настроить сетевые папки, допустим через Total Commander на андроид.
Ну и, собственно, то что мы настроили для компьютеров между собой — это обмены через SMB протокол.
SMB is a client server, request-response protocol. The only exception to the request-response nature of SMB is when the client has requested opportunistic locks (oplocks) and the server subsequently has to break an already granted oplock because another client has requested a file open with a mode that is incompatible with the granted oplock. In this case, the server sends an unsolicited message to the client signaling the oplock break. Addl. info at cifs/docs/what-is-smb.html.
Такое теперь надо настроить на арендованном сервере. Но и это тоже не обязательно. Так как всё зависит от ваших задач.
Я сейчас покажу два варианта как сделать сетевую папку.

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

Но в комментариях мне подсказали, что есть программы, которые в бэкэнде общаются с сервером этими же командами, но при этом выводят файлы в привычном виде, работают всякие перетаскивания копипаст и т.д. И само собой, то что я показывал в прошлой статье, как скачивать конфигурации можно сделать гораздо проще используя подобные программы.
Наверное самая распространённая из программ, которая это позволяет делать — это WinSCP.

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

Например это будет папка /user_data/222.
Для создания пользователя с ограниченными правами перходим обратно в PuTTY

Далее создаёте нового пользователя командой
Где, имя нового пользователя «userobmen»
Далее задаёте пароль этому пользователю.
После чего нужно дважды ввести новый пароль.
Далее нужно этому пользователю разрешить доступ к той папке, которую вы будите использовать в WinSCP для обмена данных.
Эта команда разрешает для владельцев папки и группы владельцев папки чтение, запись и запуск файлов.
И теперь надо добавить в качестве владельца папки нашего пользователя userobmen.
Вкупе эти две команды говорят о том, что папка принадлежит пользователю userobmen и владельцам папки разрешён доступ к файлам в этой папке.

Подробнее про работу с доступами пользователей рекомендую ознакомится с двум (1, 2) статьями про вышеуказанные команды.
Теперь можно при входе в WinSCP логинится пользователем userobmen и работать внутри созданной папки.

Далее находим папку, для которой вы дали доступ. Откройте свойства папки в свойствах владелец должен быть ваш новый пользователь.

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

Можно включить WinSCP в автозагрузку системы. В настройках ещё есть опции по «интеграции».

Но в целом — полноценной заменой облака такой подход не является, так как работать не удобно, в добавок работа идёт по сути просто с локальными копиями файлов.
Поэтому я ещё покажу вам другой вариант, используя тот же протокол, что для доступа к сетевым папкам между компьютерами.
Использование протокола SMB
Если вы зайдёте в «этот компьютер» в Windows, то вы увидите, что там есть кнопка «подключение сетевого диска», она позволяет использовать сетевые ресурсы ровно так же, как локальные, то есть не подгружая файлы целиком из интернета и т.д.

А подтягивая только те части файла, что нужны были бы от локального диска.

Ну то есть как будто бы это реально локальный диск. Допустим чтобы посмотреть фильм лежащий в сетевом диске вам не надо будет ждать пока фильм закешируется где-то локально, так как для вашего компьютера он типа и так уже лежит локально. И это принципиальное отличие от использования SCP которому нужно для открытия файла его закешировать локально. Но если вы просто так пропишите в настройках подключения сетевого диска адрес арендованного сервера, то ничего не произойдёт, так как на сервере для начала нужно развернуть и настроить подключение по SMB протоколу.

Благо создать такой доступ очень просто.
Для убунту есть такая программа как Samba.
Заходите в терминал на сервер.
Для начала нужно обновить все текущие пакеты установленные на сервере командой
Тут процесс зависит от того насколько старая развёрнута версия убунты на сервере.
Если для уже настроенной ривергард всплывёт вопрос что делать с её конфигурациями, то выбирайте пункт, про то, что всё оставить как есть.
Дальше нужно установить пакет samba.
Он как раз таки отвечает за активирование SMB протокола на сервере.
В процессе установки надо будет один раз нажать на Y.
Установка закончится сама.
Всё. теперь к вашему серверу можно подключиться с любого компьютера, так как сервер теперь умеет отвечать на запросы про сетевые папки.
Правда пока что никаких данных так получить будет нельзя.
Для этого надо расшарить какие-то папки для доступа, а также опционально задать требования по доступу к данным, то есть создать пользователей, пароли для них и при необходимости объединять пользователей в группы, чтобы давать доступ к отдельным папкам целым группам пользователей.
К слову — если включить VPN, то доступ как к сетевой папке появится у сервера как по глобальному IP адресу сервера, так и по локальному для VPN адресу.

Локальный ip адрес сервера для VPN узнать довольно легко.
В прошлом видео мы устанавливали в качестве VPN — виергард.

В нём вы можете зайти в свой конфигурационный файл и там посмотреть тот ip адрес который выдан вашему компьютеру или смартфону. Сервер находится по этой же сетевой маске, но с единичкой в последнем блоке адреса. У меня это, например 10.6.0.1. Само собой, если у вас отключен VPN, то подключится к сетевой папке вы сможете только через ip адрес сервера, который прописан в личном кабинете у хост провайдера.
Но вернёмся к сетевым папкам.
Изначально нужно создать какую-то папку на сервере, которую вы потом сделаете сетевой.
Это можно сделать и в терминале, но проще это сделать через программу WinSCP.
Логинитесь на свой сервер через WinSCP.
Тут вам надо создать новую папку.
Собственно этот процесс я уже ранее показал.
Я назвал её user_data и в ней создал две папки — 001 и 002.

Теперь мы эти папки будем делать доступными разным пользователям.
Свойства того, что будет сервер допускать как сетевые папки задаётся в файле параметров программы Samba.
Можно параметры вписывать через командную строку, но мы и тут воспользуемся WinSCP.
В корне сервера находите папку etc и там открываете папку Samba.

В этой папке лежит файл smb.conf.
Советую сделать для этого файла резервную копию.
На всякий случай я ещё в текстовой версии оставлю свой файл как пример.
Открываете его блокнотом, или ворт падом или любым другим текстовым редактором.

То что там вписано не трогайте, мы свою часть будем вписывать просто дальше в конец файла новыми строками.
В этом файле мы прописываем те папки, что будут отображаться, а также параметры доступа к ним.
Давайте для начала откроем доступ для папки так чтобы он был без пароля. Само собой, не следует так делать, если вы оставите свой сервер видимым как сетевую папку для открытого интернета. Ограничить работу в открытом интернете можно либо через настрйоки самой самбы, которые я покажу чуть позже, либо настройкой брандмауера сервера, ограничивая работу через порт 445 командой
iptables ограничив доступ для всего кроме пространства запросов из локальной сети.
Ещё приложу страницу на сайте самбы, где описаны принципы обеспечения безопасности данных.
Кроме того, если вдруг вы будите планировать редактировать файл конфигураций не в WinCSP а через терминал, то рекомендую этот файл почистить от инструкций и лишних записей.
Для этого в терминале пропишите команду
Эта команда перезапишет файл конфигурации из созданной копии но без лишних строк. Если редактировать будите открывая в текстовом редакторе, то на лишнюю писанину можно забить.
Но вернёмся к публичным папкам.
Открываете файл конфигураций и вписывайте в его конец вот такой текст.
Видится папка будет как “Сетевая папка”, в поле коммент вписываете пояснение чтобы вы сами понимали что это вы такое понаписали, дальше вам надо прописать путь к той папке, что лежит на сервере. Тут я поясню сразу, что те названия папок что мы создавали в WinCSP — это, своего рода, служебные названия. Так папка 001 в сети будет отображаться как “Сетевая папка”, то есть так как вы укажете её в конфигурационном файле.
Далее мы пишем атрибут — паблик “Да”. Врейтебл, то есть с возможностью записи — да, риад онли, то есть только для чтения — нет, и гостевой доступ — да.
По разные стороны от равно должны быть пробелы. Если не поставить — работать не будет.
Всё. Сохраняете файл. Закрываете.
Заходите обратно в терминал и там прописывайте команду для перезагрузки самбы.

Теперь можете ещё раз проверить свой сервер. Доступ к папке появился. Вы можете туда копировать, вставлять и т.д. И доступ к этой папке есть у всего интернета, что, учитывая дырявость стандарта SMB нисколько ни хорошо. Поэтому теперь надо сделать так, чтобы доступ к серверу был только через VPN.
Для этого открывайте файл конфигурации самбы. В нём найдите раздел GLOBAL.
И введите туда в любую строку
Эти два параметра позволяют задать доступ только для компьютера самого к себе и доступ в моём случае при обращении с адреса 10.6.0.3.

Сохраняете файл. Закрываете.
Ещё раз прописывайте командой через терминал
Теперь проверяете доступ к вашей папке. С ip адреса сервера, который прописан в данных о арендованном сервере доступ должен прекратиться. А при включенном VPN с ip адреса в сети, у меня это 10.6.0.1 доступ должен работать. При выключеном VPN доступ должен быть недоступен.
Иногда происходят затупы в винде, из-за того что винда кеширует какие-то данные, но смысл в том, что возможность открытия новых папок, чтения новых файлов, запись и т.д. без VPN должны пропасть.

Соответственно для большинства, так как в сети будут только доверенные устройства — вариант с папкой без пароля будет приемлемым. И на этом можно уже подключать папку как сетевой диск. Делается это просто. Прописываете путь и всё.

Кроме того можно как и с другими облаками работать в режиме синхронизации и работать в режиме работы в самом облаке. Штатными средствами винды это тоже реализуемо. Жмёте правой клавишей на сетевом диске и там будет такой пункт.

Но предупреждаю, что он отключается потом только выпиливанием самой службы. В майкрасофт видимо не думали, что кто-то этим будет пользоваться и не продумали нормального отключения синхронизации, так что как там дальше я показывать не буду. Захотите — нажмите. Меня устраивает и работа с данными сквозь VPN без кеширования и предварительных синхронизаций, так как скорости доступа высокие.
И всё. Вот оно ваше личное облако. Какой объём данных нужен, такой и проплачивайте у хост провайдера, у меня тариф на 25 гигабайт, в качестве флешки вполне пойдёт. Домашний интернет 100 Мбит/с, так что на скачивание с облака у меня эти 100 Мбит/с и работают. И напомню, что это уже бонусом к быстрому VPN.

Ну и теперь коротко рассмотрим вопрос с доступом к папкам по паролям.
Доступ к папкам по паролям
Для папок с закрытым доступом нужно будет создавать пользователей на сервере и прописывать в параметрах доступ только пользователей или групп пользователей. Как мы это делали уже для папки с WinSCP.
Но потом надо будет пробросить этих пользователей в параметры самбы, задав им дополнительный пароль уже для доступа через самбу.
В общем — суть такая.
У вас есть пользователь, и папка. Нужно установить доступ пользователя к папке и доступ к пользователю через самбу.
Пароли для пользователя и для этого же пользователя для самбы могут быть одинаковыми. Первый пароль нужен для залогинивания в самой операционной системе убунту, а второй уже для захода в сетевую папку.
Ещё раз покажу весь процесс. На этот раз создадим пользователя для собаки. А то что мы всё для людей, да для людей.
Возвращаемся в терминал сервера.

Создаём нового пользователя.
Делается это командой:
Далее нужно создать пароль этому пользователю для вашего сервера командой
Далее нужно два раза вписать пароль. Он не будет отображаться — но он вписывается.
Дальше можете проверить, что пользователь создался командой
Вам пропишутся id этого пользователя. И видно, что для пользователя создалась группа пользователей собака, про группы я скажу чуть позже.
дальше нужно задать пароль этого пользователя для самбы.
Это делается командой:
Два раза вводите пароль. Он может быть таким же как и пароль введённый для системы целиком.
Всё пользователь создан.
Теперь нужно создать папку, которую вы хотите сделать доступной только для отдельных пользователей. У меня это, например 002, которую я создал чуть ранее.
Если вы ранее через WinCSP её не создали, то можно создать командой
Теперь надо нашему новому пользователю открыть доступ в эту папку.

Делается это командой
И назначить собаку владельцем папки
Соответственно теперь нужно создать необходимое количество пользователей и прописать их пароли для системы и пароли для самбы. А также раздать права на нужные папки разным пользователям.
Кроме того пользователей можно объединять в группы.
Группы создаются командой:
Я создал группу звери.
Далее в эту группу надо добавить пользователей
Теперь ещё раз просмотрев id пользователя собака командой
Можно увидеть, что она принадлежит группе собаки и группе звери.

И прописывать владельцев для папок можно не для пользователей, а для групп пользователей.
Работа муторная, но сделать это надо только один раз. Опять же если вам эти всякие пароли нужны. Если не нужны, то инструкция для вас уже давно закончилась профитом.
Теперь надо прописать новую папку уже для самбы.
Для этого опять открываем файл конфигурации самбы и в конец дописываем новую конфигурацию.
Тут мы указываем название для сетевой папки, путь к ней. В качестве атрибутов невозможность гостевого доступа, возможность чтения и записи и так же от чьего имени производится работа на сервере, либо от имени пользователя, либо от имени группы пользователей.
ну и соответственно тут мы не регулируем то, кому допустим вход, но если вход от пользователей, которым не дан доступ к папке не сервере, то получить данные не получится.
Вообще есть регулирование доступа к данным через саму самбу. Ну то есть на сервере вы даёте доступ любым пользователям к папкам, а уже самбой ограничиваете тех кто может залогиниться. Тогда вместо force user или force group прописывается строка
И уже тут перечисляются пользователи через запятую, либо, если нужно указать группу, то группа пишется через знак собака.
Но, честно говоря, мне такой метод два дня сношал мозг. Доступ иногда давался, иногда не давался, а ошибки говорили, что надо обратиться к администратору ресурса, коим являлся я сам, и что там я делал не так — я так и не понял.
Само собой можно задать и правила доступа на сервере и одновременно с этим перечень допустимых пользователей через самбу.
То есть указывать и форс юзера, и давать ограничения на владельцев папок на сервере и указывать валидных пользователей списком в параметрах самбы. Это наверное наиболее безопасный метод, так как получается два уровня ограничений вместо одного.
Ну и в таком виде это будет работать уже с паролями. Если оно вам надо.
Ну и, думаю, тему со своими сервером заканчивать не будем.
Лично я свои хотелки для себя уже реализовал, но предлагаю вам в комментариях писать чтобы вы хотели от сервера ещё. А я постараюсь разобраться в том как это реализовать и покажу в будущем.
Своя собственная виртуальная локалка
Всем привет, с вами fffu, и сегодня мы сделаем виртуальную локалку для сетевых игр по LAN. Традиционно, делать будем не совсем прямым и простым путём, зато бесплатно, без регистрации на левых сайтах, рекламы и посредников.
Вместо объяснений «зачем это тут, если есть <ProgramName>», расскажу о своём опыте работы (да-а-а, работы..) с некоторыми программами, предназначенными для этой же цели. Важным дополнением будет то, что играю в такие игры как правило только с друзьями и знакомыми, в основном кооп.
Первой такой прогой у меня была Hamachi. Работала стабильно, регулярно обновлялась, денег не просила. Потом в какой-то момент кардинально сменила свой внешний вид, стала называться LogMeIn Hamachi2, какие-то подвижки в плане коммерции стали появляться — не помню, то ли появились ограничения для бесплатного использования, то ли что-то ещё. Пропадала и появлялась снова полноценная поддержка UDP, часть игр перестала работать — помогал откат на более древнюю версию. Потом что-то поменяли, и старые версии перестали коннектиться. В топку.
Следующим был Wippien. Куча настраиваемых опций, авторизация и обмен сообщениями через Jabber, можно было использовать аккаунт на gmail для авторизации. Работал несколько лет без нареканий, но в один прекрасный момент все сервера-посредники надолго перестали работать. Разумеется, случилось это тогда, когда в планах было зарубиться компанией по сети. В топку.
Положение спас Tunngle. Сервис замечательный практически во всех отношениях: можешь сделать приватную локалку, с паролем или без, есть общественные локалки с разбиением по играм, встроенная справка о том, какую игру и как заточить под локалку, со ссылками на патчи и прочее. И сидел бы я на нем до сих пор, если бы не одно обстоятельство, становившееся всё более и более назойливым.
В начале я с пониманием относился к нижнему баннеру в окне приложения. Затем появилась колонка справа. Потом сверху. Потом баннер на всё окно по центру при входе. Всё это мигает и переливается — привет эпилептикам. Забил на этот Лас-Вегас. Не то, чтобы в топку, но перестал пользоваться.
Преимущества нашего варианта в том, что мы в дальнейшем ни от кого не зависим. В этой виртуальной локалке весь трафик будет зашифрован, причем ключи с самого начала гарантированно будут только у нас. Для того, чтобы подключиться к настроенному vpn, нам не нужны посредники, находящиеся неизвестно где и работающие тогда, когда это удобно им. Не нужна регистация в ещё одном сервисе, не надо постоянно качать обновления клиента — будучи настроенным один раз, наш vpn будет работать тогда, когда это надо именно нам.
Из недостатков — нууу. придётся сделать всё самому.
Итак, виртуальная локалка через OpenVPN: сервер + клиенты.
Гайд рассчитан на то, что ваш инет быстрый и комп будет выступать в роли сервера, у вас есть внешний IP (желательно статичный, но и динамичный тоже сойдёт, если на сервере настроить DDNS), вы знаете, как пробрасывать порты на роутере внутрь сети (если у вас есть роутер), умеете создавать файлы с нужным расширением и хорошо понимаете, о чём вообще говорится в этом абзаце.
Если же представляете слабо — то в любом поисковике по любому из этих вопросов есть подробные ответы, я гарантирую это. Пожалуйста, перед тем, как задавать тут вопрос по этим темам — загуглите и почитайте, инфа там подробно разжёвана.
На данный момент там выложена версия 2.4.1, но гайд почти полностью был написан и оттестирован более года тому назад по версии 2.3.8 на Windows 7. Начиная с версии 2.4, инсталляторы OpenVPN не работают на Windows XP, если кому-то это ещё актуально.

Установка производится по методу «раскидали галки, далее-далее-далее» по умолчанию в C:\Program Files\OpenVPN, перезагрузка не требуется.
Для сервера: ставлю все галки, кроме OpenVPN Service. Если же хотите, чтобы сервер стартовал автоматически при загрузке компа, то и эту галку тоже ставим.


Также в систему поставится драйвер TAP-Windows Adapter, и в списке сетевых подключений появится новое «Подключение по локальной сети».
########## Настройка сетевых интерфейсов ##########
Переходим в Панель управления\Сеть и Интернет\Сетевые подключения. В моём случае адаптер называется «Подключение по локальной сети 6».

Хотя есть один случай, когда старые игры для игры по сети используют протокол IPX/SPX (из тех, которые помню — первые Diablo и StarCraft). В Windows XP ещё можно было стандартными средствами доустановить протокол IPX, отметить его тоже галкой в окне ниже и спокойно играть. Или использовать IPXWrapper.


Жмём на Ok, закрываем все эти окна и (это важно) проверяем, что на всех остальных адаптерах поставлена галка «Автоматическое назначение метрики».
После этого в окне со списком адаптеров нажимаем Alt, и в появившемся меню выбираем Дополнительно → Дополнительные параметры. На вкладке «Адаптеры и привязки» в списке подключений находим наш адаптер и убираем все привязки для этого адаптера. Также убеждаемся, что наш адаптер находится на самом верху списка подключений. Если это не так, то кнопками справа перемещаем адаптер на верх списка.

Если эти проверки пропустить, то может получиться так, что потом вы не сможете сконнектиться в игре.
Цель манипуляций с метриками в том, чтобы после запуска vpn сессии (неважно, на сервере или на клиенте), у сетевого интерфейса «OpenVPN TAP» была бы минимальная метрика. Это означает, что все широковещательные запросы (такие, как поиск игровых серверов) будут отправляться через этот интерфейс. Позже мы сделаем проверку этих настроек.
########## Сертификаты и ключи для авторизации ##########
Эта часть гайда делается только на сервере. С помощью скриптов создаём все необходимые файлы авторизации как для сервера, так и для клиентов. Текста много, но по сути всё сводится к выполнению нескольких простых команд. По умолчанию скрипты создаются и работают в папке C:\Program Files\OpenVPN\easy-rsa, и нам потребуется запуск командной строки от имени администратора или доступ на запись и изменение файлов в этой папке и её подпапках. Выбирайте что вам удобнее.
Дополнительно мы немного поменяем входные данные для генерации сертификатов и настройки по умолчанию, а в остальном будем делать как сказано в README.txt
Первая часть операций (пункты c 1 по 6) выполняется только один раз при первичной настройке.
1. Запускаем командную строку и переходим в рабочую папку.
> cd C:\Program Files\OpenVPN\easy-rsa
2. Отключаем запрос адреса электронной почты при создании сертификатов. Для этого открываем файл openssl-1.0.0.cnf в блокноте, ищем секцию [ req_distinguished_name ] и в ней закомментируем параметры emailAddress и emailAddress_default (добавим # в начало строки).
#emailAddress = Email Address
3. Подготавливаем служебные переменные, которые будут использоваться при генерации сертификатов.
> init-config.bat
В папке появился файл vars.bat, открываем его в блокноте и редактируем нижний блок переменных.
set «KEY_ORG=League Of Gamers»
rem set KEY_EMAIL=mail@host.domain
set «KEY_NAME=User Name»
set «KEY_OU=Virtual LAN»
Строку с KEY_EMAIL можно просто удалить.
Замечание 1: если в значении переменной есть пробелы, то в кавычки нужно брать всю пару «имя=значение», как в KEY_ORG, KEY_NAME и KEY_OU на примере выше. Если же открывающая кавычка будет стоять после знака равенства, то обе кавычки будут считаться частью значения переменной. Такой вот Microsoft way.
Замечание 2: в общем случае, значения переменных могут состоять из латинских букв, подчёркивания, минуса, точки и @.
Файл vars.bat необходимо и достаточно запускать один раз в каждой новой сессии командной строки перед тем, как начинаем генерить или отзывать сертификаты. Впрочем, ничего плохого не случится, если он будет запущен несколько раз в одной сессии.
4. Инициализируем новую папку для ключей
> vars.bat
> clean-all.bat
> openvpn —genkey —secret keys\hmac.key
А вот и первое отличие от инструкций из README. Последней командой мы создаем ключ, который будет известен только серверу и клиентам. В итоге все левые попытки подключения будут сразу и без ответа проигнорированы на ранней стадии, ещё до авторизации. Это значительно снижает нагрузку на наш сервер в случае DoS атаки.
5. Теперь создаём корневой сертификат, которым будем подписывать все остальные сертификаты (сервера и клиентов). Доступ к приватному ключу корневого сертификата должен быть только у того, кто генерит сертификаты, и нужен он только для генерации сертификатов.
Во время генерации нам предложат указать несколько полей (значения по умолчанию для них мы задали в vars.bat). Важными для нас будут только Common Name (также известный как CN), и Name. Для всех наших сертификатов значения CN должны быть уникальными, т.е. относитесь к нему как к логину. Другое поле, Name, используем как место для ФИО или описания логина. Все остальные поля оставляем по умолчанию (жмём Enter вместо ввода текста).
> build-ca.bat
При создании корневого сертификата в Common Name я пишу ca_root, и соответственно заполняю поле Name:
Country Name (2 letter code) [RU]:
State or Province Name (full name) [RU]:
Locality Name (eg, city) [Pikabu]:
Organization Name (eg, company) [League Of Gamers]:
Organizational Unit Name (eg, section) [Virtual LAN]:
Common Name (eg, your name or your server’s hostname) [login]:ca_root
Name [User Name]:CA Root
6. Создаём файл с параметрами Диффи-Хеллмана. Он используется для безопасного обмена ключами при подключении к серверу. Это может занять некоторое время, в общем случае — нескольких секунд.
> build-dh.bat
Первоначальная подготовка завершена. Все последующие операции можно делать неограниченное количество раз в любой момент. Единственное, что надо помнить: нужно запускать vars.bat в каждом новом сеансе командной строки. Далее генерим один серверный и один или несколько клиентских сертификатов, которые будут использоваться для беспарольной авторизации при подключении.
В зависимости от настроек сервера (которые будут показаны дальше в посте) можно позволить клиентам использовать один и тот же общий сертификат, или же создавать сертификаты индивидуально. Я использую второй вариант, поскольку играю со знакомыми и мне несложно создать для каждого индивидуальный сертификат. Впрочем, первый вариант тоже имеет право на существование, если цель — создать открытую локалку для произвольного числа участников, только в этом случае мы фактически не имеем контроля над отдельными участниками. Если необходимо, то клиентский сертификат можно забанить на сервере — в первом случае доступа к серверу лишается вся группа, а во втором — только один человек. Опять же, выбирайте, какой вариант вам более удобен.
7. Создаём сертификат для сервера. В качестве параметра для build-key-server.bat рекомендую использовать то же значение, которое будет указано как логин. Это необязательно, но помогает не запутаться потом в файлах.
> vars.bat
> build-key-server.bat server
Почти все значения оставляем по умолчанию (жмём Enter вместо ответа), кроме необходимых: логин, имя, и двух подтверждений на подпись и выпуск сертификата.
Common Name (eg, your name or your server’s hostname) [login]:server
Name [User Name]:VPN Server
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
В папке C:\Program Files\OpenVPN\easy-rsa\keys должны появиться файлы server.crt, server.key и server.csr
8. Создаём сертификат для клиента. Позднее, при добавлении новых клиентов пункты с 1 по 7 включительно пропускаем.
> vars.bat
> build-key.bat user1
Отвечаем на вопросы по тому же принципу, как и при создании серверного сертификата:
Common Name (eg, your name or your server’s hostname) [login]:user1
Name [User Name]:Username 1
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
На выходе имеем комплект файлов user1.crt, user1.key и user1.csr. Файлы *.csr — промежуточные, нам они без надобности и при желании их можно смело удалять.
Кстати, немного о файлах и безопасности. В текущем виде секретными файлами являются *.key — они должны быть только у того, кому предназначены. Думайте о них как о файлах, содержащих пароль. Самым же оберегаемым файлом должен быть ключ к корневому сертификату, так как любой человек, заполучивший этот ключ, сможет наклепать сколько угодно сертификатов, которые подойдут к нашему серверу. В нашем случае мы генерим сертификаты на будущем сервере, но ничто не мешает создавать их на отдельном компе, чтобы даже серверу был неизвестен ключ от корневого сертификата.
Файлы *.crt, созданные нами, наоборот, не несут никакой секретной инфы и без соответствующего ключа спокойно могут быть обнародованы в инете.
Теперь начинается самая мякотка: создание собственной конфигурации OpenVPN. По умолчанию файлы конфигураций должны находиться в папке C:\Program Files\OpenVPN\config, её надо создать вручную. Конфиги сервера и клиентов будут немного различаться. Постараюсь дать более-менее внятное описание к каждой строчке конфига. А вообще, все доступные опции подробно расписаны в документации, находящейся в C:\Program Files\OpenVPN\doc\openvpn.8.html
Возьмём самую типичную схему: подключение к инету через роутер, наш сервер OpenVPN находится за NATом. При создании конфига примем, что:
— Служба будет запущена на порту 1194
— Роутеру выдан внешний IP адрес 9.9.9.9; если IP динамический, то мы заранее получили DDNS имя (например, my-vpn.example.org)
— Роутеру присвоен внутренний статичный IP адрес 192.168.0.1 (для ясности, в конфигах не используется)
— Серверу присвоен внутренний статичный IP адрес 192.168.0.2
— На роутере входящие TCP соединения к порту 1194 перенаправляются на адрес 192.168.0.2, порт 1194. Да, UDP передаётся немного быстрее, но нет гарантированной доставки пакетов и порядка их доставки, так что мой выбор был в пользу TCP. На практике же всё зависит от инета, и пинг в 17 мс на расстоянии более 200 км и разных провайдеров для меня вполне приемлимо.
— Наши IP адреса в виртуальной локалке будут лежать в диапазоне 172.27.10.1 — 172.27.10.254 с маской 255.255.255.0
### Конфигурация сервера ###
Создаем файл server.ovpn, открываем его в блокноте и начинаем заполнять конфиг. В конце поста будет секция для копипастинга, а здесь — подробно про каждую используемую опцию. Готовый файл кладём в папку C:\Program Files\OpenVPN\config
port 1194
Порт, на котором будет запущена служба. 1194 — это порт по умолчанию, так что время от времени всякие левые личности будут пробовать подключиться к этому порту. Чтобы значительно снизить количество таких «проверок», можно запустить сервис на другом свободном порту, например, из диапазона 2048 — 65535. Для этого придется соответственно изменить конфиги сервера и клиентов, и перенастроить проброс порта на роутере. Добавлю, что сам по себе перенос сервиса на нестандартный порт не может считаться хоть какой-то защитой. Скорее — это первичный фильтр от пионеров и быстрых сканирований.
Тип сетевого интерфейса, используемого при создании тоннеля. В данном случае указывает на наш сетевой интерфейс, который мы назвали «OpenVPN TAP». Оставьте как есть.
keepalive 30 120
Настройки таймаутов. Если в течении 30 секунд по тоннелю не было ничего отправлено, то принудительно отправляется контрольный пинг. Если ответа на пинг нет в течении 240 секунд (для сервера это значение автоматически удваивается, чтобы аналогичный таймаут сработал сначала на клиенте), то производится автоматическое переподключение.
persist-key
При перезапуске тоннеля ключи не будут читаться заново из файлов, а будут использован кэш в памяти.
persist-tun
При перезапуске тоннеля сетевой интерфейс («OpenVPN TAP») не будет выключаться и включаться, что уменьшит время на переподключение.
Управляет количеством и типом инфы, которое будет выводиться в лог. 0 — полное отключение логирования, чем больше число (вплоть до 11), тем больше инфы будет валиться. Как правило, больше 4 имеет смысл разве что при продвинутой отладке. С 1 в логе будет видны попытки подключения/отключения, логины подключающихся и прочая мелочь.
Ограничивает вывод в лог последовательных однотипый сообщений. В данном случае, максимум три похожих сообщения подряд будут записаны.
comp-lzo no
Отключает сжатие передаваемых по тоннелю данных. Абсолютно ненужное для нашего случая действо, так как в основном игры передают друг другу бинарные данные, которые при сжатии даже могут увеличиваться в размерах в итоге. Так что незачем тратить на это время. Да и в общем случае, сейчас доля текстовой инфы в трафике крайне мала, а картинки или видео как правило уже сжаты, так что польза от компрессии тоннеля весьма сомнительна.
proto tcp-server
Используем протокол TCP для поднятия тоннеля в режиме сервера.
server 172.27.10.0 255.255.255.0
Присваиваем серверу локальный IP 172.27.10.1, автоматически раздаём IP адреса всем подключающимся клиентам из диапазона 172.27.10.2 — 172.27.10.254 и соответственно настраиваем маршрутизацию.
local 192.168.0.2
Сервер будет принимать vpn подключения только на этом адресе/интерфейсе. Можно эту опцию не указывать, тогда сервер будет запущен на всех доступных ему локальных IP адресах.
client-to-client
По умолчанию все клиенты изолированы друг от друга и видят только сервер. С этой опцией становится возможна передача данных между клиентами.
tcp-nodelay
Отключает буферизацию TCP на сервере и клиентах, что позволяет пихать пакеты в тоннель как можно быстрее.
tcp-queue-limit 256
При отправке пакетов от сервера к клиентам может произойти так, что виртуальный сетевой интерфейс «OpenVPN TAP» будет генерить пакеты быстрее, чем они отправляются к клиентам через TCP соединение. Если очередь заполнится, то новые пакеты будут дропаться, пока не появится место в очереди отправки. Эта опция увеличивает размер очереди отправки (по умолчанию — 64).
#duplicate-cn
По умолчанию (и сейчас) отключенная опция, которая, будучи задействованной, позволяет нескольким клиентам использовать один общий сертификат. Без этой опции новый клиент с таким же сертификатом выкинет с сервера старого клиента.
#crl-verify «crl.pem»
Также закомментированная опция. Используется для отзыва (бана) сертификатов. Параметром является специально сформированный файл, содержащий инфу об отозванных сертификатах. О том, как этим пользоваться, будет рассказано далее в посте.
tls-auth «hmac.key» 0
Используем ключ, который мы сгенерили в 4 шаге для быстрой отбраковки левых попыток авторизации. Второй параметр ставим 0 для серверного конфига или 1 для клиентского.
ca «ca.crt»
Указываем корневой сертификат, которым подписаны серверный и клиентский сертификаты.
cert «server.crt»
Указываем сертификат, используемый для авторизации. В данном случае — сертификат сервера.
key «server.key»
Указываем на ключ к сертификату из предыдущей опции.
dh «dh1024.pem»
Указываем на файл с параметрами Диффи-Хеллмана, который мы создали в 6 шаге. Требуется только для сервера.
### Конфигурация клиента ###
Для каждого клиента создаем отдельный файл конфигурации. Различаться эти файлы будут только параметрами для опций cert и key. К примеру, для логина user1 создадим файл user1.ovpn со следующими опциями:
port 1194
keepalive 30 120
persist-key
persist-tun
comp-lzo no
Несколько общих одинаковых опций, уже описаных выше.
proto tcp-client
Используем протокол TCP для поднятия тоннеля в режиме клиента.
Принимаем настройки маршрутизации от сервера и включаем TLS шифрование в режиме клиента.
remote 9.9.9.9
Указываем адрес vpn сервера. Можно указать доменное имя, например, my-vpn.example.org из наших предположений в начале секции.
connect-retry-max 2
Количество попыток переподключения в случае обрыва соединения. Если опцию не указывать, то клиент будет пытаться подключиться до бесконечности.
Использовать динамический порт для исходящего подключения. Порт будет выбираться на усмотрение ОС. Если не указать эту опцию, то для исходящих подключений будет использован порт, указанный в опции port.
remote-cert-tls server
Защита от MitM-атак: проверяет, что другой сертификат «с той стороны тоннеля» подписан и используется как серверный сертификат. Аналогичная проверка со стороны сервера (remote-cert-tls client) тоже может быть указана в серверном конфиге, но так как атака направлена на исходящее соединение от клиента к серверу (подмену сервера на злоумышленника с клиентским сертификатом), то от опции remote-cert-tls client будет мало пользы в нашем случае.
tls-auth «hmac.key» 1
Используем ключ, который мы сгенерили в 4 шаге для быстрой отбраковки левых попыток авторизации. Второй параметр ставим 0 для серверного конфига или 1 для клиентского.
ca «ca.crt»
Указываем корневой сертификат, которым подписаны серверный и клиентский сертификаты.
cert «user1.crt»
Указываем сертификат, сгенеренный для пользователя.
key «user1.key»
Указываем ключ от пользовательского сертификата.
Конфиги готовы. Для остальных клиентов копипастим имеющийся клиентский конфиг и меняем значения опций cert и key.
########## Собираем все нужные файлы вместе ##########
В папке C:\Program Files\OpenVPN\easy-rsa\keys находится всё, что было создано консольными командами. Забираем оттуда всё, что используется в конфиге. В конечном итоге, в папке C:\Program Files\OpenVPN\config должны быть следующие файлы:
Не забываем, что в файлах *.key содержится приватная информация, поэтому передаём ключи клиенту по возможности по безопасному каналу.
########## Подключение и проверка ##########
Запускаем OpenVPN-GUI с правами администратора (неактуально в версии 2.4.), в трее на иконке нажимаем правую кнопку мыши и в меню выбираем «Подключиться». В зависимости от типа конфига, запустится сервер или клиент vpn. После успешного подключения иконка сменит цвет на зелёный.

Теперь осталось только убедиться, что ранее мы правильно настроили метрики интерфейсов. Открываем командную строку и выполняем команду
> route print
Будет показана таблица маршрутизации, в которой нам интересны последние строчки с широковещательными адресами 255.255.255.255 — надо убедиться, что у нашего vpn интерфейса самая маленькая метрика. На скриншоте специально покрасил в зелёный цвет vpn интерфейс и его метрику. Если она не минимальная — то читайте внимательнее часть гайда «Настройка сетевых интерфейсов». Такую проверку желательно делать каждый раз после добавления/изменения настроек сетевых интерфейсов.

########## Блокировка сертификатов ##########
Иногда возникает необходимость заблокировать какой-нибудь определенный клиентский сертификат, чтобы лишить этого пользователя возможности подключиться к нашему серверу. Отзыв сертификата user2.crt с CN=user2 происходит так:
> vars.bat
> revoke-full.bat user2
В результате в папке keys будет создан или обновлен файл crl.pem, в котором содержатся данные обо всех отозванных сертификатах. Этот файл нужно скопировать в папку config на сервере, после чего в серверном конфиге задействовать опцию
crl-verify «crl.pem»
После перезапуска сервера пользователь user2 уже не сможет подключиться.
########## Отмена блокировки сертификата ##########
Ещё реже, чем блокировка, может потребоваться вернуть пользователю доступ в vpn сеть. Здесь есть два варианта — либо сгенерировать пользователю новый сертификат с новым CN (логином), либо разблокировать забаненный. Про первый вариант рассказано выше, а разблокировка производится вручную следующим способом:
1. В папке keys находим файл index.txt и открываем его блокнотом. В нём перечислены все сертификаты. У действующих сертификатов в первом столбце будет буква V, а у отозванных — R и время отзыва будет указано в третьем столбце.
2. Находим нужный нам отозванный сертификат, заменяем в первом столбце букву на V, и удаляем время отзыва сертификата. Если сертификатов много, то можно искать по серийному номеру: в файле *.сrt он указан в поле «Serial Number».
3. Генерим crl.pem с новыми данными:
> vars.bat
> openssl ca -gencrl -out keys\crl.pem -config «%KEY_CONFIG%»
4. Копируем новый crl.pem в папку config на сервере и перезапускаем сервер.
Содержимое файлов server.ovpn и client.ovpn, подробно расписанных выше.
### server.ovpn ###
keepalive 30 120
server 172.27.10.0 255.255.255.0
tls-auth «hmac.key» 0
### user1.ovpn ###
keepalive 30 120
tls-auth «hmac.key» 1
Отличный мануал для деревянных, спасибо.
@fffu, @FHell, товарищи знатоки, тема все еще актуальна? Пользуетесь ли всем этим?
Если да, выручите, пожалуйста. Пытаюсь себе тоже настроить, да вот только не выходит что-то. В сетях не особо разбираюсь, мягко говоря.
Делаю все по инструкции, но подключиться не удается. И всякий раз ошибки тоже разные. Чую, что что-то я не сделал \ не доделал именно с роутером (DIR-300 NRU — если на нем вообще что-то подобное можно провернуть).
По сэмпл файлу к серверу подключается (сертификаты и ключи автора данного поста), а вот к авторским настройкам сервера не удается.
Тестировал как на новой версии OpenVPN (2.4.7), так и на той, которой автор поделился в комментариях (2.3.8). Ошибки, соответственно, тоже разные на разных версиях.
В общем последнее, что имеется по инструкциям автора на версии OpenVPN 2.4.7 при запуске через cmd (картинка 1). И лог ошибок при запуске через GUI (картинка 2). Порты вроде как пробросил в роутере, но что-то не уверен и, кажется, все дело именно в этом.


Если всё ещё кто-то здесь сидит, нет ли гайдов для новейшей версии OpenVPN? Уже на втором пункте названия строк чуть другие, но это ещё ладно, но вот init-config.bat в новых версиях просто нет. при этом vars.bat теперь vars.example и в себе имеет какой-то гайд (хотя, по расширению файла мог бы догадаться). Там же всё же есть какой-то .bat-ник с другим названием, его чуть позже попробую запустить. Пока что ещё один вопрос:
Можно ли таким образом сделать локальную сеть Телефон (Android)-Компьютер (PC)? Просто у моего друга есть только телефон, а мы очень хотим поиграть по коопу в Morrowind (через tes3mp). Игру на телефоне уже тестил — работает. Но проблема в том, чтобы наладить локальное соединение между компьютером и телефоном
Здравствуй, решил заняться всей этой «темой» для уменьшения пинга до компа друга, если пинговать напрямую без всяких танглов и хамачей, получается пинг в пределах 3мс, а вот через вышеперечисленные сервисы 40мс-50мс. Будет ли пинг через этот опенвипиен такой же как и напрямую или будут те же 40-50?
Отличный мануал. Была проблема. При исполнении файла build-dh, пишет «openssl» не является внутренней или внешней командой, исполняемой программой или пакетным файлом. В файле vars нужно раскомментировать эту строку set «PATH=%PATH%;C:\Program Files\OpenVPN\bin»

Управление источниками света и эффектами в Stable Diffusion с помощью многослойного ControlNet + 41 пресет освещения
Друзья, ControlNet творит чудеса. И сегодня я научу вас как творить чудеса с освещением и включать несколько слоев ControlNet одновременно, это даст нам огромный простор для творчества, а еще очень понравится фотографам.

Вы научитесь делать так же
Что нам потребуется:
1. Актуальный Automatic 1111 с установленным и активированным ControlNet в коллабе или локально.
2. Изображение на котором мы будем менять свет, у меня Бунтарка, у вас может быть что угодно. 3. Пресеты для света бесплатно выложены на Бусти, просто нажми скачать. Можешь нажать «отслеживать» чтобы не пропустить мои новые стримы и видео 😜

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

Бунтарка — обученная на синтетическом дата-сете текстовая инверсия.

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

Я уже по-генерил, но у вас тут фоток справа не будет.
Затем опускаетесь в ControlNet, тут нам надо нажать галку Enable, для активации, выбрать препроцессор depth_leres и модель depth, разрешение анотатора LeReS Resolution ставьте такого же размера по самой большой стороне как и ваша фотография, у меня 768. И собственно загружаем нашу фото основу.

Знаете ли вы, что с помощью настройки Remove Background % можно очень хорошо вырезать персонажа с фона? Теперь знаете, поиграйтесь.
Задаем наши любимые параметры генерации, у меня это будет 2м Карась, выставляем размеры равные размеру нашего изображения загруженного в ControlNet. Denoising strength ставим на 0.90.

Настройки вполне стандартные
Теперь генерируем несколько вариаций с дефолтным светом и выбираем ту с которой будем играться, у меня будет вот эта

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

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

Электричество кончилось

А теперь сделаем источник света уже и обрежем.

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

Включаем свет

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

И света снова нет.

Кто балуется с выключателем?
А еще мы можем загрузить совсем другие карты освещения, например в виде сердечек и в один клик получить потрясающий эффект на фото. Настройки ControlNet даже не меняем.

Просто меняем картинку уменьшаем деноизинг, чтобы сердечки проступали на фото

Милота и как мы любим в один клик
Или можем например сделать луну из окна и свет свечи сбоку, надо просто выбрать карту освещения по интереснее, я сейчас как раз собираю пак разных карт, эффектов и фонов для ControlNet и тоже залью на бусти, так что подпишись, чтобы не пропустить.

Собрал уже более сотни различных текстур и эффектов

Луна сверху, свеча сбоку, как на карте.
Что мы еще можем сделать, например можем загрузить текстуру огня и устроить пожар.

Этот и другие эффекты скоро тоже выложу

Очень мягкий и уютный свет, как на закате
А если уменьшим деноизинг еще сильнее, до 0.5, то буквально сожжем Бунтарку, как Жанну Д`арк

Гори, гори ясно
С учетом возможности включения многослойного ControlNet, это дает нам неограниченные возможности. Как вы не знали, что можно включить несколько слоев?
Сейчас расскажу, все очень просто. Идем в Settings, находим слева ControlNet, находим ползунок Multi ControlNet: Max models amount (requires restart), сдвигаем на сколько нам надо (помните что каждый слой это время и ресурсы видеокарты), мне пока хватает двух, но можно включить до 10 и комбинировать различные модели и препроцессоры. Для активация потребуется перезапуск web-ui.bat.
Что мы можем с этим сделать, а давайте включим еще один ControlNet, я возьму картинку из будущего пака с фонами, текстура листиков и открою её вместе с моделью depth и препроцессором depth_leres, уменьшу вес модели, выкручу вырезание фона у листиков.

Это уже второй слой, вон сверху написано
И в качестве результата у меня будет свет загруженный в img2img, персонаж вытащенный картой глубины с первого СontrolNet и листики со второго.

Легко и просто правда
А на этом у меня все друзья, скидывайте примеры ваших работ и ваши кейсы использования различных слоев ControlNet, возможности его применения просто поражают воображение, думаю мы еще долго будем открывать новые не стандартные методы применения ControlNet и различных вариаций препроцессоров и моделей. Увидимся на стримах.
Мой телеграм канал, все секреты и советы, мои работы, нейро-новости, промпты, ссылки на стримы и многое другое только в нем, подпишитесь!
В чате нейро-операторов, можно попросить картинку, поделиться опытом или задать вопрос.
Записи моих обучающих стримов доступны на Бусти, там же выложены ххх сеты и можно получить доступ в секретный чат, где я буду учить тебя генерить в ламповой и уютной атмосфере.
Мои видео уроки по Stable Diffusion можно посмотреть на YouTube, подпишитесь, чтобы не пропустить новые ролики.

Пресет ControlNet для переворачивания персонажей в Stable Diffusion
Друзья, буквально в прошлом гайде я вам обещал, что скоро будут появляться готовые пресеты для OpenPose в ControlNet, и вот первая ласточка. Этот пресет позволяет вам сделать художественный грид на котором будет превью персонажа. Это работает на любой модели, без лор, эмбедингов и всего прочего, т.е. вы получаете полную и абсолютную гибкость. Конечно это работает не идеально и придется поинпеинтить, но еще неделю назад я и представить не мог, что смогу создать такой грид за одну генерацию!

Не идеально, но за одну генерацию (не считая инпеинтинга лиц).
Актуальный Automatic 1111 с установленным и активированным ControlNet в коллабе или локально.
Промпт, эмбединг, лора или что-то еще что содержит описание нашего персонажа.
Сам OpenPose пресет скачивайте тут.

Это гениально и просто
Автоматик запустили, открыли на вкладке txt2img, контролнет включили галочкой Enable, препроцессор отключили, модель поставили OpenPose, загрузили скаченный пресет в окошко в контролнет.

Это. Очень. Просто.
Практически все готово, теперь выставляем ширину в 1024, это важно. Все мы знаем глитч из-за которого при выставлении высокого разрешения персонаж начинает тупо копироваться, вот тут на этом играет на руку.

Никакой магии, только ловкость рук
Еще один момент, промпт должен начинаться с (character sheet:1.6) of 1 women. или man или orc, кто там у вас, ну и далее по тексту прмопта. Чтобы получить хороший результат прописывайте и персонажа и его одежду, немного повысьте уровень CFG, скажем до 10. И через 2-3 генерации у вас будет такой результат, который вас устроит. Дальше немного инпеинтинга и готово, в общей сложности 5-10 минут не считая генерации.

Вот так получилось у меня с промпта

А вот так с эмбединга
А на этом у меня все, скидывайте в чатик интересные пресеты, если найдете, может быть соберем коллекцию. Скидывайте свои работы, очень хочется увидеть результат от настоящего концепт артиста или игрового художника.
Скоро увидимся друзья и обязательно заходите на мои стримы.
Мой телеграм канал, все секреты и советы, мои работы, промпты и многое другое только в нем.
В чате нейро-операторов, попросить картинку, поделиться опытом, задать вопрос сюда.
Поддержать меня можно на Бусти, там выложены лучшие сеты и можно получить доступ в секретный чатик.

OpenPose editor для ControlNet в Stable Diffusion
Друзья, когда ControlNet только вышел я сразу вам рассказывал, что уже через неделю будет расширение которое позволит нам редактировать позу прям в автоматике и даже без фотографии в качестве референса.

Это расширение уже здесь
Установка очень простая переходите на вкладку Extensions – Avalibaile – Load находите в списке openpose-editor, Install, обратно на прошлую вкладку и Applay and Restart UI. Готово у вас появилась вкладка OpenPose Editor.

Настройки тут простые как пять копеек, вы указываете размер своего холста т.е. разрешение будущей картинки. А потом берете скелетик и двигаете его так как хотите. Скелеты имеют по три точки на ногах, руках и теле, и еще несколько на голове, кликните на точку и удерживайте и вы можете легко поставить персонажа в нужную вам позу.
Я например поставлю вот в такую странную позу:

Нужно немного приноровится чтобы понимать как точка за какой сустав отвечает, но схема рабочая.
Когда поза выставлена вы можете сохранить её как PNG чтобы использовать позднее, сохранить как JSON чтобы импортировать в другие программы, или сразу же отправить в ControlNet и сделать из этой позы картинку. Мы так и поступим.

Это мы уже на вкладке txt2img и все готово к работе
Не забываем нажать галочку Enable и выставить модель openpose, препроцессор мы не ставим т.к. уже сделали эту работу сами. Генерируем!

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

Я так вообще устрою пакистанский рейв.

А вот и результат, отличная динамичная сцена с минимумом усилий и тремя персонажами, в инпеинтинге сможем сделать им разные лица.
Что еще тут есть полезного, на вкладке OpenPose Editor мы можем выставить позу по фотке и отредактировать её, для этого загрузите фото через кнопку Detect from Image. Если хочется то корректируем, или сразу закидываем в ControlNet.

Получаем позу из фотки в один клик
Генерируем получаем превосходный результат.

Кстати, у этого нового персонажа еще нет имени, если есть идеи пишите в комментарии.
Друзья, теперь все стало гораздо проще и удобнее, это очень важная веха которая меняет все.
Ну и раз уж я стал вашим местным оракулом, то расскажу как дальше будет развиваться эта тема. Появятся готовые пресеты для поз, чтобы выставленную позу можно было сохранить, будет библиотека с готовыми позами, ведь их можно загружать из JSON т.е. из программ для 3д моделирования и много откуда еще. И будет доработан в конце концов openhand и руки мы сможем выставлять точно так же в этом же расширении. Ну и в конце концов само расширение переедет по ближе, во вкладку генерации чтобы прямо там же создавать.
До этого по моим скромным оценкам уже по больше времени, думаю около месяца. Будем подождать. А пока have fun мои хорошие.
Мой телеграм канал, все секреты и советы, мои работы, промпты и многое другое только в нем.
В чате нейро-операторов, попросить картинку, поделиться опытом, задать вопрос сюда.
Поддержать меня можно на Бусти, там выложены лучшие сеты и можно получить доступ в секретный чатик.
Творите все!
У вас такое было что до зуда хочется что-то сделать? Что-то красивое? Что-то свое? Нарисовать, сфотографировать, смастерить? Но рисовать вы не умеете, фототехника стоит дорого, а для мастерить руками вы слишком рукожоп? Но в голове то ворох идей или одна, но постоянно зудит.
Поздравляю. Вы родились в правильное время.
Это вторая часть по нашему легкому вкатыванию в нейроисскуство. Первую вы можете найти здесь (больше 500 плюсов, 🤯). Так как данная инструкция подходила только для владельцев Nvidia это как-то расходится с заголовком новой статьи. С этим гайдом (не мой, youtube) могут творить действительно все, даже со смартфона.

Приступим к новой теме, она легкая, но я хочу убедиться что все, все понимают и нет пробелов.
Пройдемся по настройкам основной вкладки. (Обозреваемая картинка в середине списка, чтобы постоянно не скролить)
1. Модель, которая используется для генераций. Если просто то отличаются друг от друга так называемыми весами, одна будет лучше выдавать аниме, другая реализм, третья голых девиц. Скачать модели можно на сайте https://civitai.com/
2. Позитивный промпт — это то, что мы ХОТИМ видеть на картинке. Например, A girl in a summer dress standing in a field
3. Негативный промпт — это то, что мы НЕ ХОТИМ видеть на картинке. Например, Asian. Попробуйте не поставить Asian и каждую генерацию будете получать азиата)
4. Семплер. Коротко то как будет интерпретироваться шум, из которого собственно модель и делает картинку. Как выбрать семплер будет в следующих статьях.
5. Сколько раз нужно пройтись по вашим промптам. Слишком маленькой значение выдаст артефакты, слишком большое часто бессмысленное, так как с каждым новым проходом шума на картинке все меньше, а значит и возможностей для вносимых изменений меньше. Значение в 20 шагов можно считать универсальных для большинства настроек. Но есть нюансы, о которых лучше расскажу в следующих статьях. Эта сильно всех влияет на время генерации. Так как каждая единица это дополнительный проход по изображению.

6. Размер выходного изображения. Обычно модели обучаются на картинках 512 на 512, 768 на 768, то есть на квадратных и чем больше вы будете отходить от этих значений тем больше вероятность задвоений. Будут создаваться близнецы и люди в людях. Я предпочитаю генерировать в 768 на 1024. Так же сильно влияет на время генерации.
7. Batch count – сколько картинок сгенерировать подряд. Batch size – сколько картинок генерировать единовременно. Не влияет на качество получаемых картинок.
8. CFG Scale. Очень влияет на качество картинок. Чем больше масштаб тебе ближе картинка должна быть к вашим промтам и казалось бы ставь на максимум и готово, но нет. Полученный результат проще всего будет назвать «Перестаралась». Например, если добавить веснушки, но на высоких значениях они будут размером с горох. Это значение дает большое поле для экспериментов. О том как его выбрать поговорим в следующих статьях. Рекомендуемые значения от 3 до 11.
9. Seed. Нейросеть генерирует картинку для шума. Если с одинаковыми настройками взять 2 одинаковые картинки с шумом то и результат получится одинаковым. Значение -1 каждую генерацию выбирает случайный набор шума. Можете задать свой, можете взять чужой, чтобы повторить его генерацию. Так же понадобится когда картинка вам понравилась, но вы хотите ее слегка изменить, например пройтись большим количеством семплов или с другим cfg. Спойлер, это может изменить ее довольно сильно. Как менять слегка расскажу в следующих статьях.
10. Когда все настройки выставлены можем генерировать нашу картинку.
Галочка Restore face – может исправить искривленное лицо. Справляется не всегда.
Галочка Hires. fix – увеличивает разрешение вашей картинки, но лучше это делать после, во вкладке Extras так как прилично увеличивает время генерации.
Галочка Tiling — для создания бесшовных текстур. Может пригодиться 3д модельерам и иллюстраторам.
Вот так выглядит типичный процесс генерации. Вбили промпты. Как это делать быстро расскажу в другой статье. Выбрали модель(Deliberate). Семплер(DPM++ 2M Karras), определились с количеством шагов (Sampler steps 24). Галочка на Restore face и Hires. fix чтобы получить картинку побольше и без косяков на лице. Ширина, высота CFG Scale.

Получаем Скарлет, царицу полей.

Промпт в текстовом виде:
Young Scarlett Johansson, ((slightly covered by a cloth huge breasts)), wear very short t-shirt, white hair and standing in a field of tall grass with a blue sky in the background and a green dress, portrait photography, a character portrait, art photography
Negative prompt: deformed, bad anatomy, disfigured, poorly drawn face, mutation, mutated, extra limb, ugly, disgusting, poorly drawn hands, missing limb, floating limbs, disconnected limbs, malformed hands, blurry, ((((mutated hands and fingers)))), watermark, watermarked, oversaturated, censored, distorted hands, amputation, missing hands, obese, doubled face, double hands, asian, b&w, black and white, sepia, anime, doll, 3d, render, double hands
Steps: 24, Sampler: DPM++ 2M Karras, CFG scale: 3.5, Seed: 2701198923, Face restoration: CodeFormer, Size: 512×512, Model hash: d8691b4d16, Model: deliberate_v11, Denoising strength: 0.7, Hires upscale: 2, Hires upscaler: Latent
В следующий раз расскажу как делать что-то на основе другого.
Нейросети меня неплохо увлекли, если вас тоже приглашаю в телеграмм группу где сможем обсуждать проблемы, нововведения, делиться своими работами, опытом и учиться друг у друга. https://t.me/neuralphotoart_chat.
И канал где я выкладываю гайды чуть раньше чем тут(просто потому что там начал раньше) и картинки, которые могут нарушать правила площадки https://t.me/neuralphotoart.
Проект не коммерческий, а построен на чистой любви к прекрасному и энтузиазме.
Помогаю вкатиться в нейросети максимально просто
Под одним из постов у меня состоялся очень короткий диалог.

Когда я увидел вопрос то вспомнил что нужно объяснять про правильную версию питон, про гит, про настройку, про скачивание модели. Ну нафиг. Надо найти способ чтобы вкатиться в нейросети с минимальным количеством телодвижений. Это слишком классная штука а значит доступ должен быть даже у лиги лени. Внимание. Данная инструкция подходит только для владельцев видеокарт Nvidia.
Поехали. Все что нам предстоит сделать это скачать два файла и закинуть один в другой.
1. Перейдите на данную страницу https://github.com/AUTOMATIC1111/stable-diffusion-webui/releases нажмите на Assets чтобы увидеть файлы. Нас интересует sd.webui.zip . Скачиваем.
2. Распакуйте содержимое архива в удобное для вас место. Как можно ближе к корню любого диска. Например D:\stable-diffusion-ui.

3. Нам необходима модель, с помощью которой мы будем делать красиво. Идем на сайт https://civitai.com Осторожно есть контент для взрослых. Выбираем нашу модель. Я люблю создавать фотореалистичных людей для этого отлично подходит модель, от нашего соотечественника кстати, https://civitai.com/models/4823/deliberate. Вы же можете использовать ту стиль которой вам нравится, но если пока не чувствуете себя уверенно следуйте моим подсказкам.
4. Заходим на страницу модели и нажимаем на кнопку Download Latest.

5. После скачивания переместите скачанный файл в папку models\Stable-diffusion она находится в ранее нами распакованной папке. У меня этот путь выглядит вот так D:\stable-diffusion-ui\web-ui\models\Stable-diffusion

6. Дважды нажмите на run.cmd дальше скрипт все сделает за вас. Вам необходимо подождать пока он скачает необходимые для работы компоненты. Поэтому первый запуск может длиться дольше чем последующие.

7. И последний пункт. Когда вы увидели в консоли подобное, «Running on local URL: http://127.0.0.1:7860» значит все готово к работе и можно переходить на рабочую панель. Просто скопируйте адрес в строку вашего браузера http://127.0.0.1:7860 и нажмите Enter.

Готово. Вы восхитительны!

Нейросети меня неплохо увлекли, если вас тоже приглашаю в телеграмм группу где сможем обсуждать проблемы, нововведения и учиться друг у друга. https://t.me/neuralphotoart_chat.
И канал где я так же буду выкладывать все эти гайды и картинки которые могут нарушать правила площадки https://t.me/neuralphotoart
В следующей статье расскажу как сделать вот такое и не только


Доступен OpenVPN 2.6.0

После двух с половиной лет с момента публикации ветки 2.5 подготовлен релиз OpenVPN 2.6.0, пакета для создания виртуальных частных сетей, позволяющего организовать шифрованное соединение между двумя клиентскими машинами или обеспечить работу централизованного VPN-сервера для одновременной работы нескольких клиентов. Код OpenVPN распространяется под лицензией GPLv2, готовые бинарные пакеты формируются для Debian, Ubuntu, CentOS, RHEL и Windows.
Обеспечена поддержка неограниченного числа соединений.
В состав включён модуль ядра ovpn-dco, позволяющий существенно ускорить производительность VPN. Ускорение достигается за счёт выноса всех операций шифрования, обработки пакетов и управления каналом связи на сторону ядра Linux, что позволяет избавиться от накладных расходов, связанных с переключением контекста, даёт возможность оптимизировать работу за счёт прямого обращения к внутренним API ядра и исключает медленную передачу данных между ядром и пространством пользователя (шифрование, расшифровка и маршрутизация выполняется модулем без отправки трафика в обработчик в пространстве пользователя).
В проведённых тестах по сравнению с конфигурацией на основе интерфейса tun применение модуля на стороне клиента и сервера при использовании шифра AES-256-GCM позволило добиться прироста пропускной способности в 8 раз (с 370 Mbit/s до 2950 Mbit/s). При применении модуля только на стороне клиента пропускная способность возросла в три раза для исходящего трафика и не изменилась для входящего. При применении модуля только на стороне сервера пропускная способность возросла в 4 раза для входящего трафика и на 35% для исходящего.
Предоставлена возможность использования режима TLS с самоподписанными сертификатами (при применении опции «—peer-fingerprint» можно не указывать параметры «—ca» и «—capath» и обойтись без запуска PKI-сервера на базе Easy-RSA или похожего ПО).
В UDP-сервере реализован режим согласования соединения на основе Cookie, при котором в качестве идентификатора сеанса используется Cookie на основе HMAC, что позволяет серверу проводить верификацию без сохранения состояния.
Добавлена поддержка сборки с библиотекой OpenSSL 3.0. Добавлен параметр «—tls-cert-profile insecure» для выбора минимального уровня безопасности OpenSSL.
Добавлены новые управляющие команды remote-entry-count и remote-entry-get для подсчёта числа внешних подключений и вывода их списка.
В процессе согласования ключей более приоритетным методом получения материала для генерации ключей теперь является механизм EKM (Exported Keying Material, RFC 5705), вместо специфичного механизма OpenVPN PRF. Для применения EKM требуется библиотека OpenSSL или mbed TLS 2.18+.
Обеспечена совместимость с OpenSSL в FIPS-режиме, что позволяет использовать OpenVPN на системах, удовлетворяющих требованиям безопасности FIPS 140-2.
В mlock реализована проверка резервирования достаточного размера памяти. При доступности менее 100 МБ ОЗУ для повышения лимита осуществляется вызов setrlimit().
Добавлена опция «—peer-fingerprint» для проверки корректности или привязки сертификата по fingerprint-отпечатку на основе хэша SHA256, без применения tls-verify.
Для скриптов предоставлена возможность отложенной (deferred) аутентификации, реализуемой при помощи опции «—auth-user-pass-verify». В скриптах и плагинах добавлена поддержка информирования клиента об ожидании (pending) аутентификации при применении отложенной аутентификации.
Добавлен режим совместимости (—compat-mode), позволяющий подключаться к старым серверам, на которых используется OpenVPN 2.3.x или более старые версии.
В списке, передаваемом через параметр «—data-ciphers», разрешено указание префикса «?» для определения необязательных шифров, которые будут задействованы только при наличии поддержки в SSL-библиотеке.
Добавлена опция «—session-timeout» при помощи которой можно ограничить максимальное время сеанса.
В файле конфигурации разрешено указание имени и пароля при помощи тега <auth-user-pass></auth-user-pass>.
Предоставлена возможность динамической настройки MTU клиента, на основе данных об MTU, переданных сервером. Для изменения максимального размера MTU добавлена опция «—tun-mtu-max» (по умолчанию 1600).
Добавлен параметр «—max-packet-size» для определения максимального размера управляющих пакетов.
Удалена поддержка режима запуска OpenVPN через inetd. Удалена опция ncp-disable. Объявлены устаревшими опция verify-hash и режим статических ключей (оставлен только TLS). В разряд устаревших переведены протоколы TLS 1.0 и 1.1 (параметр tls-version-min по умолчанию выставлен в значение 1.2). Удалена встроенная реализация генератора псевдослучайных чисел (—prng), следует использовать реализацию PRNG из криптобиблиотек mbed TLS или OpenSSL. Прекращена поддержка пакетного фильтра PF (Packet Filtering). По умолчанию отключено сжатие (—allow-compression=no).
В список шифров по умолчанию добавлен CHACHA20-POLY1305.
Реанимируем Proton VPN при помощи OpenVPN
Здравствуйте уважаемые пикабушники. Недавно Р.К.Н. заблокировал много ВПН сервисов и в том числе авторитетный Proton VPN. Но, не всё потеряно.В прошлом посте я рассказал, как запустить Proton и Windscribe «c толкача», при помощи программы v2RayNG. Сегодня я подробно покажу/опишу, как обойти блок при помощи ПО Open VPN.
Делаем всё на Виндовс 10.
Для Андроид, Айфона, всё делается аналогично, а внизу есть линки на скачивание приложений.
С официального сайта скачаем и установим программу для Винды ТЫЦ выбрав свою разрядность

Какой файл качать – 32 или 64? Кликаем правой кнопкой мыши на рабочем столе по значку «Мой компьютер» — Свойства. Тут всё очевидно

Заходим в свой аккаунт Протона на страницу ВПН КЛИК и тыкаем в OpenVPN/IKEv2

Далее мотаем вниз.
Имя пользователя OpenVPN / IKEv2 **********
Пароль OpenVPN / IKEv2 ••••••••••••••••
Скопируйте в блокнот на рабочий стол. Потом пригодятся.
Прокрутим вниз и по пунктам
1. Выберите платформу — Windows (можно любую на выбор)
2. Выберите протокол — За нас уже выбрано UDP. Потом, то же самое, можно проделать и TCP
3. Выберите файл конфигурации и скачайте. У Вас бесплатный аккаунт? Выбор очевиден — Настройки бесплатных серверов. Выбор из трёх стран: Япония, Нидерланды, США.
Вы прикупили подписку? У Вас выбор намного больше).
Я беру Нидерланды и ищу наименее загруженный бесплатный сервер и скачиваю конфигурацию

Запускаем программу OpenVPN GUI (мы же её уже установили)) и кликаем правой кнопкой мыши (ПКМ) по иконке в трее. Идём в Настройки.

Особо ничего менять не надо, разве что убрать прогу из автозапуска.

Далее, там же в трее – Импорт – Импорт файла конфигурации – выбрать наш скачанный конфиг от Proton VPN.
Или в проводнике двойной клик по файлу и согласится на импорт.

Теперь клик ПКМ по иконке в трее – Подключиться – У нас выскакивает вот такое окно.
В самом начале мы сохранили в блокноте Логин и Пароль. Вот они и пригодились.

Идём на сайт https://2ip.ru/ или https://ipinfo.io/json и убеждаемся, что мы в Голландии. ))
Но. Конфиг может и не подключится. Есть выход – отредактируем его с помощью текстового редактора. Как на скрине меняем значения на 51820. Увы, проверить не могу — у меня и неотредактированный работает и отредактированный.

Таким образом качаем себе на комп/смартфон файлы для Open VPN поболее , и когда одни серверы перегружены, мы просто подключаемся к другим.
Где взять ещё бесплатных конфигов для Open VPN?
Идём на сайт https://www.vpngate.net/en/ Прокручиваем ниже, и скачиваем любой с отмеченного столбца. Конфигов там много.


И вот ещё сайт, где раздают конфигурации Open VPN
_____ А теперь _________

Переходите по ссылке на сайт Антизапрет ТЫК
Промотать до VPN, Пункт 2 и скачиваете файл конфигурации.
Импортируем его в OpenVPN.
Теперь мы сёрфим в сети без проблем, причём ВПН срабатывает только на заблокированных сайтах. Остальной трафик идёт на прямую.
Для пикабушников Украины есть конфиг на сайте Заборона Хелп
На Андроид и IOS всё протоновские файлы формируем аналогично — Также протоновские конфиги скачиваем, но в меню выбираем для Андроид или IOS. либо для МакОС и т.п.
PS. А ещё из Протона можно вытащить конфиги для WireGuard. Примерно так же, как и с OpenVPN

Казалось бы, к чему все эти телодвижения?
Отвечаю — Протоновские сервера надёжны и в «сливе» не замечены. А если у Вас ещё и подписка платная и Вы ей не можете воспользоваться, ответ очевиден.
Сейчас должны появиться комменты, что свой сервер за бугром надёжнее всех ваших ВПНов. Да, я знаю. Кто интересуется этой тематикой, Вам сюда https://pikabu.ru/@HolderN/saved/1659157

Делаем свой VPN-сервер с безлимитным трафиком за 200 рублей в месяц

Если раньше VPN-сервисы были уделом для гиков и тех, кому нужен доступ к немногочисленным заблокированным в России сайтам, то сегодня это уже необходимость для всех. Из-за большого наплыва пользователей, платные и особенно бесплатные VPN-сервисы испытывают большие нагрузки, поэтому скорость доступа изрядно снижается.
Единственный выход — сделать свой личный VPN-сервер, который, к тому же, никто не сможет заблокировать. Думаете, что это сложно? На самом деле нет, сейчас расскажу, как сделать свой VPN за 20 минут. Доступ к нему можно дать даже своим друзьям.
Что такое Outline
Outline — это не привычный VPN-сервис, к которым многие привыкли. По сути, это self-hosted продукт, который вы настраиваете на своём или арендованном облачном сервере. Конфигурация Outline позволяет удобно подключаться к вашему VPN-серверу и предоставлять доступ другим людям на ваше усмотрение.
Outline был разработан компанией Jigsaw — внутренней командой Google, но не переживайте, никаких скрытых опций для сбора персональных данных в приложении нет.
Как минимум потому, что исходный код можно найти в свободном доступе на GitHub и изучить его на наличие подводных камней. Но их вы не найдёте, потому что сервис проходил в 2018 году проверку безопасности специалистами двух независимых организаций: Radically Open Security и Cure53. Они подтвердили, что Outline отвечает новейшим стандартам безопасности.
Более того, все передаваемые через сервер данные, Outline шифрует по стандарту AEAD 256-bit Chacha2020 IETF Poly 1305. То есть, никто из вне, даже среди тех людей, кто имеет доступ к подключению, не сможет перехватить информацию других пользователей. В том числе и вы, даже будучи владельцем сервера.
Арендуем и настраиваем сервер
Хостинги есть разные — от Amazon и Google до Digitalocean. Но, увы, воспользоваться ими нельзя, потому что оплата российскими банковскими картами заграницей не проходит. Поэтому обратимся к российской платформе VDSina.
Площадка даёт возможность арендовать виртуальный сервер как в Москве, так и в Нидерландах. Нам нужен второй вариант.
После регистрации на сайте заходим в панель управления и выбираем пункт «Добавить сервер». Предварительно не забудьте пополнить баланс. Можно при помощи банковской карты, Qiwi или ЮMoney.
Затем настройте сервер по следующим параметрами:
ОС: CentOS 7
Тип сервера: Стандартные серверы
Тариф: 6,6 рублей в день (примерно 200 рублей в месяц) при трафике 32 ТБ в месяц
Локация сервера: Амстердам
Автоматическая резервная копия: отключить
После настройки в раздел с поддержкой придёт тикет, который будет содержать всю информацию о сервере (IP-адрес и пароль).
Разворачиваем Outline
Скачиваем с официального сайта Outline Manager и устанавливаем клиент для подключения к VPN на свой компьютер и другие устройства.
Открываем Outline Manager и выбираем пункт «Настройте Outline где угодно». Затем открываем Терминал (в macOS он встроен), для Windows советую скачать Putty для ssh-подключения.
Обновляем сервер:
ssh root@(IP-адрес вашего сервера)
Соглашаемся с подключением, пишем команду yes и нажимаем enter
Вводим пароль из тикета и нажимаем enter
Обновляем сервер: yum update и нажимаем enter
Соглашаемся: вводим y нажимаем enter
Снова соглашаемся с изменениями: вводим y нажимаем enter
Устанавливаем Docker:
Вводим команду: wget -O — https://get.docker.com | bash и нажимаем enter
Запускам docker, вводим команду: systemctl enable docker && systemctl start docker
Устанавливаем Outline:
Копируем из Outline команду и вставляем её в Терминал: sudo bash -c «$(wget -qO- https://raw.githubusercontent.com/Jigsaw-Code/outline-server. )»
Копируем ключ, выделенный зелёным текстом в Outline
Ставим Iptables:
Вводим: sudo yum install iptables и жмём enter
Завершаем шаг и и запускаем установку сервисов командой: sudo yum -y install iptables-services и жмём enter
Вводим команду: iptables -L -v -n и жмём enter
Сбрасываем параметры командой: sudo iptables -F
Разрешаем входящие и исходящие подключения:
sudo iptables -A INPUT -i lo -j ACCEPT и жмём enter
sudo iptables -A OUTPUT -o lo -j ACCEPT и жмём enter
sudo iptables -A INPUT -m state —state ESTABLISHED,RELATED -j ACCEPT и жмём enter
После этого заходим в Outline Manager и подключаемся к серверу.
Если вы всё сделали правильно, то у вас откроется окно, в котором вы можете создать ключи для подключения.
Как подключить Outline VPN на другие устройства
Вам необходимо скачать клиент VPN-сервиса на официальном сайте (в том числе для iPhone). После скопировать на компьютере в Outline Manager ключ (указан на скриншоте) и отправить его на другое устройство любым удобным способом. После чего зайти в программу и вставить ключ.
Таким образом доступ к собственному VPN можно дать и друзьям. Им тоже нужно будет скачать Outline на своё устройство и вставить в него ключ. Для каждого устройства требуется свой ключ.
На этом всё. Пользуйтесь и задавайте вопросы в комментарии.

OpenVPN. Инструкция по применению (копия с Хабра)

Виртуальные частные сети (VPN) давно вошли в повседневную жизнь. Множество технологий и реализаций сервиса приватных сетей (как для частного применения, так и для использования внутри периметра организаций), обеспечивающих определённый уровень безопасности, доступны для использования широкому кругу ИТ-специалистов.
Не смотря на обилие технологий, предлагаю остановиться на старом добром OpenVPN (в связке с EASY-RSA). Решение от Джеймса Йонана отличается гибкостью, функциональностью, надёжностью и непрерывностью разработки на протяжении приличного временного периода. Так сказать, мастодонт от мира VPN-решений.
Спойлер — ссылка на довольно функциональное решение (ничего особенного, чистый бэкэнд), написанное на bash некоторое время назад, ждёт вас в конце публикации (в виде github-репозитория под именем «openvpn_helper»), а здесь же уделю внимание общей структуре и некоторым аспектам использования набора скриптов и OpenVPN.
Список необходимых компонентов (используемая ОС — AlmaLinux 8):
2. Описание общей структуры репозитория
2.1. Директория «ovpn-server»
Директория содержит файлы и поддиректории двух типов: статичные (входящие в репозитория непосредственно) и генерируемые автоматически.
Статичные:
* « main.sh » — файл, содержащий основную кодовую базу репозитория.
* «vpn.env» — основной файл конфигурации.
* « full_setup_vpn_server.sh » — скрипт полной установки VPN-сервера. После запуска исполняет следующие действия:
1) инициация структуры файлов/директорий для управления ключами easyrsa («./easyrsa init-pki»);
2) создание корневого сертификата («./easyrsa build-ca»);
3) генерация ключа Диффи-Хелмана («./easyrsa gen-dh»);
4) создание запроса на выпуск сертификата VPN-сервера («./easyrsa gen-req vpn-server»);
5) импорт и подписание сертификата VPN-сервера («./easyrsa sign-req server vpn-server»);
6) генерация списка отозванных сертификатов («./easyrsa gen-crl»);
7) генерация секретного ключа ta.key («/usr/sbin/openvpn —genkey —secret «$PKI_DIR/ta.key»»), используемого как на стороне сервера, так и на стороне клиента. Необходим для обеспечения дополнительного уровня безопасности (защищает от сканирования прослушиваемых VPN-сервером портов, переполнения буфера SSL/TLS, DoS-атак и flood-атак, а также вводит дополнительный механизм аутентификации между сервером и клиентом);
8) генерация файла конфигурации для VPN-сервера, вспомогательных скриптов и файлов со справочной информацией;
9) копирование всех необходимых сертификатов и файлов конфигурации, необходимы для работы VPN-сервера, в директорию «/etc/openvpn/server».
* « create_cli_cert_and_conf.sh » — скрипт генерации клиентского набора сертификатов и файла конфигурации.
* « revoke_client_cert.sh » — скрипт отзыва клиентских сертификатов.
* « gen_crl_and_restart_ovpn.sh » — скрипт генерации CRL-сертификата (Certificate Revocation List или список отозванных сертификатов), содержащего сведения о всех отозванных клиентских сертификатах (отозванных посредством « revoke_client_cert.sh »). Скрипт необходимо запускать каждый раз после отзыва клиентского сертификата.
* « get_client_cert_expire_info.sh » — скрипт проверки клиентских сертификатов на предмет устаревания.
* « get_server_cert_expire_info.sh » — скрипт проверки серверных сертификатов на предмет устаревания.
Файлы и директории, формируемые на этапе полной установки VPN-сервера ( full_setup_vpn_server.sh ):
* директория «pki_root/pki» — содержит развёрнутую структуру файлов/директорий для управления ключами easyrsa. Краткое описание файлов/директорий структуры:
1) certs_by_serial — директория хранения выпущенных сертификатов (в рамках данной структуры pki), ранжированных по серийным номерам;
2) issued — директория хранения выпущенных сертификатов, ранжированных по имени (CN);
3) private — директория хранения закрытых ключей (в т.ч. и закрытого ключа корневого сертификата) к соответствующим сертификатам;
4) renewed — директория хранения обновлённых сертификатов. В рамках «openvpn_helper» не используется.
5) reqs — директория хранения запросов на выпуск сертификатов.
6) revoked — директория хранения отозванных запросов/сертификатов/закрытых ключей;
7) ca.crt — корневой сертификат;
8) crl.pem — список отозванных сертификатов;
9) dh.pem — ключ Диффи-Хеллмана;
10) index.txt — актуальная база данных всех сертификатов в рамках данной структуры управления ключами/сертификатами;
11) index.txt.attr — содержит параметр «unique_subject = yes», запрещающий создание сертификатов с одинаковыми именами до процедуры отзыва;
12) index.txt.attr.old — предыдущее значение параметра index.txt.attr;
13) index.txt.old — предыдущее содержание базы данных сертификатов index.txt. Изменяется, например, после отзыва клиентского сертификата);
14) openssl-easyrsa.cnf — стандартные для данной структуры параметры с указанием имён переменных, которые возможно переопределить через переменные окружения;
15) safessl-easyrsa.cnf — содержание аналогично файлу openssl-easyrsa.cnf, но с указанием конкретных значений;
16) serial — используется для промежуточного хранения серийного номера генерируемого сертификата до момента его подписания. После подписания серийный номер перемещается в файл “serial.old”;
17) serial.old — содержит серийный номер последнего сгенерированного (и подписанного) сертификата;
18) ta.key — секретный ключ для реализации tls-аутентификации.
* «RESTART_OVPN-$ VPN_SERVER_NAME_S.sh » (где VPN_SERVER_NAME_S — параметр из vpn.env) — скрипт перезапуска экземпляра OpenVPN, основанного на конфигах и сертификатах, сгенерированных посредством « full_setup_vpn_server.sh » (на основе файла конфигурации «vpn.env», расположенного в текущей директории).
* «SET-STATIC-IP-FOR-CLIENTS.txt» — заполняется в формате «username,ip-address», если требуется, чтобы клиентам VPN-сервера выдавались статичных ip-адреса. После внесения изменений необходимо запустить скрипт «RESTART»
* «STOP_OVPN-$ VPN_SERVER_NAME_S.sh » (где VPN_SERVER_NAME_S — параметр из vpn.env) — полный останов VPN-сервера.
* «README_MAIN.txt» — краткая инструкция об использовании VPN-сервера.
* «README-user-management.txt» — памятка об управлении пользователями. Возможность коннекта к VPN (помимо сертификатов) ограничивается локальными УЗ, созданными на хосте и состоящими в определённой группе пользователей.
* «readme-firewalld-rules.txt» — памятка о настройке файервола (firewalld).
* «readme-selinux-rules.txt» — памятка о конфигурации selinux.
* «SAVED_CERT_PASSWORDS.txt» — сохранённые пароли (от корневого сертификата и сертификата VPN-сервера).
Файлы и директории, формируемые на этапе генерации клиентских сертификатов ( create_cli_cert_and_conf.sh ):
* директория «cli_certs» — содержит поддиректории вида «CLIENT_CERT_NAME-files», где расположен набор клиентских конфигов и сертификатов, а также архив для передачи пользователю.
=================
2.2. Директория «run_if_dnsmasq_is_not_installed»
Скрипт « run.sh ». Простой скрипт, осуществляющий установку сервиса dnsmasq.
Файл конфигурации «dnsmasq.conf». Содержит пример конфигурации сервиса без вышестоящих dns-серверов.
Для использования DNS-сервера, установленного на хосте с OpenVPN, необходимо подкорректировать правила firewalld. Рекомендации по настройке смотреть в файле «readme-firewalld-rules.txt» (после развёртывания VPN-сервера).
2.3. Директория «run_if_openvpn_is_not_installed»
Скрипт « run.sh » устанавливает необходимый для работы VPN набор софта: dnf-репозиторий «epel-release», openvpn, easy-rsa.
2.4. Директория «run_if_selinux_enabled»
Директория содержит 2 файла:
* selinux-модуль «ovpn_mod0.te»;
* скрипт « run.sh », устанавливающий пакет «selinux-policy» и применяющий selinux-модуль «ovpn_mod0».
2.5. Директория «run_if_zip_is_not_installed»
Скрипт « run.sh » устанавливает zip-архиватор, используемый при создании архивов для передачи конечному пользователю.
2.6. Файл-инструкция «if_need_another_vpnserver_on_this_host.txt»
Документ, кратко описывающий алгоритм развёртывания второго (и последующих) VPN-сервисов на одном и том же хосте.
Алгоритм таков (для примера):
1) создаём директорию, например, «ovpn-server0»;
2) переносим в неё содержание директории «ovpn-server» (исключения: cli_certs, pki_root);
3) редактируем в директории «ovpn-server0» файл «vpn.env», уделяя особое внимание параметрам: VPN_SERVER_NAME_S,
Разрешает форвардинг (перенаправление) трафика ipv4, что важно для осуществления доступа из VPN-сети в интранет.
3. Описание основного файла конфигурации vpn.env
Параметры, относящиеся только к генерации сертификатов и конфига (например, «/etc/openvpn/server/server.conf») VPN-сервера ( full_setup_vpn_server.sh ):
* VPN_CONF_DIR_S — директория хранения файлов конфигурации OpenVPN. Дефолтное значение — «/etc/openvpn/server».
* VPN_SERVER_NAME_S — имя VPN-сервера в контексте возможности запуска нескольких экземпляров VPN в зависимости от имени файла конфигурации. Желательно, чтобы этот параметр совпадал с частью (ovpn-XXX) имени директории, где расположен файл «vpn.env»).
* IP_VPN_SERVER_S — ip-адрес интерфейса, смотрящего в Интернет.
* VPN_PORT_S — порт интерфейса, смотрящего в Интернет. Должен быть уникален, если в рамках одного хоста настроено более одного VPN-сервера.
* VPN_SERV_LOG_DIR_S — директория размещения логов VPN-сервера. Значение по умолчанию — /var/log/openvpn.
* VPN_MAX_CLIENTS_S — максимальное количество клиентов VPN-сервера. В топологии «subnet» при использовании подсети для VPN с маской 24 (или 255.255.255.0) максимально возможное кол-во клиентов равно 83. Значение по умолчанию — 32.
* VPN_NETWORK_S — описание VPN-сети в формате «SUBNET SUBNET-mask». Значение по умолчанию — «172.16.10.0 255.255.255.0». Должно быть уникальным в случае, если в рамках одного хоста настроено более одного VPN-сервера.
* VPN_DHCP_IP_S — адрес встроенного DHCP. Значение по умолчанию — 172.16.10.1. Должен быть уникальным в случае, если в рамках одного хоста настроено более одного VPN-сервера.
* VPN_INTERNAL_NETWORK_ROUTE_S — маршрут до интранета (параметр передаётся клиентам VPN-сервера при подключении), к которой необходим доступ из VPN-сети. Заполнять в соответствии с конкретными параметрами вашей сети.
* VPN_SERVER_LOG_LEVEL_S — уровень логирования VPN-сервера. Значение по умолчанию — 0.
* VPN_NETWORK_MASQUERADE_SRC_S — описание подсети VPN-сервера, необходимое при отправке директив фаерволу (firewalld). Должно быть уникальным в случае, если в рамках одного хоста настроено более одного VPN-сервера.
* VPN_INTERNAL_NETWORK_MASQUERADE_DST_S — описание внутренней подсети, необходимое при отправке директив фаерволу (firewalld).
* VPN_INTERNAL_IP_DEV_NAME_S — имя интерфейса, смотрящего во внутреннюю сеть.
* VPN_TUN_DEV_NAME_S — имя интерфейса, используемого при старте VPN-сервера. Должен быть уникальным в случае, если в рамках одного хоста настроено более одного VPN-сервера.
* VPN_SERVER_INT_FIREWALLD_ZONE_S — зона фаервола, к которой должны принадлежать интерфейсы:
в) интерфейс, являющийся дефолтовым гейтвэем для VPN-сервера.
Пункт (в) необходим только в том случае, если VPN-сервер предполагается использовать как шлюз по умолчанию для VPN-клиентов.
Параметры, относящиеся только к генерации клиентских сертификатов и конфига ( create_cli_cert_and_conf.sh ):
* IP_VPN_SERVER_CL — белый (и статичный) ip-адрес (или доменное имя), к которому необходимо обратиться VPN-клиенту для доступа к интрасети.
* VPN_PORT_CL — соответствующий порт для параметра IP_VPN_SERVER_CL.
* VPN_CLI_LOG_DIR_LINUX_CL — директория хранения лог-файлов, если клиент VPN-сервера — это хост с ОС Linux.
* VPN_CLI_LOG_LEVEL_CL — уровень логирования VPN-клиента.
Параметры EASY-RSA (используются как при генерации сертификатов как для VPN-сервера, так и для клиента):
* EASY_RSA_DIR_C — место расположения исполняемого файла easyrsa. Дефолтовое значение — /usr/share/easy-rsa/3.
* EASYRSA_CERT_EXPIRE_EV — время устаревания (в днях) выпущенных сертификатов (в т.ч. и корневого). Дефолтовое значение — 3654 дней (10 лет).
* EASYRSA_CRL_DAYS_EV – время устаревания (в днях) списка отзыва сертификатов (CRL). Дефолтовое значение — 3654 дней (10 лет).
* EASYRSA_KEY_SIZE_EV – размер ключа шифрования.
* EASYRSA_REQ_COUNTRY_EV – страна.
* EASYRSA_REQ_PROVINCE_EV – область.
* EASYRSA_REQ_CITY_EV – город.
* EASYRSA_REQ_ORG_EV – организация.
* EASYRSA_REQ_OU_EV – подразделение организации.
* EASYRSA_REQ_CN_EV – имя сервера.
* EASYRSA_REQ_EMAIL_EV – email-адрес администратора.
4. Заключение
Не смотря на функциональность и гибкость (особенно при наличии оснастки, описанной, например, выше), у OpenVPN есть недостаток (присутствует и у аналогичных решений) — механизм списка отозванных сертификатов (который CRL).
Если удалить клиентский сертификат из директории «issued» (структура управления ключами easyrsa), то его отзыв (посредством команды revoke) при компрометации окажется недоступным, что создаёт вероятность использования такого сертификата злоумышленниками. И в этом случае единственным вариантом обезопасить интранет от посторонних глаз — перевыпуск корневого сертификата, что влечёт за собой необходимость перевыпуска остальных сертификатов.
Логично было бы генерировать не список отозванных сертификатов (CRL), а список актуальных сертификатов (например, Cert Actual List), но, видимо, разработчики OpenVPN (а также Easy-RSA), когда-то решили иначе, что создаёт необходимость очень тщательно следить за всеми выпущенными/отозванными сертификатами.
И снова про VPN или Shadowsocks/Vmess/Vless/Trojan, как подарок от китайских друзей
Здравствуйте уважаемые Пикабушники. Продолжу серию постов про обход блокировок.
Но сначала напомню, что самый надёжный VPN — тот, который вы поднимаете на
арендованном виртуальном сервере. В прошлом посте я давал ссылки на инструкции от пикабушников.
Недавно появился ещё один очень толковый гайд в этой тематике от @nayk и VPN для Youtube, Instagram и пр Рекомендую ознакомится.
Наверняка многие столкнулись с тем, что традиционные способы обхода блокировок перестают работать на смартфонах и ПК. Всё ожидаемо, РКН тоже не дремлет. Однако есть решения и вот одно из них.
В 2012 году для доступа к контенту и обхода Великого Китайского Файервола , китайским программистом с ником «Clowwindy«, была придумана технология Shadowsocks. Эта технология работает по принципу прокси, но с шифрованием. Она маскируется под https трафик, поэтому использование этого протокола сложно вычислить и заблокировать.
Не буду больше «грузить» теорией. Кому интересно история разработки и разработчика — ТЫК СЮДА Скажу лишь кратко — с разработчиком связалась китайская полиция и проект был закрыт, но. Идея была подхвачена энтузиастами и получила развитие. На данный момент есть различные Shadowsocks клиенты для Android, Windows, Mac OS, Linux, iOS и OpenWRT (для роутеров) В том числе и Outline VPN, о котором был пост на Пикабу
А ещё, разработаны новые, не менее крутые решения — Vmess, Vless, Trojan и т.п. Что это за «звери» такие, при желании можно прочитать ТУТ, а я расскажу об одном из клиентов для этих протоколов, который носит название v2RayNG.

Для продвинутых и не боящихся ставить приложения из сторонних источников, есть 4pda и мод с русским переводом
Сперва добавляем конфиги Shadowsocs. Переходим на сайт https://outline.community/servers/, прокручиваем вниз и выбираем сервер нужной страны. Выберу нынче Францию.

Тыкаем понравившийся сервер. Не заморачиваюсь и выбираю в первый.

Получаем готовый конфиг Shadowsocs. Копируем его в буфер обмена.

Открываем приложение v2RayNG, тыкаем ПЛЮСИК вверху справа, вставляем в скопированный конфиг. Запускаем (стрелкой указано), даём разрешения, пользуемся.
Так можно делать много раз
Импортировать конфиги можно и при помощи встроенного в прогу сканера QR кода — открываем сайт на компе и сканируем смартфоном с монитора.

И так, мы загрузили кучу конфигов, надо выбрать нерабочие и удалить. Жмём 3 точки в верхнем правом углу и всё как на скрине, на раз-два-три.
Внимание! Дождитесь результата теста. Много «носочков» — дольше тест.

Ещё конфиги Shadowsocs (носочки) можно брать в Телеграмм канале сообщества Outline t.me/OutlineVpnOfficial
Главное неудобство — бесплатные «носочки» надо «освежать». Некоторые работают месяц, другие меньше, некоторые больше.
Пока создам запас, а ниже расскажу где их ещё брать.
Просто открыть ссылку, скопировать и вставить в клиент
О настройке «носочков» на Винде и клиенте v2RayN для ПК будет ниже, а пока.
На будущее. Идём на просторы инета актуальными «носочками» Есть много ресурсов раздающих их (и не только) бесплатно.
Зайдём ка мы, к примеру, на https://akunssh.net/за VMESS

Выбираем как на скрине — VMESS


Выбрал Германию. Премиум на 7 дней

Быстро изготовим аккаунт без смс и регистрации. Просто ввести в форму какой-нибудь URL.
Пусть будет google.com



Добавляем в буфер обмена v2Ray
Теперь небольшое редактирование

Внизу тыкаем в надпись allowlnsecure и меняем значение на TRUE

Сменили на TRUE, не забудем СОХРАНИТЬ

А ещё можно просто зарегистрироваться на форуме 4pda, подписаться на VPN Club. Именно там хорошие добрые люди ежедневно закидывают рабочие конфиги для v2Ray
===== А теперь, для Windows =====

Прога портативная, ничего устанавливать не надо.
Скачиваем архив v2rayN-Core.zip =Тык=, распаковываем и запускаем файл v2RayN.

1. Сменим язык с китайского на английский
2. Импортируем конфиги (носочки) из буфера обмена.
3. Ctrl+A — Выбрать всё.4. Удаляем дубликаты, если такие окажутся.
5. Ctrl+A — Выбрать всё и Проверим конфиги на работоспособность — Test Servers Real delay (Ctrl+R)

6. Отсортировываем результаты удаляем нерабочие.

7. Теперь ПКМ по иконке в трее и выбираем РАЗ


В интерфейсе проги кликаем по нужному серверу и жмем на «ВВОД» (Enter)
Проверяем заблокированный сайт. О как. Вася Ложкин картинку закинул. 😉

Пост «пилить» помогал Ричард, поддерживая постоянную температуру кресла и вообще.

=== Всё! Всем мира и добра! ===
Продолжение поста «Как развернуть свой VPN сервер»
Многие в комментариях резонно указали, что сервер не настроен, его взломают, и будет он трудится в каком-нибудь ботнете. На что я отвечу:
1. Убирать рут не вижу смысла. На сервере нет никаких важных данных и рут нужен почти всегда.
2. Вход с помощью ключей. Можно установит, но это добавляет проблем с настройкой и подключением. Ради защиты большого ничего, также не вижу смысла этим заниматься.
Что необходимо сделать:
Для защиты сервера имеет смысл изменить SSH порт на какой-нибудь другой, это отсеет большинство атак ботов, установить fail2ban, для защиты от перебора паролей и настроить Firewall. Как это сделать расписано ниже.
Изменяем порт SSH:
Вводим в терминал
Управление стрелочками. Удаляем # перед Port и вместо 22 вводим любой от 1024 до 65535.

Нажимаем Ctrl+X потом Y и Enter.
Перезапускаем ssh командой:
Теперь при подключение используйте новый SSH порт
Устанавливаем fail2ban командой:
Для наших целей настройка из коробки сгодится.
Установим и настроим Firewall
Нажимаем Y и Enter
Всё. Дальнейшую настройку для данного сервера, я считаю избыточной.
Как развернуть свой VPN сервер
Стоимость: 14$ в год.
Инструкция очень подробная и рассчитана на начинающих.
В свете последних событий растет потребность в VPN для обхода разных блокировок.
Можно использовать какой-нибудь VPN сервис
+ Проще(Но не сильно)
— Ненадежно(Уже сейчас забанены популярные VPN сервисы и РКН планирует заблокировать ещё больше. Есть обходы этих блокировок, но это танцы с бубном, что убирает главный плюс данного варианта)
— Небезопасно(Если использовать малоизвестные сервисы, то безопасность и анонимность ваших данных будет находится под большим вопросом, а о надежности и речи быть не может)
— Низкая скорость(Относится к малоизвестным сервисам)
Можно использовать свой VPN на арендованном сервере
+Безопасность(Только вы знаете, что происходит на вашем сервере)
+Надежность(IP вашего сервера никогда не забанят, ведь пользуетесь им только вы)
+Высокая скорость(Сервером пользуетесь только вы и ваша семья)
—Возможные проблемы с арендой VPS сервера
1.Покупка VPS
Первым делом нам нужно купить VPS(Виртуальный приватный сервер).
В данной статье я покажу как купить VPS на примере RackNerd, так как в апреле у них можно купить VPS по цене 14$ в год c 2500 GB трафика в месяц, да и без скидок у них дешевые и качественные VPS. Другие дешевые VPS можно найти здесь. Нам сгодится самый дешевый. Ориентируйтесь на скорость и количество трафика в месяц.
Выбираем операционную систему Ubuntu 20 и нужное вам расположение сервера

Нажимаем Continue => Checkout
Дальше вводим свои данные, насколько правдивыми они будут решать вам, но email должен быть настоящим.

Способов оплаты много. Выбирайте наиболее удобный для вас. Я выбрал webmoney, так как для меня он единственный рабочий.
После оплаты на email придёт письмо с данными для подключения к серверу. Также в письме будет ссылка и логин, пароль к панели управления сервером. В ней можно настраивать сервер. но в дальнейшем она нам не понадобится, но иногда после всех установок может потребоваться перезагрузка сервера, она делается именно в панели управления.

2.Подключение к VPS
Скачиваем и устанавливаем PuTTY
Открываем и в поле Host Name вводим IP адрес из письма. В поле Port вводим SSH port из письма.
Нажимаем Open

Далее нажимаем Accept

Вводим имя пользователя, в нашем случае root, нажимаем Enter
Далее копируем Root Password из письма, вставляем его в с помощью ПКМ и нажимаем Enter.(Пароль не отображается при вводе)
3.Установка и настройка VPN сервера.
Есть много разных VPN серверов. Я буду использовать Wireguard, так как он современный, лёгкий и быстрый. Устанавливать и настраивать его вручную не вижу смысла, если вы хотите обычный VPN сервер. Вместо этого, мы будем использовать скрипт, который очень упростит весь процесс.
Копируем и вставляем(ПКМ для вставки в терминал) данную команду.
Вводим нужный вам порт, если вам без разницы просто нажмите Enter.
Придумываем и вводим имя клиента который будет подключаться к VPN.
Выбираем нужный DNS сервер, если вам без разницы просто нажмите Enter.
Нажимаем Enter ещё раз.

Мы создали и конфиг файл(нужен для подключения), также в терминале появится его QR-code для подключения с телефона(подробнее в разделе 4.Подключение к VPN).
Для каждого пользователя нужно создавать свой конфиг файл. Для этого вводим эту команду и проделываем предыдущие действия.
3.5 Скачивание конфиг файла
Для того чтобы скачивать файлы с сервера нам понадобится программа WinSCP
Скачиваем, устанавливаем и запускаем.
Вводим те же данные, что мы вводили в PuTTY и нажимаем войти.

Далее просто переносим конфиг файл(имя клиента.conf) на свой пк.
4.Подключение к VPN
Устанавливаем, открываем, нажимаем Добавить туннель, выбираем наш конфиг файл и нажимаем кнопку Подключить.
Скачиваем WireGuard из Google.Play или F-Droid
Открываем, тапаем по плюсику, выбираем либо импорт из файла или архива, тогда выбираем наш конфиг файл, либо сканируем QR-код из терминала.
Надеюсь данная инструкция окажется для кого-нибудь полезна.
Спасибо за прочтение.
P.S. Извините, что забыл открыть.

Настройка VPN на MikroTik и маршрутизация только определенного трафика
Просили пост, пилю пост.
Цель поста — рассказать, как на роутерах MikroTik настроить VPN и пускать через него только определенный трафик. Например, только instagram, youtube, при этом весь остальной «интернет» не трогать.
В интернете есть инструкции, но постараюсь рассказать понятным языком, с блекджеком и картинками. Я не являюсь специалистом по сетям и, в частности, по MikroTik-ам, но постараюсь поделиться той инфой, которую сам нашел и теми подводными камнями, с которыми сам столкнулся. Критика и советы в комментариях приветствуются, но давайте жить дружно.
В качестве отправной точки для этой инструкции я использовал то, что написано по ссылке ниже (если не хотите смотреть картинки, а любите командную строку, вам туда, но если вы ее любите, то, скорее всего, вы и сами все уже нашли)
Настраивать будем через winbox на примере роутера RB4011iGS+5HacQ2HnD (много буков, но настройка, скорее всего, для всех микротиков будет одинаковая).
В качестве VPN провайдера я использую frootvpn, подключение типа PPTP.
Через Winbox подключение к VPN создается очень просто:
Заходим на вкладку PPP -> Interface нажимаем на синий плюсик, выбираем PPTP Client (здесь можно посмотреть инструкции конкретно у вашего VPN провайдера, если он предоставляет не PPTP, а что-то еще)
Указываем имя соединения на вкладке General, так же я сразу несколько опустил значение MTU.

На вкладке Dial Out указываем хост VPN сервера, к которому будем подключаться, имя пользователя и пароль. Профиль я оставил дефолтный.
Важно! — здесь нужно обязательно снять галку Add Default Route, если хотите пускать через VPN только определенный трафик. Если ее поставить, через VPN пойдет весь трафик.

Тыкаем Apply, если все хорошо, соединение пройдет успешно (как на картинке выше — running, Status: connected).
Далее нам нужно открыть вкладку IP -> Routes и снова нажать на синий плюсик. Если в предыдущем пункте не была убрана галка Add Default Route, здесь будет прописан маршрут, но мы ее убрали, поэтому добавим его сами только для определенной метки, которую настроем позже.
В качестве Gateway указываем имя созданного нами подключения, в Dst. Adres оставляем дефолтные нолики, обязательно указываем Routing Mark и запоминаем, чего мы тут указали.

Теперь идем в IP -> Firewall -> NAT.
Добавляем правило с Chain srcnat, указываем наш интерфейс, в Action — masquerade.


Затем переключаемся на вкладку IP -> Firewall -> Mangle. Тут для Chain prerouting будем помечать нужный нам трафик меткой, которую мы запомнили.
На вкладке General указываем только Chain prerouting

На вкладке Advanced придумываем и указываем название списка адресов в Dst. Adress List (в дальнейшем в него добавим как раз те адреса, которые хотим пускать через VPN)

На вкладке Action выбираем mark routing и вводим название метки New Routing Mark, которую все еще помним.

Осталось заполнить наш список адресов. Делается это на вкладке IP -> Firewall -> Address Lists. Сюда можно добавить как хосты (они автоматом зарезолвятся до айпишника), так и IP или даже маски подсетей.
Не буду показывать тут весь список, но в итоге получим что-то схожее.

Не знаю, как на пикабу красиво добавить список сетей, который я добавил для работы инстаграма и фейсбука (которым не пользуюсь, это была тренировка перед ютубом))) ), но все это дело можно найти в интернете, например, тут
Если что, смогу поделиться своим списком адресов, но еще не знаю, как.
Однако, мне этого не хватило.
Но про это чуть позже.
На данном этапе у нас уже должно все работать и указанные хосты должны у нас работать через VPN.
Проверить можно так — добавить в лист какой-нибудь сайт для получения своего айпишника, например, myip.ru и сравнить тот адрес, который был изначально и тот, который сервис показывает после добавления его в этот список. Он должен поменяться.
Теперь про подводные камни.
Добавили хосты из списка, а картинки в инстаграме все равно не грузятся (это пример, не кидайтесь сразу тапками:) ).
Что в таком случае делал я — шел на вкладку IP -> Firewall -> Connections, удалял все соединения для IP моего телефона, заходил в тот же инстаграм с него и смотрел, какие соединения появляются. Таким образом дополнил список адресов теми адресами/подсетями, которых там изначально не было.
Все сделал как надо, а провайдер показывает страницу «доступ заблокирован», либо просто страница не грузится.
Тут проблема может быть в DNS, если провайдер выдает собственные DNS сервера.
На вкладке IP -> DNS нужно посмотреть, есть ли там Dynamic Servers. Если есть, значит используются сервера провайдера. Я указал гугловские 8.8.8.8, 8.8.4.4 (так же у меня стоит галка Allow Remote Requests, так как роутер выступает в качестве локального DNS сервера).

На вкладке IP -> DHCP Client при этом нужно убрать галку Use Peer DNS, именно она отвечает за получение DNS серверов от провайдера.

Чтобы остальные локальные устройства использовали роутер в качестве DNS сервера, нужно не забыть в IP -> DHCP Server -> Networks -> Ваша подсеть, указать адрес роутера.

На этом этапе у меня все заработало, все WiFi и LAN клиенты стали без лишних телодвижений открывать нужные страницы через VPN.
Добро пожаловать в интернет!

Простейшая настройка собственного VPN
Добрый день, пикабушники!
Сразу скажу: я не собираюсь строить из себя эксперта в этой области, но в последнее время тема стала крайне актуальной, просили помочь с установкой и настройкой многие друзья и родственники, и даже тут, на пикабу, пришлось пару раз отметиться по этому вопросу, где меня и попросили запилить пост. (@Warspirit, ты в телевизоре). Ну что ж, мне не трудно, многим полезно.
Получилось очень, очень много букв, но ответственно заявляю, что по этой инструкции смогла купить сервер и подключиться к инстаграму моя бабушка, а это многого стоит. Если есть критика или дополнение – буду только рад услышать ваше мнение в комментариях.
В итоге у нас будет: недорогой VPN, работающий на арендованном нами сервере по протоколу OpenVPN, работающий быстрее всех бесплатных аналогов и очень многих платных. Самый простой, без всяких плюшек вроде маскировки туннеля, выбора отдельных сайтов, которые через этот туннель будут открываться и прочих финтифлюшек, простая рабочая машина, которая обеспечивает отличные скорость и конфиденциальность вкупе с обходом блокировок, а большего нам и не нужно. Итак, поехали.
Для начала определимся с терминологией на случай, если кому-то еще не прожужжали на эту тему все уши.
• VPN –надежный «туннель» от вас до удаленного сервера. Все провайдеры, спецслужбы и прочие заинтересованные лица снаружи могут увидеть только пункт назначения и гору непонятных буковок, которые представляют собой шифрованное «что, куда и откуда».
• VPS/VDS – между двумя этими понятиями для нас разницы нет. По сути, это виртуальный компьютер где-то далеко, на котором мы и будем поднимать VPN-сервер.
• VPN-сервер – программа, которая стоит на удаленном компьютере и является одной из сторон создания туннеля. Вторая сторона – ваш компьютер/телефон.
• OpenVPN – одна из технологий создания VPN-туннеля, созданная еще 20 лет назад, но с тех пор только прибавившая актуальности. Поддерживает десятки алгоритмов шифрования, имеет огромный пласт возможностей, но из всего этого нам надо знать то, что он быстр, он надежен и его еще никто не взломал. Во всяком случае, об этом не известно широкой аудитории, а абсолютно надежных систем не существует. Имеет приложения для Windows, Linux, Mac, Android и iPhone. Вероятность того, что ваше устройство не в этом списке, исчезающе мала.
• Хостер – тот, кто сдал вам в аренду сервер.
Затем нужно определиться с выбором сервера. Минимальные системные требования настолько минимальны, что подойдет практически любой VPS, который существует на рынке. В данный момент у меня трудится сервер с 512 МБ RAM, 10 ГБ ROM и одним 3 ГГц ядром процессора, а обычная нагрузка по всем показателям не превышает 10-20%. Единственное, на что стоит обратить внимание – наличие TUN/TAP устройства (если вам нужна эта статья, то никакой практической пользы эта информация вам не принесет, так что можете не вникать), но о его отсутствии обычно предупреждается большими красными буквами. Кроме того, обязательная характеристика – линукс. (проблем тут он вам не доставит). Желательно – Debian или CentOS последней версии, которая доступна на сайте. Windows не брать ни в коем случае, она дороже и не подходит для быстрой установки описанным способом. Операционная система выбирается при покупке сервера, потом ее можно переустановить.
С требуемыми характеристиками разобрались. Осталось определить местоположение сервера.
Если вам нужна конфиденциальность, то наилучшим вариантом, конечно же, будет зарубежный сервер. Как минимум потому, что вытащить информацию о том, куда ходил такой-то IP, из другой страны на порядок сложнее, чем потребовать ее от своего провайдера. Сам протокол OpenVPN предоставляет достаточную надежность, чтобы не бояться прослушки канала провайдером и заинтересованными лицами, особенно если поэкспериментировать с настройками шифрования (каждое изменение стандартных настроек, особенно алгоритма хеширования, усложняет взлом в разы при условии использования надежных алгоритмов). Ну а если вы решили обзавестись VPN только ради обхода блокировок, как я, то, скорее всего, подойдет и любой российский сервер. Не все провайдеры «последней мили» тратятся на установку дорогого оборудования, осуществляющего блокировки, а уж среди облачных гигантов таких и вовсе единицы. Мне пока что попадался только один из более чем десятка опробованных, и я спокойно вернул деньги по причине «не устроили условия».
После недавних колебаний курса цены на зарубежный VPS в общем выросли, но пока что еще держатся в пределах разумного (надеюсь, это надолго, но, возможно, при покупке имеет смысл оплатить сразу на несколько месяцев, чтобы потом не потратить лишнего). Сразу могу предупредить, что легко мог пропустить хорошее предложение, поэтому прошу добавить в комментариях, если у кого есть более вкусные варианты. Кроме того, я не знаю, что сейчас творится с оплатой зарубежных сервисов, так что эту сторону вопроса я попросту не учитывал.
Самый простой вариант выбора – загуглить «аренда vps в европе». Цены будут нормальными, но все же гораздо выше, чем если подбирать вдумчиво. Например, https://gcorelabs.com/ru/hosting/vds/europe/ За 240 рублей в месяц вы получаете вполне приятный по характеристикам сервер, несколько европейских столиц на выбор и 200 мбит/с канал с безлимитом по трафику. Но я бы все же рекомендовал открыть страницу с подбором сервера, как эта https://hostinghub.ru/vps-search/ и подобрать себе подходящий вариант в любой стране мира.
Из российских серверов подойдет практически любой. Я пользуюсь https://skyhost.ru за 84-80 руб/мес (в зависимости от периода оплаты. Довольно распространенная практика), но канал тут только 10 мбит/с, мне больше и не надо. Есть и дешевле, но там либо проблемы со стабильностью, либо большие ограничения. Если хотите скорости – https://justhost.ru/ , то же самое, но с каналом 200 мбит/с и на 20 рублей дороже. Хотите что-то интереснее – десятки сайтов-агрегаторов к вашим услугам по запросу «подбор vps.
Итак, с провайдером вы определились. Показывать процесс регистрации не имеет смысла — создаете аккаунт, выбираете сервер, операционную систему, оплачиваете. В случае возникновения трудностей пишите в комментарии или в службу поддержки. Второй вариант надежнее.
После оплаты вам на почту через некоторое время падает IP-адрес, логин и пароль. Выглядит это примерно так:

Обращаю ваше внимание, в письме одновременно может быть и адрес панели управления, но нам сейчас нужен блок, в котором находится IP (четыре числа, разделенных точкой).
Логин-пароль мы получили. Пользователи Linux и MacOS открывают терминал и вводят туда «ssh root@<IP-адрес сервера>, мы же идем на сайт https://www.chiark.greenend.org.uk/

Открываем, соглашаемся с предупреждением, если оно возникает, устанавливаем. В меню программ появляется папка PuTTy, в ней мы открываем одноименный файл PuTTy. Появляется вот такое окно. В указанное окошко вводим IP, нажимаем Open. Больше ничего не меняем.

В итоге у всех вылезло черное окно терминала, в котором система просит нас ввести логин и пароль или просто пароль. (При первом подключении будет предупреждение о неизвестном сервере, соглашаемся). Вводим. (Копирование и вставка осуществляются с помощью нестандартных Ctrl+Shift+C/V, кроме того, вставить можно просто кликом правой кнопкой мыши по окну. Символы пароля при вводе не отображаются даже в виде звездочек. Не пугайтесь, они есть, просто невидимы. Ошиблись – три секунды держите кнопку «стереть»). Иногда случается так, что присланный пароль не работает ни в какую, тогда мы идем на сайт хостера и через панель клиента меняем его на свой. Обычно там все написано, но если возникли проблемы – опять же, комментарии или техподдержка.
В итоге у нас есть вот такое окно, в которое последовательно вставляем три команды, после каждой нажимаем «ввод» и дожидаемся завершения (снова появится вот такая строка-приглашение к вводу)

Команды взяты со страницы разработчика скрипта: https://github.com/angristan/openvpn-install . Все проверено, вирусов нет. Копируем полностью, от первого символа до последнего, точки не забываем, пробелы в конце и в начале простительны
После этого программа начинает работать сама, вам нужно лишь нажимать Ввод, когда она просит, оставляя все как есть, и дожидаться того момента, когда она попросит придумать имя нового подключения. Займет это около минуты. Приглашение выглядит так:

Придумываем не слишком сложное имя и два раза нажимаем Ввод, пока снова не появится приглашение ко вводу. Вводим команду ls (эл-эс английские, маленькие)
Появится список всех файлов в данной директории. Среди них будет один под названием <введенное_вами_имя>.ovpn Печатаем:
Выделяем снизу вверх все от “</tls-crypt> до строчки “client”, строка приглашения к вводу в выделение попасть не должна. Копируем сочетанием клавиш Ctrl+Shift+C. Открываем блокнот и вставляем. Сохраняем где-нибудь на рабочем столе с любым именем файла, но заканчиваться оно должно на .ovpn. Обратите внимание на рамочку на скриншоте, там должно значиться именно «Все файлы».

Идем на сайт https://openvpn.net/vpn-client/ и скачиваем приложение под свою систему. Устанавливаем. Открываем. Окно выглядит так. Переходим на вкладку File и перетягиваем в окошко наш файлик, сохраненный на рабочем столе, либо открываем его же с помощью кнопки Browse

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


Приложение для телефона можно скачать в Play Market или App Store. Для него потребуется точно такой же файлик, можно даже этот. Но два одновременных соединения с помощью одного файлика (он называется профиль) установить не получится, поэтому для создания второго, третьего и десятого, которые можно распространить по всей семье или среди друзей, мы снова подключаемся к серверу, как и раньше, и вводим команду
Выпадает небольшое меню, в котором мы можем добавить новый профиль, удалить один из существующих (он больше не сможет подключиться) или вовсе удалить OpenVPN с сервера. Выбираем 1, придумываем имя, два раза нажимаем на ввод и опять копируем вывод команды cat <введенное_вами_имя>.ovpn в файлик на рабочем столе, откуда его можно передать куда угодно. Работает пересылка по ватсап и телеграм, а также по другим мессенджерам. На принимающей стороне надо всего лишь установить приложение и нажать на присланный файл, после чего соединиться.
Как-то так. В ближайшем будущем планировал записать нормальное видео, как это делается, и добавить в комментарии, но пока что существует только текстовая инструкция. Создано под давлением родственников и знакомых)