Как настроить vpn на ubuntu 20

Обновлено: 02.07.2024

Что такое WireGuard?

Будет ли WireGuard выполнить свое обещание, еще неизвестно, но пока что он продемонстрировал большой успех в росте своей популярности. Тот факт, что WireGuard вошел в ядро ​​Linux 5.6, является твердым свидетельством его надежности. Как Линус однажды выразился, это просто произведение искусства.

Примеры использования WireGuard VPN Server

Хотя название этого руководства посвящено настройке сервера WireGuard VPN, технически это неверно. В отличие от OpenVPN, в WireGuard нет понятия сервера и клиента. Скорее всего, конечные точки сети, подключенные WireGuard, называются одноранговыми узлами, и они общаются друг с другом напрямую через попарные туннели WireGuard. Подобные концепции уже доступны в существующих одноранговых VPN, таких как Tinc или n2n. Даже в такой одноранговой схеме VPN один назначенный одноранговый узел может играть роль VPN-сервера для всех остальных одноранговых узлов. Это традиционный вариант использования службы VPN, цель которого состоит в том, чтобы скрыть свой цифровой след, обойти геозону, защитить себя от слежки в общедоступной сети Wi-Fi и т. д. В этом случае вы настраиваете назначенный одноранговый узел WireGuard на виртуальный частный сервер (VPS) , и пусть он маршрутизирует весь ваш трафик в качестве шлюза по умолчанию. Поскольку одноранговый узел WireGuard работает на VPS, полностью под вашим контролем, вам не нужно беспокоиться о том, что ваши онлайн-действия в VPN тайно регистрируются, что всегда возможно для существующего бесплатного VPN-хостинга. Сервер WireGuard VPN также может быть настроен для ретрансляции трафика между подключенными пользователями (в случае, если они хотят, но не могут напрямую обмениваться трафиком за NAT).

Установите WireGuard на Ubuntu

Неудивительно, что WireGuard уже включен в репозитории по умолчанию всех современных дистрибутивов Linux, включая Ubuntu 20.04. Это делает установку WireGuard довольно простой:

Настройте WireGuard как VPN-сервер

Большую часть ручной настройки WireGuard можно выполнить стандартными средствами ip или ifconfig инструментами, за исключением криптографической конфигурации. Для настройки шифрования и прочего WireGuard поставляется с инструментами командной строки, называемыми wg и wg-quick .

Конфигурацию WireGuard лучше всего выполнять с помощью root, поскольку она включает в себя привилегированные операции. Итак, сначала переключитесь в корень:

Остальная часть процедуры будет выполняться как корень.

В WireGuard каждый подключенный одноранговый узел (включая сервер и клиентов) должен сгенерировать свою собственную пару криптографических (открытый/закрытый) ключей для аутентификации и шифрования. Итак, первым шагом в настройке сервера WireGuard является создание пары ключей для сервера следующим образом.


В приведенном выше примере, команда umask гарантирует, что только корень имеет разрешения на чтение, запись и выполнение /etc/wireguard. Ключевая пара, сгенерированная с помощью, wg будет найдена в /etc/wireguard. Каждому клиенту, который хочет подключиться к серверу, также необходимо сгенерировать свою собственную пару ключей. Конфигурация на стороне клиента рассматривается в другом руководстве.

Затем создайте файл конфигурации сервера WireGuard в формате /etc/wireguard/wg0.conf. Файл конфигурации WireGuard называется именем интерфейса WireGuard, за которым следует .conf. Поэтому при активации wg0.conf будет создан виртуальный интерфейс с именем wg0. В файле конфигурации мы определяем, среди прочего, порт прослушивания сервера, закрытый ключ и частный IP-адрес, который будет назначен серверу, и т.д.

Команда iptables включает и отключает маскировку IP, которая необходима для того, чтобы одноранговые узлы с частными IP-адресами могли связываться друг с другом через свои общедоступные IP-адреса. Здесь убедитесь, что интерфейс, указанный с помощью -o ( ens3в этом примере), является интерфейсом WAN вашего сервера Ubuntu.

