Сегодня будем устанавливать VPN WireGuard + Outline, с протоколами WireGuard и Open VPN + Shadowsocks соответственно. И будем делать это максимально просто, но не жертвуя безопасностью.
Почему в этой статье используется именно такая связка WireGuard + Outline?
Wireguard — максимально быстрый (т.е. наименее режет скорость) из существующих VPN. Детектится очень просто, но честно, пофиг на это, лишь бы DNS не утекал провайдеру и соединения шифровалось. Знания того, что человек используют VPN, не делает его информацию раскрытой. Плюс Wireguard в скорости, он режет скорость соединения меньше всего.
Outline — использует протокол Open VPN + Shadowsocks, трафик он маскируется под https соединение и соответственно, используя порт 443 на сервере. Режет скорость, примерно на 40%, но определяется хуже для третьего лица. Плюс его в том, что он маскируется под обычный интернет-трафик.
Казалось бы что достаточно и Wireguard, но т.к. его легче обнаружить по трафику через UDP, его иногда блокируют. Поэтому смысл использовать 2 протоколы — есть.
Общее достоинство — можно создавать бесконечное количество VPN пользователей и открывать доступ в интернет своим родственникам и друзьям.
Оглавление
Выбор хостинга для VPN
Предлагаю вам на выбор 4 хостинга, которые можно использовать для VPN, исходя из своей субъективной оценки. Три ссылки реферальные, так вы сможете и отблагодарить меня, без всяких усилий, если статья вам оказалось полезной.
Тестирование скорости сервера (необязательно)
Установка Speedtest — выполните команды последовательно (по строчке)
sudo apt-get install curl
curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo bash
sudo apt-get install speedtest
запуск
speedtest
Обратите внимание, что у многих хостеров есть веб-консоль, которую можно использовать для подключения к серверу SSH. Но будет намного удобнее, если вы будете использовать программы Termius или MobaXTerm.
Выбор программы SSH
При выборе программы для работы с сервером по SHH я также предлагаю три отличных варианта — это программы Termius и MobaXterm. Третий вариант, он же самый простой — использовать веб-консоль вашего провайдера, например так выглядит панель у Timeweb:
Требования к серверу
Выбор и развертывание сервера происходит в личном кабинете вашего хостинга. Я рекомендую использовать Ubuntu 20 — 22 и не менее 1 Гб RAM, 1 CPU
После того как развернули (создали) сервер на Ubuntu, заходим через терминал SSH или веб-терминал и выполняем ряд команд (копировать — вставить — Enter).
Устанавливаем Wireguard VPN
Обновим сервер:
apt update && apt upgrade -y
Установим Wireguard с выбором опций:
wget -O wireguard.sh https://get.vpnsetup.net/wg && bash wireguard.sh
Скрипт в процессе установки нам предложит:
- Выбрать порт — выбирайте любой из диапазона от 5 знаков до значения в 65535. Например, 54562, но не стандартный!
- Дать название первому юзеру (любое)
- Выбрать DNS-сервер
В конце установки скрипт выдаст QR-код, который можно отсканировать на смартфон, в приложение WireGuard, и начать пользоваться VPN.
Добавляем клиентов (через эту команду управляем в принципе Wireguard):
bash wireguard.sh
Выбираем пункт 1 и называем напр. User. Скрипт сгенерирует ключ и QR-код. Все ключи программа хранит в папке /root/
Скачать все ключи можно через SFTP, либо открыть файл редактором, как указано ниже, скопировать код и вставить его в приложение WireGuard:
nano /root/user.conf
Скачать приложения можно по ссылке ниже:
Установка Outline VPN
Скачиваем и устанавливаем менеджерский софт Outline:
Выбираем вариант, который я подсветил желтым цветом:
А далее, немного поработаем с терминалом SSH:
sudo apt install curl && sudo curl -sS https://get.docker.com/ | sh
sudo bash -c "$(wget -qO- https://raw.githubusercontent.com/Jigsaw-Code/outline-server/master/src/server_manager/install_scripts/install_server.sh)"
В конце скрипт выдаст нам ссылку, скопируем ее и вставим в приложение менеджера Outline.
Образец ссылки:
{"apiUrl":"https://ip_сервера:27787/Dm9Rv_OhgfujfgfR3QoA","certSha256":"D0A763F2618CDDjhfhjgjhfhukj85FE260C791A8A4C8D489DCD898"}
Далее, установим клиент Ouline по ссылке или с Google play & App store:
Добавляем новых клиентов, через менеджерский софт Outline.
Нажимаем ctlr + x, далее y + enter, чтобы сохранить.
Установка Outline закончена.
Базовая защита сервера
Защитим сервер брутфорса (взлом через перебор паролей):
apt install fail2ban -y && apt install ufw -y && apt install nano -y
touch /etc/fail2ban/jail.local && nano /etc/fail2ban/jail.local
Откроется редактор, вставим в него код:
[sshd]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
logpath = /var/log/auth.log
findtime = 600
maxretry = 3
bantime = 43200
Нажимаем ctlr + x, далее y + enter, чтобы сохранить.
Настраиваем фаервол и отключаем пинг
Внимание! Вместо 51820/udp, пишем тот порт, который мы указали при установке Wireguard.
Если мы установили только Wireguard
ufw allow 51820/udp && ufw allow 22 && ufw limit 22/tcp && service ufw start && ufw enable
Если мы установили только Outline
ufw allow 22 && ufw limit 22/tcp && ufw allow 33598/tcp && ufw allow 29843/udp && ufw allow 29843/tcp && service ufw start && ufw enable
Подтверждаем включение фаервола, Y и Enter.
Отключим двухсторонний пинг, чтобы затруднить обнаружение туннеля
nano /etc/ufw/before.rules
Меняем концовку следующего выражения с ACCEPT на DROP:
-A ufw-before-input -p icmp --icmp-type echo-request -j DROP
Нажимаем ctlr + x, далее y + enter, чтобы сохранить.
Напоследок, обновим и перезагрузим наш сервер.
apt update && apt upgrade -y && apt autoclean -y && apt clean -y && apt autoremove -y && reboot
Если есть вопросы, дополнения или уточнения — пишите в комментариях!
Да, очень просто и эффектно, мне казалось сложнее. Только у меня порты для управления и подключения Outline другие получились — правила для файрволла пришлось поправить.
Я вообще по заголовку подумал было, что можно как-то Outline научить использованию протокола Wireguard. ))
Большое спасибо за ваш комментарий. Насчёт портов, подправлю в статье 🙂
Привет! А можешь пост о настройке wireguard, чтобы использовалась ipv6 и набиралось максимально возможное по баллам на https://ipv6-test.com/
Я настраивал вот по этой инструкции свой арендованный https://github.com/angristan/wireguard-install но у меня не завелось, хотя поставщик поддерживает. Нашел интересный вариант с каналом 10 гигабит в Нью-Йорке за 3,5 $ кстати https://www.madcityservers.com/ сам не пробовал пока изза расстояния
Привет! А зачем это надо?) Я бы ipv6 вообще отключил в VPN, так проще контролировать трафик по ipv4
Больше для общего развития 🙂 тут много + описано https://habr.com/ru/articles/490378/
Большое спасибо, почитаю )
Статья обновлена
Добрый день. Я правильно понимаю что при таком раскладе как у вас, мы можем пользоваться или тем или другим? И вместе они никак не могут работать?
Тоже интересно как заставить их работать вместе
Ставьте все, Outline кстати, пока работает в РФ
Добрый день. Протоколы работают на одном сервере и не мешают друг друга, можно добавить еще Tailscale + IPSek, мешать они друг другу не будут
Дмитрий, а почему вы рекомендуете сменить стандартный порт WG на другой? У меня уже был настроен WG решением от FireZone. При установке в дополнение Outline и настройке UFW по инструкции WG не может подключится. Открыл 443 порт, 51820 и 22. Так же 80. Если отключить фаервол — все работает.
Чтобы совсем не упрощать жизнь провайдеру или любому третьему лицу, кто будет фильтрвоать трафик. Сейчас это особо не критично т.к. WireGuard, OpenVPN, IPSek в РФ совсем скоро заблочат и все равно придется переходить на другие протоколы.
Я просто не могу понять, почему тогда фаервол не пропускает wireguard. outline пропускает нормально
Посмотрите в этой статье все что под заголовком Включаем фаервол. Надо посмотреть какие порты у вас использует WG и добавить их в фаервол, а остальные отключить. Порт 80, если он не используется для панели, лучше отключить.
Обходим великий российский фаервол (ingeniare.space)
У меня на DigitalOcean работал Wireguard, и я в Outline Manager установил Outline тоже на этот сервер. Но оказалось, что у меня теперь два дроплета, один 4$ c WG, другой 6$ с Outline. Можно ли их объединить в один дроплет и как это сделать проще?
Droplet — это виртуальный сервер, у вас теперь их 2. Объеденить не получится, можете только сделать бэкап конфигов, например Wireguard или Outline Manager, удалить сервер, установить на другой сервер ПО и восстановить конфиги.
Спасибо за статью.
Единственное, нужно добавить подробностей про настройку фаервола для Outline.
При получении ссылки из скрипта в конце будет такой текст.
И именно эти порты нужно указать в настройке фаервола
Да, спасибо за уточнение. Я внесу правку в статью 🙂