Как настроить сервер и клиент WireGuard VPN в Ubuntu 20.04

Как настроить сервер и клиент WireGuard VPN в Ubuntu 20.04

Настройте собственный VPN с помощью Wireguard

VPN (Virtual Private Network) позволяет пользователю подключиться к частной сети удаленно , так как если компьютер пользователя был непосредственно подключен к частной сети. Первоначально технология была разработана для обеспечения удаленного доступа к внутренней частной сети компании для сотрудников, фактически не присутствующих в месте расположения внутренней сети.

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

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

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

Одним из таких протоколов, который в последнее время получает широкое распространение, является Wireguard . Wireguard легче, проще и производительнее, чем хорошо известные традиционно используемые протоколы VPN, такие как OpenVPN, IPSec. Он уже реализован для Windows, Mac OS и большого количества дистрибутивов Linux. В Linux он реализован как модуль ядра. Он доступен в официальных репозиториях Ubuntu 20.04.

В этой статье мы увидим, как настроить сервер и клиент Wireguard VPN в Ubuntu 20.04.

Установка

Для этой статьи я настраиваю Wireguard Server на Ubuntu 20.04 Linode и Wireguard Client на моем локальном компьютере с Ubuntu 20.04.

Пакет wireguardустанавливает как сервер Wireguard, так и клиент. Выполните следующую команду как на сервере, так и на клиентском компьютере.

sudo apt install wireguard

Конфигурация сервера

Ключи безопасности

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

sudo su
cd /etc/wireguard
umask 077
wg genkey | tee private_key | wg pubkey > public_key

Обратите внимание, что мы выполняем все задачи по настройке как суперпользователь. Причина в том, что доступ к каталогу /etc/wireguardзапрещен для обычных пользователей, а доступ к каталогу не может быть получен только с привилегиями sudo для обычного пользователя.

Далее мы устанавливаем маску создания файла на077 . Это означает, что всякий раз, когда какой-либо процесс создает новый файл в этой папке, его разрешения будут автоматически замаскированы с помощью 077. Например. если в этой папке создается файл с разрешениями 777, он автоматически маскируется, и разрешения фактически становятся 700. Это делается для того, чтобы только владелец файла имел все права доступа к файлу, а все остальные не имели разрешений.

В следующей строке мы генерируем пару открытого / закрытого ключей для сервера. Они сохраняются в файлах private_keyи public_key. Чтобы просмотреть ключи, запустите:

cat private_key
cat public_key

Как настроить сервер и клиент WireGuard VPN в Ubuntu 20.04

Скопируйте закрытый ключ, он нам понадобится на следующем шаге.

Примечание: никогда не сообщайте свой закрытый ключ публично!

Конфигурационный файл

Создадим файл конфигурации для Wireguard Server. Вы можете выбрать любое имя для файла. В wg0.confэтом примере мы создадим файл .

vim wg0.conf

Добавьте в файл следующее.

[Interface]
Address = 10.20.43.1/24
SaveConfig = true
ListenPort = 51190
PrivateKey = 

PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o  -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o  -j MASQUERADE

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

Нам нужно настроить Wireguard в другой (виртуальной) подсети, отличной от IP-адреса сервера. Здесь я использовал 10.20.43.1 для сервера и 10.20.43.2 для клиента. Здесь можно использовать любую подсеть. Чтобы получить IP-адрес сервера и интерфейса, запустите:

ifconfig

Как настроить сервер и клиент WireGuard VPN в Ubuntu 20.04

Выделенная часть - это IP-адрес.

Обратите внимание на IP-адрес сервера. Это требуется во время настройки клиента.

Интерфейс, используемый сервером, как показано на изображении выше, имеет вид eth0. Имя интерфейса может отличаться в зависимости от сети пользователя, это может быть wlan0или wlp2s0в случае, если пользователь подключен к сети Wi-Fi с помощью беспроводной карты.

Замените in PostUpи PostDownсвоим интерфейсом; в этом примере это так eth0. PostUpи PostDownдирективы используются , чтобы указать , какие команды должны быть запущены , когда сервер запускает и останавливает соответственно. В нашем примере мы используем iptablesкоманду для установки IP-правил так, чтобы IP-адрес сервера был общим для клиентов. Правила упадут, как только сервер остановится.

Сохраните и выйдите из файла. При использовании vim нажмите Esc , затем введите :wqи нажмите Enter, чтобы сохранить и выйти.

Если вы используете ufwбрандмауэр на сервере, нам необходимо разрешить UDP-подключения к порту для VPN-сервера, 51190.

ufw allow 51190/udp

Запуск службы

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

Чтобы служба запускалась во время загрузки, запустите:

systemctl enable [email protected]

Обратите внимание, что wg0это имя файла конфигурации.

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

service [email protected] start

Убедитесь, что служба успешно запущена:

service [email protected] status

Как настроить сервер и клиент WireGuard VPN в Ubuntu 20.04

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

ip a show wg0

Как настроить сервер и клиент WireGuard VPN в Ubuntu 20.04

Теперь сервер Wireguard VPN настроен и работает. Теперь настроим клиента.

Конфигурация клиента

Конфигурация клиента для Wireguard более или менее аналогична конфигурации сервера. Мы генерируем ключи для клиента, а затем создаем файл конфигурации.

Ключи безопасности

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

sudo su
cd /etc/wireguard
umask 077
wg genkey | tee client_private_key | wg pubkey > client_public_key