Убедитесь, что wg0.conf он недоступен для чтения непривилегированным пользователям.

Теперь активируйте эту конфигурацию с помощью:

Это активирует wg0виртуальный интерфейс, назначит ему частный IP-адрес и активирует IP-маскарад на интерфейсе. Вы можете проверить состояние интерфейса с помощью:


Если вы видите виртуальный интерфейс wg0, это означает, что одноранговый узел WireGuard успешно запущен и работает в Ubuntu.

Шаги настройки WireGuard Post

Чтобы этот одноранговый узел WireGuard мог успешно допустить других одноранговых узлов и действовать как их VPN-сервер, вам необходимо выполнить следующие шаги.

Во-первых, вам необходимо разрешить входящие UDP-соединения на порт прослушивания WireGuard (51820), указанный в /etc/wireguard/wg0.conf.


Как указано выше, правила брандмауэра успешно обновлены ufw и будут включены автоматически при запуске системы.

Затем вам необходимо включить переадресацию IP , чтобы сервер WireGuard VPN мог ретранслировать трафик между подключенными одноранговыми узлами, а также маршрутизировать трафик в качестве шлюза по умолчанию. Откройте /etc/sysctl.conf и раскомментируйте следующую строку.

Если вы назначаете IPv6-адреса одноранговым узлам WireGuard, раскомментируйте следующую строку.

Обновить обновлено sysctl.confс помощью:

Автозапуск службы WireGuard VPN

Если вы используете WireGuard VPN на удаленном экземпляре VPS , вы можете включить автоматический запуск WireGuard при загрузке VPS.

К счастью, WireGuard уже интегрирован с systemd в Ubuntu 20.04. Таким образом, вы можете управлять службой WireGuard с помощью команды systemctl (вместо запуска wg-quick вручную).

Если вы уже запустили WireGuard вручную wg-quick, сначала вам нужно остановить его перед использованием systemctl:

Затем вы можете легко запускать и останавливать WireGuard с помощью systemctl:

Обратите внимание, что wg0 в команде должно быть указано имя вашего виртуального интерфейса WireGuard.

Чтобы включить автоматический запуск WireGuard при загрузке:

Вы можете отслеживать статус WireGuard с помощью:


Теперь ваш сервер WireGuard VPN готов к использованию!

Резюме

В этом руководстве я описываю, как настроить WireGuard VPN в среде Ubuntu Server 20.04. Как видите, установка WireGuard на стороне сервера чрезвычайно проста, в основном из-за того, что WireGuard (как модуль ядра, так и инструменты пользовательского уровня) уже был принят в основных дистрибутивах Linux. В разработке находятся различные интерфейсы пользовательского интерфейса для WireGuard, а последняя версия (v1.16) NetworkManager также начала предоставлять встроенную поддержку WireGuard.

В этой статье я покажу как настроить сервер VPN с помощью OpenVPN на Ubuntu 20.04.

Как настроить OpenVPN в системе Ubuntu 20.04

Как настроить OpenVPN в системе Ubuntu 20.04

Требования для настройки:

Мы будем использовать два сервера Ubuntu работающих на версии 20.04:

  • Сервер Центра Сертификации (ЦС), который будет проверять запрос и подписывать сертификаты клиентов.
  • Сервер OpenVPN, на котором мы установим VPN.

Настройка сервера центра сертификации Ubuntu

Рекомендую сохранить автономный сервер в качестве центра сертификации (certificate authority). Делается это из соображений безопасности. Давайте перейдем к настройке сервера центра сертификации.

Сначала убедитесь, что система обновлена. Выполните следующую команду:

Вам нужно будет создать некорневого пользователя для конфигураций сервера центра сертификации.

Теперь дайте пользователю привилегии sudo:

Далее выйдите из системы, а затем снова войдите в систему.

Установка EasyRSA на сервер центра сертификации

Чтобы установить easy-rsa, загрузите инструмент управления PKI с github. Это можно сделать с помощью wget команды:

