Давайте без лишней воды: без VPN сейчас жить так же трудно, как дышать без воздуха. Поэтому сразу погнали.
Покупка сервера
Чтобы поднять свой VPN, нам нужно то, на чём, собственно, его поднимать. Поэтому покупаем свой VPS-сервер. Я купил на timeweb, но вы можете выбрать другой вариант.
Вам нужно выбрать один из существующих вариантов:
Смотрите, что вам ближе по ценам и по скоростям. У меня самый дешёвый тариф, и каких-либо сложностей со скоростями я не испытываю.
После выбора вам нужно будет зарегистрировать и подтвердить выбор сервера:
Выберите нужный срок действия.
В дополнительных параметрах заказа вам нужно обязательно выбрать Ubuntu 20.4, а в панели управления — VestaCP. IP-адрес выбирать необязательно:
Создание туннеля для VPN-клиента
Сразу после оплаты на указанную почту придёт несколько писем от хостера. Одно из них будет содержать данные для доступа к серверу SSH. Но поскольку операционная система Ubuntu, вы её выше выбрали устанавливается на виртуальную машину какое-то время. Минут пять.
Через 5 минут открывайте Командную строку: если вы пользуетесь Windows сочетание клавиш Win + R, а затем в открывшемся окне набрать cmd и нажать на Enter, либо Терминал, если вы пользуетесь macOS. Его можно найти, просто набрав нужное слово в Launchpad:
Также открывайте пришедшее письмо — вы можете найти его в своём почтовом ящике по запросу SSH.
В «Терминале» или «Командной строке» вбейте следующий запрос:
ssh root@[ваш IP-адрес]
Тут важно соблюсти все пробелы или их отсутствие. Ваш IP-адрес вы можете найти в письме.
Дальше вам потребуется ввести пароль. Ни «Терминал», ни «Командная строка» не отображают то, что вы его вводите. Поэтому тут придётся вслепую перепечатывать. Вот я пару раз ошибся, но в итоге всё получилось:
Затем переходите по ссылке и копируйте эту строчку: wget https://git.io/wireguard -O wireguard-install.sh && bash wireguard-install.sh
И просто её вставляйте нажатием на Ctrl + V либо Cmd + V:
Жмите на Enter. После этого выберите Add a new client, нажав на 1 и подтвердив выбор клавишей Enter. После этого вам предложат выбрать имя для VPN-клиента — пишите на своё усмотрение, а также обязательно замените DNS. Я, например, выбираю гугловский:
Снова жмите на клавишу Enter, после чего будет создан QR-код.
Добавление туннеля в VPN-клиент
Скачивайте на смартфон приложение WireGuard. Это VPN-клиент, куда вы можете добавлять свои туннели. Вот ссылка на Android, а вот — на iOS.
В приложении нажмите на «+», а затем на «Создать из QR-кода». После чего вам предложат задать имя отсканированному туннелю:
Итак, теперь вы хацкер! У вас на смартфоне есть работающий VPN!
Как перенести на компьютер или другой смартфон?
Как я сказал выше, один туннель работает на одном устройстве. Поэтому если вы один и тот же туннель включаете на разных устройствах, то работать он будет только на одном из них. Поэтому всю эпопею с «Командной строкой» или «Терминалом» надо проделать заново, отсканировав QR-код смартфоном.
После этого идите в настройки WireGuard, где выберите пункт «Экспорт zip-архива»:
Вам будет предложено сохранить zip-архив со всеми туннелями в «Файлах» айфона или «Документах» Android-смартфона. Вы можете там же разархивировать архив и отправить удобным вам образом этот свежесозданный туннель в формате .conf. Например, документом через Telegram или AirDrop.
Ссылку на Windows-приложение вы можете найти тут, а скачать WireGuard на macOS можно прямо в App Store.
Открываете приложение. Оно выглядит как-то так:
Слева снизу есть «+». Жмите на него и добавляйте туннель из файла:
После этого у вас есть работающий VPN на компьютере!
Важно
С помощью этого VPN-сервера не стоит качать торренты. Сами torrent-файлы — пожалуйста, а вот скачивать из них строго запрещено. Как только вы это сделаете, вас забанят на сервере, поэтому будьте аккуратны.
WireGuard — это современная технология VPN (виртуальная частная сеть) с самой современной криптографией. По сравнению с другими аналогичными решениями, такими как IPsec и OpenVPN , WireGuard быстрее, проще в настройке и более производительно. Это кроссплатформенный и может работать практически где угодно, включая Linux, Windows, Android и macOS. Wireguard — это одноранговая VPN; он не использует модель клиент-сервер. В зависимости от конфигурации одноранговый узел может действовать как традиционный сервер или клиент.
WireGuard работает путем создания сетевого интерфейса на каждом одноранговом устройстве, которое действует как туннель. Одноранговые узлы аутентифицируют друг друга, обмениваясь и проверяя открытые ключи, имитируя модель SSH. Открытые ключи сопоставляются со списком IP-адресов, разрешенных в туннеле. Трафик VPN инкапсулируется в UDP.
В этом руководстве мы настроим WireGuard на машине с Ubuntu 18.04, которая будет действовать как VPN-сервер. Мы также покажем вам, как настроить WireGuard в качестве клиента. Клиентский трафик будет маршрутизироваться через сервер Ubuntu 18.04.
Эту настройку можно использовать в качестве защиты от атак «Человек посередине», анонимного просмотра веб-страниц, обхода контента с географическим ограничением или для обеспечения безопасного подключения ваших коллег к сети компании при удаленной работе.
Содержание
Подготовка
Вам понадобится сервер Ubuntu 18.04, к которому вы можете получить доступ как root или аккаунт с привилегиями sudo .
Настройка сервера WireGuard
В этом разделе мы установим WireGuard на машину Ubuntu и настроим его для работы в качестве сервера. Мы также настроим систему для маршрутизации клиентского трафика через нее.
Установка WireGuard в Ubuntu 18.04
WireGuard включен в репозитории Ubuntu по умолчанию. Для его установки выполните следующие команды:
sudo apt update sudo apt install wireguard
WireGuard работает как модуль ядра, который скомпилирован как модуль DKMS. В случае успеха вы увидите следующий результат:
wireguard:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/4.15.0-88-generic/updates/dkms/
depmod...
DKMS: install completed.
Когда вы обновляете ядро, модуль WireGuard будет скомпилирован с новым ядром.
Настройка WireGuard
WireGuard поставляется с двумя инструментами командной строки с именами wg и wg-quick которые позволяют настраивать интерфейсы WireGuard и управлять ими.
Выполните следующую команду, чтобы сгенерировать открытый и закрытый ключи:
wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
Файлы будут созданы в каталоге /etc/wireguard . Вы можете просматривать файлы с помощью cat или less . Закрытый ключ ни в коем случае нельзя передавать кому-либо.
Теперь, когда ключи созданы, нам нужно настроить туннельное устройство, которое будет маршрутизировать трафик VPN.
Устройство можно настроить либо из командной строки с помощью ip и wg либо путем создания файла конфигурации с помощью текстового редактора.
Создайте новый файл с именем wg0.conf и добавьте следующее содержимое:
Интерфейс можно назвать как угодно, однако рекомендуется использовать что-то вроде include wg0 или wgvpn0 . Настройки в разделе интерфейса имеют следующее значение:
Адрес — разделенный запятыми список IP-адресов v4 или v6 для интерфейса wg0 . Используйте IP-адреса из диапазона, зарезервированного для частных сетей (10.0.0.0/8, 172.16.0.0/12 или 192.168.0.0/16).
ListenPort — порт, на котором WireGuard будет принимать входящие соединения.
PrivateKey — закрытый ключ, сгенерированный командой wg genkey . (Чтобы увидеть содержимое файла, запустите: sudo cat /etc/wireguard/privatekey )
SaveConfig — при значении true текущее состояние интерфейса сохраняется в файле конфигурации при завершении работы.
PostUp — команда или скрипт, который выполняется перед запуском интерфейса. В этом примере мы используем iptables для включения маскарадинга. Это позволит трафику покинуть сервер, предоставив клиентам VPN доступ в Интернет.
Не забудьте заменить ens3 после -A POSTROUTING чтобы оно соответствовало имени вашего общедоступного сетевого интерфейса. Вы можете легко найти интерфейс, выполнив следующую команду:
ip -o -4 route show to default | awk '{print $5}'
PostDown — команда или скрипт, который выполняется перед выключением интерфейса. Правила iptables будут удалены после отключения интерфейса.
wg0.conf и privatekey не должны быть доступны для чтения обычным пользователям. Используйте chmod чтобы установить разрешения на 600 :
После этого wg0 интерфейс wg0 , используя атрибуты, указанные в файле конфигурации:
sudo wg-quick up wg0
Команда выдаст следующий результат:
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.0.0.1/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Запустите wg show wg0 чтобы проверить состояние и конфигурацию интерфейса:
Вы также можете запустить ip a show wg0 чтобы проверить состояние интерфейса:
ip a show wg0
4: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
link/none
inet 10.0.0.1/24 scope global wg0
valid_lft forever preferred_lft forever
Чтобы запустить интерфейс WireGuard во время загрузки, выполните следующую команду:
sudo systemctl enable wg-quick@wg0
Сеть сервера и настройка брандмауэра
Чтобы NAT работал, нам нужно включить переадресацию IP. Откройте /etc/sysctl.conf и добавьте или раскомментируйте следующую строку:
sudo nano /etc/sysctl.conf
/etc/sysctl.conf
net.ipv4.ip_forward=1
Сохраните файл и примените изменения:
sudo sysctl -p
net.ipv4.ip_forward = 1
Если вы используете UFW для управления брандмауэром, вам необходимо открыть UDP-трафик на порт 51820 :
sudo ufw allow 51820/udp
Вот и все. Одноранговый узел Ubuntu, который будет действовать как сервер, настроен.
Настройка клиентов Linux и macOS
Инструкции по установке для всех поддерживаемых платформ доступны по адресу https://wireguard.com/install/ . В системах Linux вы можете установить пакет с помощью диспетчера пакетов распространения, а в macOS — с помощью brew . После установки WireGuard выполните следующие действия, чтобы настроить клиентское устройство.
Процесс настройки клиента Linux и macOS практически такой же, как и для сервера. Начните с создания открытого и закрытого ключей:
wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
Создайте файл wg0.conf и добавьте следующее содержимое:
Настройки в разделе интерфейса имеют то же значение, что и при настройке сервера:
Адрес — разделенный запятыми список IP-адресов v4 или v6 для интерфейса wg0 .
PrivateKey — чтобы увидеть содержимое файла на клиентском компьютере, запустите: sudo cat /etc/wireguard/privatekey
Одноранговый раздел содержит следующие поля:
PublicKey — открытый ключ узла, к которому вы хотите подключиться. (Содержимое файла сервера /etc/wireguard/publickey ).
Конечная точка — IP или имя хоста однорангового узла, к которому вы хотите подключиться, за которым следует двоеточие, а затем номер порта, на котором удаленный одноранговый узел прослушивает.
AllowedIPs — разделенный запятыми список IP-адресов v4 или v6, с которых разрешен входящий трафик для однорангового узла и на которые направляется исходящий трафик для этого однорангового узла. Мы используем 0.0.0.0/0, потому что мы маршрутизируем трафик и хотим, чтобы одноранговый сервер отправлял пакеты с любым исходным IP.
Если вам нужно настроить дополнительных клиентов, просто повторите те же шаги, используя другой частный IP-адрес.
В разделе интерфейса добавьте новую строку для определения адреса туннеля клиента.
В одноранговый раздел добавьте следующие поля:
PublicKey — открытый ключ сервера Ubuntu (файл /etc/wireguard/publickey ).
Конечная точка — IP-адрес сервера Ubuntu с двоеточием и порт WireGuard (51820).
Разрешенные IP-адреса — 0.0.0.0/0
После этого нажмите кнопку «Сохранить».
Добавить однорангового клиента к серверу
Последний шаг — добавить клиентский публичный ключ и IP-адрес к серверу:
sudo wg set wg0 peer CLIENT_PUBLIC_KEY allowed-ips 10.0.0.2
Обязательно измените CLIENT_PUBLIC_KEY на открытый ключ, сгенерированный на клиентском компьютере ( sudo cat /etc/wireguard/publickey ), и настройте IP-адрес клиента, если он отличается. Пользователи Windows могут скопировать открытый ключ из приложения WireGuard.
После этого вернитесь на клиентский компьютер и откройте интерфейс туннелирования.
Клиенты Linux и macOS
На клиентах Linux выполните следующую команду, чтобы открыть интерфейс:
sudo wg-quick up wg0
Теперь вы должны быть подключены к серверу Ubuntu, и трафик с вашей клиентской машины должен проходить через него. Проверить соединение можно с помощью:
Вы также можете открыть свой браузер, ввести «what is my ip», и вы должны увидеть IP-адрес своего сервера Ubuntu.
Чтобы остановить туннелирование, wg0 интерфейс wg0 :
sudo wg-quick down wg0
Клиенты Windows
Если вы установили WireGuard в Windows, нажмите кнопку «Активировать». После подключения одноранговых узлов статус туннеля изменится на Активный:
Выводы
Мы показали вам, как установить WireGuard на компьютер с Ubuntu 18.04 и настроить его как VPN-сервер. Эта настройка позволяет вам просматривать веб-страницы анонимно, сохраняя конфиденциальность ваших данных о трафике.
Если вы столкнулись с какой-либо проблемой, не стесняйтесь оставлять комментарий.