Открытый и закрытый ключи для клиента теперь генерируются соответственно в файлах client_private_keyи client_public_key.

Убедитесь, что они были созданы, используя catкоманду.

cat client_private_key
cat client_public_key

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

Конфигурационный файл

Создайте файл конфигурации с любым именем. Мы будем создавать его с именем wg0-clientдля этого примера.

vim wg0-client.conf

Добавьте следующую конфигурацию.

[Interface]
# IP Address and Private Key of the Client
Address = 10.20.43.2/24
PrivateKey = 

[Peer]
# Public key, IP Address and Port of the Server
PublicKey = 
Endpoint = :51190
AllowedIPs = 0.0.0.0/0, ::/0

Введите адрес подсети для клиента. Как описано ранее, 10.20.43.2 в этом примере мы используем для клиента.

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

В разделе «Peer» мы добавляем информацию о VPN-сервере Wireguard, к которому мы хотим подключиться.

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

Разрешенные IP-адреса следует вводить в том виде, в каком они заданы (0.0.0.0/0), чтобы любой запрос на динамический общедоступный IP-адрес, используемый клиентом, всегда перенаправлялся на сервер VPN.

Сохраните и выйдите из файла. При использовании vim нажмите Esc , затем введите :wqи нажмите Enter, чтобы сохранить и выйти.

Включите клиентскую службу для запуска при каждой загрузке и запустите ее.

systemctl enable [email protected]
service [email protected] start

Убедитесь , что служба запущена.

service [email protected] status

Как настроить сервер и клиент WireGuard VPN в Ubuntu 20.04

Добавление пира к серверу

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

Вернитесь на сервер. Сначала остановите службу VPN .

service [email protected] stop

Затем откройте файл конфигурации, чтобы добавить конфигурацию для однорангового узла (клиента).

vim /etc/wireguard/wg0.conf

Добавьте в файл следующие строки.

[Peer]
PublicKey = 
AllowedIPs = 10.20.43.2/32

Теперь снова запустите службу VPN .

service [email protected] start

Вот и все! Это вся конфигурация, необходимая для настройки клиента и сервера Wireguard VPN. Давайте теперь протестируем наш VPN.

Тестирование VPN

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

ping 10.20.43.1

Как настроить сервер и клиент WireGuard VPN в Ubuntu 20.04

Затем откройте веб-браузер и откройте любой веб-сайт, чтобы проверить, можете ли вы подключиться к Интернету с клиентского компьютера. Вы также можете проверить подключение к Интернету из командной строки, используя wget.

wget 

Как настроить сервер и клиент WireGuard VPN в Ubuntu 20.04

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

Для этого нам просто нужно проверить IP-адрес клиента, видимый в Интернете. Один из способов сделать это - зайти на сайт whatsmyip.org . Или же из командной строки мы можем запросить другую аналогичную службу, называемую IP-информацией, с помощью Curl.

Выполните на клиентском компьютере следующее

curl https://ipinfo.io/ip

Как настроить сервер и клиент WireGuard VPN в Ubuntu 20.04

да. Это общедоступный IP-адрес Linode, на котором размещен VPN-сервер. Вот как достигается анонимность с помощью VPN, поскольку теперь во всем Интернете виден IP-адрес VPN-сервера, а не вашего компьютера.

Заключение

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

Тем не менее Wireguard - отличный выбор, если вам нужен собственный VPN для безопасной связи через Интернет. Чтобы узнать больше о Wireguard, протоколах и технологиях, которые он использует, вы можете посетить официальный сайт .


Как включить SSH в Ubuntu 20.04

Как включить SSH в Ubuntu 20.04

Безопасный доступ к вашей машине Ubuntu из любого места

Как настроить сервер и клиент WireGuard VPN в Ubuntu 20.04

Как настроить сервер и клиент WireGuard VPN в Ubuntu 20.04

Настройте собственный VPN с помощью Wireguard

Как установить Git на Ubuntu 20.04 LTS

Как установить Git на Ubuntu 20.04 LTS

Одна из первых вещей, которые вы должны установить на свой Linux-компьютер

Как использовать команду SCP в Linux

Как использовать команду SCP в Linux

Простое руководство, которое поможет вам перенести файлы в удаленную систему из вашей системы Linux с помощью команды scp.

Как создать пользователя Sudo в Ubuntu 20.04 LTS

Как создать пользователя Sudo в Ubuntu 20.04 LTS

Предоставьте root-права любому пользователю с sudo в Ubuntu 20.04 LTS

Как добавить ключи SSH в Ubuntu 20.04

Как добавить ключи SSH в Ubuntu 20.04

В этой статье объясняется процесс добавления аутентификации ключей SSH на сервер Ubuntu 20.04 и отключения аутентификации на основе пароля.

Как запустить тесты скорости из командной строки Linux с помощью Speedtest-cli

Как запустить тесты скорости из командной строки Linux с помощью Speedtest-cli

Speedtest.net - это сервис для проверки скорости вашего интернет-соединения. Он использует ближайший сервер speedtest.net для загрузки

Лучший бесплатный видеоредактор для Ubuntu в 2020 году

Лучший бесплатный видеоредактор для Ubuntu в 2020 году

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

7 лучших приложений для динамических обоев Ubuntu

7 лучших приложений для динамических обоев Ubuntu

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

Как установить TensorFlow на CentOS

Как установить TensorFlow на CentOS

Установите TensorFlow с помощью Python (pip) или контейнера Docker