Создаём свой VPN сервер IPsec / L2TP + Wireguard.
Будем ходить в интернет легко и по большому.
Во-первых спасибо амиго HUNY за интересный и полезный цикл постов.
Все повторяется без проблем, хотя я столкнулся с одной неожиданностью и одной трудностью.
Неожиданностью оказался звонок из Оракла, видимо из-за резкого наплыва пользователей они решили в ручном режиме что-то провер[и|я]ть. Мне позвонила англоговорящая тётенька, представилась что она из Оракла, я спросил чем бы я ей мог помочь, она сказала что хочет узнать как меня зовут и в какой компании я работаю. Я подтвердил что меня зовут Вася Пупкинсон, а вот насчет компании я сказал, что я написал в регистрационной форме "Home" поскольку собираюсь протестировать их сервисы исключительно в личных целях. Видимо я был достаточно вежлив и убедителен так что она сказала что немедля отправит мне имейл с подтверждением регистрации и доступом к телу (сервера).
Амиго HUNY написал очень толковую инструкцию, так что в скором времени у меня был свой работающий VPN сервер, но .... возникла маленькая трудность - мой телефон Xiaomi Redmi Note 8T напрочь отказался подключаться к этому серверу. Быстрое гугление показало что я не одинок в своих проблемах, пользователи xiaomi уже давно жалуются на неработающий vpn в телефонах https://c.mi.com/thread-2569606-1-0.html?mobile=no
Я подумал - а что если мне, на этот уже работающий VPN сервер, сверху еще доставить альтернативный vpn сервер Wireguard, тогда может быть можно будет подключаться к vpn хоть так хоть эдак. Не буду рассказывать как я боролся со всяческим файрволами, перейду сразу к инструкциям.
Итак по инструкциям HUNY вы получили работающий VPN сервер.
Добрые люди приготовили для нас легкий инсталлятор Wireguard, он лежит на https://github.com/angristan/wireguard-install
Зайдите в свой сервер и терминале напишите команды
curl -O https://raw.githubusercontent.com/angristan/wireguard-instal...
chmod +x wireguard-install.sh
sudo ./wireguard-install.sh
Скрипт задаст вам несколько вопросов и быстренько всё установит:
~$ sudo ./wireguard-install.sh
Welcome to the WireGuard installer!
The git repository is available at: https://github.com/angristan/wireguard-install
I need to ask you a few questions before starting the setup.
You can leave the default options and just press enter if you are ok with them.
IPv4 or IPv6 public address: СЮДА ВЫ ВПИСЫВАЕТЕ РЕАЛЬНЫЙ IP ВАШЕГО СЕРВЕРА
Public interface: ens3
WireGuard interface name: wg0
Server's WireGuard IPv4: 172.22.22.1 ЕСЛИ В ВАШЕЙ ЛОКАЛКЕ НЕТ АДРЕСОВ 172.22.x.x ТОГДА ПИШИТЕ ЭТО
Server's WireGuard IPv6: fd42:42:42::1
Server's WireGuard port [1-65535]: 4600 ПИШИТЕ 4600, ПОТОМ ФАЙРВОЛ БУДЕМ НАСТРАИВАТЬ
First DNS resolver to use for the clients: 94.140.14.14
Second DNS resolver to use for the clients (optional): 94.140.15.15
Okay, that was all I needed. We are ready to setup your WireGuard server now.
You will be able to generate a client at the end of the installation.
Press any key to continue...
Через несколько минут скрипт все установит, задаст еще пару вопросов
Tell me a name for the client.
The name must consist of alphanumeric character. It may also include an underscore or a dash and can't exceed 15 chars.
Client name: Xiaomi8T ИМЯ ВАШЕГО ПЕРВОГО КЛИЕНТА ДЛЯ ВПН, ПРИДУМАЙТЕ ЧТО НИБУДЬ
Client's WireGuard IPv4: 172.22.22.2 АДРЕС ДЛЯ НЕГО, ОСТАВЬТЕ ПО УМОЛЧАНИЮ
Client's WireGuard IPv6: fd42:42:42::2
Here is your client config file as a QR Code:
и выведет на экран картинку QR кода.
Оставьте это окно терминала как есть, оно вам пригодится чтобы не вводить руками в телефон все данные для vpn подключения. Или прямо сейчас возьмите смартфон, установите на него клиент WireGuard https://play.google.com/store/apps/details?id=com.wireguard....
в клиенте нажмите на создание нового соединения и сосканируйте QR код и пока отложите смартфон, нам надо будет еще немного поработать напильником.
Если вы не сосканировали код тогда откройте еще одно соединение с сервером (запустите еще раз putty). Напишите команду
sudo nano /etc/iptables/rules.v4
найдите там строку
-A INPUT -p udp -m multiport --dports 500,4500 -j ACCEPT
и сделайте из нее
-A INPUT -p udp -m multiport --dports 500,4500,4600 -j ACCEPT
Сохраните файл Ctrl-X Y и Enter
Напишите команду
sudo nano /etc/wireguard/wg0.conf
Найдите там длинную строку
PostUp = iptables -A FORWARD -i ens3 -o wg0 -j ACCEPT; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
В этой строке все -A на поменять на -I (i большое) так что строка будет вот такой
PostUp = iptables -I FORWARD -i ens3 -o wg0 -j ACCEPT; iptables -I FORWARD -i wg0 -j ACCEPT; iptables -t nat -I POSTROUTING -o ens3 -j MASQUERADE; ip6tables -I FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -I POSTROUTING -o ens3 -j MASQUERADE
Сохраните файл Ctrl-X Y и Enter
И последнее действие, надо в глобальном Оракловском файрволе добавить проброс порта 4600 (вспоминайте инструкцию HUNY, он там прокидывал порты 500 и 4500) см. картинку ниже.
Перезагрузите сервер sudo reboot и теперь можно пробовать подключаться смартфоном.
Клиенты WireGuard для различных ОС можно скачать тут - https://www.wireguard.com/install/
Пока мы с вами создали подключение для одного клиента/устройства, чтобы создать еще подключения запустите в терминале еще раз скрипт
sudo ./wireguard-install.sh
и так далее.