Затем распакуйте файл tgz:

Чтобы ограничить доступ только для пользователя, используйте:

Теперь переместите EasyRSA в каталог opt

Для этой конфигурации мы будем использовать версию EasyRSA 3.0.8.

Создание сервера центра сертификации с помощью EasyRSA

Первое что требуется сделать это создать файл с именем vars для хранения информации об организации. Для этого мы можем использовать пример файла, доступного в каталоге EasyRSA-3.0.8.

Чтобы перечислить файлы в каталоге EasyRSA, используйте команду:

В терминале вы увидите следующий ответ:

Сделайте копию файла vars.example как vars:

Теперь откройте файл vars и добавьте информацию об организации в конец файла:

$ vim vars
set_var EASYRSA_REQ_COUNTRY "CM"
set_var EASYRSA_REQ_PROVINCE "Littoral"
set_var EASYRSA_REQ_CITY "Douala"
set_var EASYRSA_REQ_ORG "OPEN-SHARE"
set_var EASYRSA_REQ_EMAIL "admin@open-share.com"
set_var EASYRSA_REQ_OU "Com"
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"

Теперь инициализируйте PKI на сервере центра сертификации. После инициализации сервер создаст папку pki.

Теперь мы можем создать корневую пару открытых и закрытых ключей для нашего ЦС. Во время этого процесса вас попросят ввести кодовую фразу для пары ключей. А так же она потребуется, когда вам нужно будет подписать или отозвать сертификат. Но в нашем случае мы будем использовать команду так, чтобы нам кодовая фраза не предлагалась. Вам также будет предложено указать Общее имя (CN), но мы оставим его по умолчанию, нажав клавишу Enter.

Это создаст корневой сертификат с именем ca.crt в каталоге pki и приватным ключом ca.key в каталоге pki/private.

Вот и все наш сервер центра сертификации готов!

Установка и настройка сервера Openvpn

Давайте перейдем ко второму серверу, чтобы установить и настроить openvpn. Вам также потребуется создать некорневого пользователя на этом сервере и предоставить ему соответствующие sudo привилегии.

Чтобы установить openvpn на ubuntu, выполните следующие команды:

$ sudo apt update
$ sudo apt install openvpn

На сервере openvpn утилита easyrsa будет использоваться для генерации запроса сертификата, который будет проверен и подписан сервером центра сертификации (ЦА). Выполните те же действия, что и в предыдущем разделе, чтобы установить Easyrsa.

Теперь распакуйте загруженный файл tgz:

Ограничьте доступ только пользователю:

Переместите EasyRSA-3.0.8 в opt каталог:

Создание PKI на сервере OpenVPN Ubuntu

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

Эта команда позволяет создать файл vars мы описывали это выше:

Теперь отредактируйте файл vars с помощью утилиты VIM, добавив следующие строки в конце файла:

$ vim vars
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"

Чтобы создать папку PKI на сервере openvpn, запустите файл easyrsa сценария:

Вы увидите следующий ответ в терминале:

Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/vars init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /opt/EasyRSA-3.0.8/pki

Создайте запрос сертификата сервера и сгенерируйте закрытый ключ

Теперь мы сгенерируем закрытый ключ и запросим сертификат на сервере OpenVPN. Далее мы передадим файл запроса сертификата на сервер центра сертификации (ЦА). который будет подписан, чтобы создать необходимый сертификат

Находясь в той же папке, мы можем сгенерировать запрос nopass . Следующая команда создает файл закрытого ключа с именем openvpn-server.key и файл запроса сертификата с именем openvpn-server.req.

$ ./easyrsa gen-req openvpn-server nopass

Вывод в терминале:

Теперь скопируйте файл ключа сервера с именем openvpn-server.key в каталог с именем /etc/openvpn/server.

$ sudo cp /opt/EasyRSA-3.0.8/pki/private/openvpn-server.key /etc/openvpn/server

Затем скопируйте файл запроса сертификата на сервер ЦА (центра сертификации):

$ scp /opt/EasyRSA-3.0.8/pki/reqs/openvpn-server.req malain@192.168.216.108:/tmp

На сервере ЦА перейдите в каталог easyrsa,

Чтобы импортировать запрос, выполните следующую команду:

$ ./easyrsa import-req /tmp/openvpn-server.req openvpn-server

Ответ в терминале:

Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/vars
Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020


The request has been successfully imported with a short name of: openvpn-server
You may now use this name to perform signing operations on this request.

А теперь подпишите запрос. Поскольку мы подписываем запрос сервера, мы должны использовать директиву server перед общим именем нашего сервера openvpn. Если бы это был запрос клиента, мы должны были бы использовать директиву client вместо server .

Подписать запрос:

$ ./easyrsa sign-req server openvpn-server

Ответ в терминале:

Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/vars
Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020

You are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.

Request subject, to be signed as a server certificate for 825 days:
subject=
commonName = openvpn-server
Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
Using configuration from /opt/EasyRSA-3.0.8/pki/easy-rsa-4100.IbygpP/tmp.hJY2T5
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'openvpn-server'
Certificate is to be certified until Jul 1 19:50:36 2023 GMT (825 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /opt/EasyRSA-3.0.8/pki/issued/openvpn-server.crt

Теперь запрос сертификата сервера OpenVPN подписан сервером ЦА, нам нужно передать подписанный запрос и открытый сертификат на сервер OpenVPN.

Теперь мы сгенерируем предварительный общий ключ tls-crypt. Это гарантирует что наш OpenVPN-сервер способен справляться с не аутентифицированным трафиком, сканированием портов и некоторыми атаками, которые могут использовать много ресурсов сервера.

Ответ в терминале:

Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/vars Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020 Generating DH parameters, 2048 bit long safe prime, generator 2 This is going to take a long time . +. . . . +. +. +. . +. . ++*++*++*++*

DH parameters of size 2048 created at /opt/EasyRSA-3.0.8/pki/dh.pem

Далее вводим команду

Теперь скопируйте ключ и pem файлы в каталог /etc/openvpn/server:

$ sudo cp ta.key pki/dh.pem /etc/openvpn/server

Создание сертификата клиента и пары ключей

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

$ sudo mkdir -p /opt/client-configs/keys
$ sudo chown franck:franck -R /opt/client-configs
$ sudo chmod 700 -R /opt/client-configs

Сгенерируйте запрос на сертификат клиента:

$ cd /opt/EasyRSA-3.0.8
$ ./easyrsa gen-req my-pc nopass

Ответ в терминале:

Теперь скопируйте клиентский ключ в каталог client-configs:

$ cp pki/private/my-pc.key /opt/client-configs/keys/

Скопируйте файл запроса сертификата клиента на сервер центра сертификации:

На сервере центра сертификации импортируйте CSR:

$ cd /opt/EasyRSA-3.0.8
$ ./easyrsa import-req /tmp/my-pc.req my-pc


Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/vars
Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020


The request has been successfully imported with a short name of: my-pc
You may now use this name to perform signing operations on this request.

Теперь мы должны подписать запрос для клиента, набрав:

Ответ в терминале:

Скопируйте сертификат клиента на сервер openvpn:

Теперь на сервере openvpn нам нужно скопировать все клиентские файлы в каталог клиента, который мы создали ранее.

$ sudo cp /tmp/my-pc.crt /opt/client-configs/keys/

$ sudo cp /etc/openvpn/server/ca.crt /opt/client-configs/keys/

$ cp /opt/EasyRSA-3.0.8/ta.key /opt/client-configs/keys/

Убедитесь в том, что пользователь не является root и имеет разрешения на файлы.

$ sudo chown franck:franck /opt/client-configs/keys/*

Настройка VPN-сервиса

Для настройки VPN сервиса мы должны сделать копию шаблонов

$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server/

Затем распакуйте файл

$ sudo gzip -d /etc/openvpn/server/server.conf.gz

Далее войдите в папку

Некоторые линии будут заменены, чтобы соответствовать нашей конфигурации::

Таким образом, файл должен выглядеть следующим образом:

$ sudo vim /etc/openvpn/server/server.conf
tls-crypt ta.key
cipher AES-256-CBC
auth SHA256
dh dh.pem
user nobody
group nogroup
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
port 1194
proto udp
explicit-exit-notify 1
cert openvpn-server.crt
key openvpn-server.key

Вы должны активировать переадресацию ip-адресов, отредактировав значение net.ipv4.ip_forward в файле /etc/sysctl.conf.

$ sudo vim /etc/sysctl.conf
net.ipv4.ip_forward=1

Чтобы изменения, внесенные в файл /etc/sysctl.conf, вступили в силу, выполните команду:

Теперь вам нужно разрешить OpenVPN в вашем брандмауэре. Для этого включите маскарад. Для этого вам необходимо определить имя вашего общедоступного сетевого интерфейса:

$ ip route | grep default
default via X.X.X.X dev eth0 proto static

В нашем случае это eth0. Теперь мы должны добавить правила маскарадов в конфигурацию брандмауэра, поэтому добавим строку ниже в верхней части файлов правил:

Теперь давайте отредактируем ufw, чтобы разрешить пересылку пакетов по умолчанию.

$ sudo vim /etc/default/ufw
DEFAULT_FORWARD_POLICY="ACCEPT"

Откройте порт openvpn на брандмауэре:

Чтобы перезапустить службу ufw, введите:

Чтобы включить запуск службы openvpn при запуске системы, введите:

$ sudo systemctl enable openvpn-server@server

Чтобы запустить openvpn, введите:

$ sudo systemctl start openvpn-server@server

Вы можете проверить статус openvpn с помощью:

$ sudo systemctl status openvpn-server@server

Чтобы проверить туннельный интерфейс, введите:

3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
link/none
inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
valid_lft forever preferred_lft forever
inet6 fe80::c3d9:85d1:e2a9:6b2c/64 scope link stable-privacy
valid_lft forever preferred_lft forever

Настройка vpn-файлов для клиентов

Теперь мы должны скопировать пример конфигурационного файла

$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /opt/client-configs/base.conf

Дайте разрешение не корневому пользователю

$ sudo chown franck:franck -R /opt/client-configs/

Отредактируйте файл base.conf

Теперь мы создадим скрипт для генерации сертификатов и зашифрованных файлов на клиенте. Скрипт также сделает копию файла base.conf и соберет все ключи и сертификаты, созданные для клиентов. Для каждого клиента нам потребуется сгенерировать сертификат и ключ перед запуском скрипта

Убедитесь, что сценарий может быть запущен пользователем, не являющимся пользователем root.

$ chmod 700 /opt/client-configs/make_config.sh

Теперь вы можете сгенерировать файл подключения клиента на основе конфигурации ключа клиента и сертификата (my-pc.crt и my-pc.key)

Теперь запустите скрипт за которым следует общее имя используемое для клиента. Он создаст клиентский vpn-файл для использования.

Вы можете проверить результат:

Подключение клиента к OpenVPN-соединению

Установите openvpn клиент. Он будет использоваться для установки vpn-соединения с сервером

$ sudo apt update && sudo apt install openvpn -y

Теперь скопируйте клиентский файл OpenVPN, который находится на сервере. Копировать надо на клиентский компьютер. После этого на клиентском компьютере выполните следующую команду:

$ rsync -av franck@X.X.X.X:/opt/client-configs/files/my-pc.ovpn .

Перед редактированием конфигурационного файла клиента OpenVPN мы должны проверить, используем ли мы resolvconf или systemd-resolved для разрешения DNS

С этим значением nameserver 127.0.0.53 он показывает, что вы используете systemd-resolved. Далее установите пакет, который поможет systemd-resolved использовать VPN для разрешения DNS при подключении.

$ sudo apt install openvpn-systemd-resolved

Теперь мы можем отредактировать файл vpn-клиента, раскомментировав строки, необходимые для systemd-resolved

$ vim my-pc.ovpn
script-security 2
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre
dhcp-option DOMAIN-ROUTE .

Для системы, использующей update-resolv-conf раскомментируйте строки

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

Теперь попробуем подключиться к VPN с помощью команды openvpn:

Вы можете проверить информацию ip для туннельного интерфейса

Эта команда покажет IP-адрес туннеля, и мы можем пингануть сервер OpenVPN. С помощью пинга вы поймете подключились вы на сервер или нет.

Заключение

При использовании OpenVPN легко настроить VPN-соединение. Это хорошее решение, если вы хотите настроить VPN на своем облачном сервере без использования какого-либо специализированного ПО.

VPN для ПК бесплатно Linux

В этой статье я хотел рассказать о простом способе подключение VPN для ПК бесплатно на Linux, делать это буду на Ubuntu 20.04, но в принципе эта инструкция подойдёт и для других дистрибутивов, единственное, путь к настройкам VPN будет отличатся возможно.

Также прочитайте статью «Настройка Ubuntu 20.04» если вы хотите узнать более подробно настройках Ubuntu 20.04 или графической оболочки GNOME 3, то вам надо прочитать.

Настройки VPN:

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

Открываем настройки VPN на Linux

Создание VPN соединения:

Теперь выбираем тип VPN соединения, нам нужен PPTP, также, мы будем использовать VPN сервер на сайта FreeVPN4you, на мой взгляд он наиболее быстрый и при этом бесплатный (Ссылка на VPN сервер), также надо сказать, чтобы вы сохранили в себе закладки эту ссылку, потому что пароль периодически меняется, и что бы не потерять его и знать какой сейчас там пароль.

Выбор типа подключения VPN

После этого в поле шлюз вписываем имя хоста, ну а дальше соответственно в имя пользователя вписываем в поле имя пользователя и пароль в поле пароль.

Настройка VPN на пк под Linux Ubuntu

Дальше нажимаем «Дополнительно…» и там вставить галочку у параметра «Использовать шифрование MPPE», нажимаем «OK».

Использование шифрования MPPE для Linux

Теперь сверху нажимаем «Добавить», и всё, после этого должно всё работать.

Вывод:

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

Также скажу что этот способ подойдёт и другим дистрибутивом Linux, единственное, может путь к настройкам будет не много отличатся.

В этой статье мы обсудим, как настроить WireGuard VPN на Ubuntu 20.04, который будет действовать как VPN-сервер. Мы также покажем вам, как настроить WireGuard в качестве клиента. Клиентский трафик будет маршрутизироваться через сервер Ubuntu 20.04.

Эту настройку можно использовать в качестве защиты от атак «Человек посередине», анонимного просмотра веб-страниц, обхода контента с ограничением по географическому признаку или предоставления вашим коллегам, которые работают из дома, безопасного подключения к сети компании.

Подготовка

Чтобы следовать этому руководству, вам понадобится сервер Ubuntu 20.04 с доступом root или sudo .

Настройка сервера WireGuard

Мы начнем с установки WireGuard на машину Ubuntu и настроим его для работы в качестве сервера. Мы также настроим систему для маршрутизации клиентского трафика через нее.

Установите WireGuard на Ubuntu 20.04

WireGuard доступен из репозиториев Ubuntu по умолчанию. Чтобы установить его, выполните следующие команды:

Это установит модуль и инструменты WireGuard.

Настройка WireGuard

В wg и wg-quick инструмент командной строки позволяют настроить и управлять интерфейсами WireGuard.

Каждое устройство в сети WireGuard VPN должно иметь закрытый и открытый ключ. Выполните следующую команду, чтобы сгенерировать пару ключей:

Файлы будут созданы в каталоге /etc/wireguard . Вы можете просматривать содержимое файлов с помощью cat или less . Закрытый ключ никогда не должен передаваться кому-либо и всегда должен храниться в безопасности.

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

Следующим шагом является настройка туннельного устройства, которое будет маршрутизировать трафик VPN.

Устройство можно настроить либо из командной строки с помощью команд ip и wg , либо путем создания файла конфигурации с помощью текстового редактора.

Создайте новый файл с именем wg0.conf и добавьте следующее содержимое:

Интерфейс можно назвать как угодно, однако рекомендуется использовать что-то вроде include wg0 или wgvpn0 . Настройки в разделе интерфейса имеют следующее значение:

Не забудьте заменить ens3 после -A POSTROUTING чтобы оно соответствовало имени вашего общедоступного сетевого интерфейса. Вы можете легко найти интерфейс с помощью:

wg0.conf и privatekey не должны быть доступны для чтения обычным пользователям. Используйте chmod чтобы установить разрешения на 600 :

После этого wg0 интерфейс wg0 , используя атрибуты, указанные в файле конфигурации:

Команда выдаст следующий результат:

Чтобы проверить состояние и конфигурацию интерфейса, введите:

Вы также можете запустить ip a show wg0 чтобы проверить состояние интерфейса:

WireGuard также можно управлять с помощью Systemd.

Чтобы запустить интерфейс WireGuard во время загрузки, выполните следующую команду:

Сеть сервера и настройка брандмауэра

Для работы NAT необходимо включить переадресацию IP. Откройте /etc/sysctl.conf и добавьте или раскомментируйте следующую строку:

Сохраните файл и примените изменения:

Если вы используете UFW для управления брандмауэром, вам необходимо открыть UDP-трафик на порт 51820 :

Вот и все. Одноранговый узел Ubuntu, который будет действовать как сервер, настроен.

Настройка клиентов Linux и macOS

После установки выполните следующие действия, чтобы настроить клиентское устройство.

Процесс настройки клиента Linux и macOS практически такой же, как и для сервера. Сначала сгенерируйте открытый и закрытый ключи:

Создайте файл wg0.conf и добавьте следующее содержимое:

Настройки в разделе интерфейса имеют то же значение, что и при настройке сервера:

Одноранговый раздел содержит следующие поля:

Если вам нужно настроить дополнительных клиентов, просто повторите те же шаги, используя другой частный IP-адрес.

Настройка клиентов Windows

Загрузите и установите пакет Windows msi с веб-сайта WireGuard .

После установки откройте приложение WireGuard и нажмите «Добавить туннель» -> «Добавить пустой туннель…», как показано на изображении ниже:

Пара публичных ключей создается автоматически и отображается на экране.

Введите имя туннеля и отредактируйте конфигурацию следующим образом:

В разделе интерфейса добавьте новую строку для определения адреса туннеля клиента.

В одноранговом разделе добавьте следующие поля:

После этого нажмите кнопку «Сохранить».

Добавить однорангового клиента к серверу

Обязательно измените CLIENT_PUBLIC_KEY на открытый ключ, сгенерированный на клиентском компьютере ( sudo cat /etc/wireguard/publickey ), и настройте IP-адрес клиента, если он отличается. Пользователи Windows могут скопировать открытый ключ из приложения WireGuard.

После этого вернитесь на клиентский компьютер и откройте интерфейс туннелирования.

Клиенты Linux и macOS

Выполните следующую команду, чтобы открыть интерфейс:

Теперь вы должны быть подключены к серверу Ubuntu, и трафик с вашей клиентской машины должен проходить через него. Проверить соединение можно с помощью:

Вы также можете открыть свой браузер, ввести «what is my ip», и вы должны увидеть IP-адрес своего сервера Ubuntu.

Чтобы остановить туннелирование, wg0 интерфейс wg0 :

Клиенты Windows

Если вы установили WireGuard в Windows, нажмите кнопку «Активировать». После подключения одноранговых узлов статус туннеля изменится на Активный:

Выводы

Мы показали вам, как установить WireGuard на машину с Ubuntu 20.04 и настроить его как VPN-сервер. Эта настройка позволяет вам просматривать веб-страницы анонимно, сохраняя конфиденциальность ваших данных о трафике.

Если вы столкнулись с какой-либо проблемой, не стесняйтесь оставлять комментарий.

Читайте также: