Как создать Point-To-Point VPN с помощью WireGuard в Ubuntu 18.04
WireGuard - это современная высокопроизводительная VPN, разработанная для простоты использования и обеспечения надежной безопасности. WireGuard фокусируется только на обеспечении безопасного соединения между сторонами через сетевой интерфейс, зашифрованный с помощью аутентификации с открытым ключом. Это означает, что, в отличие от большинства VPN, топология не применяется, поэтому различные конфигурации могут быть достигнуты путем манипулирования окружающей сетевой конфигурацией. Эта модель предлагает большую мощность и гибкость, которую можно применять в соответствии с вашими индивидуальными потребностями.
Одна из самых простых топологий, которую может использовать WireGuard, - это соединение «точка-точка». Это устанавливает безопасную связь между двумя машинами без посредничества центрального сервера. Этот тип соединения может также использоваться между более чем двумя участниками для создания топологии ячеистой VPN, где каждый отдельный сервер может напрямую общаться со своими одноранговыми узлами. Поскольку каждый хост находится в равных условиях, эти две топологии лучше всего подходят для создания безопасного обмена сообщениями между серверами, а не для использования одного сервера в качестве шлюза для маршрутизации трафика.
В этом руководстве мы продемонстрируем, как установить VPN-соединение типа «точка-точка» с WireGuard, используя два сервера Ubuntu 18.04. Мы начнем с установки программного обеспечения, а затем сгенерируем пары криптографических ключей для каждого хоста. После этого мы создадим короткий файл конфигурации, чтобы определить информацию о подключении партнера. Как только мы запустим интерфейс, мы сможем отправлять защищенные сообщения между серверами через интерфейс WireGuard.
Сначала добавьте в систему WireGuard PPA, чтобы настроить доступ к пакетам проекта:
Мы также настроены
Примечание. Если этот параметр
Затем добавьте уникальное
Мы дадим нашему первому серверу адрес 10.0.0.1, который обозначен как 10.0.0.1/24 в нотации CIDR:
Одна из самых простых топологий, которую может использовать WireGuard, - это соединение «точка-точка». Это устанавливает безопасную связь между двумя машинами без посредничества центрального сервера. Этот тип соединения может также использоваться между более чем двумя участниками для создания топологии ячеистой VPN, где каждый отдельный сервер может напрямую общаться со своими одноранговыми узлами. Поскольку каждый хост находится в равных условиях, эти две топологии лучше всего подходят для создания безопасного обмена сообщениями между серверами, а не для использования одного сервера в качестве шлюза для маршрутизации трафика.
В этом руководстве мы продемонстрируем, как установить VPN-соединение типа «точка-точка» с WireGuard, используя два сервера Ubuntu 18.04. Мы начнем с установки программного обеспечения, а затем сгенерируем пары криптографических ключей для каждого хоста. После этого мы создадим короткий файл конфигурации, чтобы определить информацию о подключении партнера. Как только мы запустим интерфейс, мы сможем отправлять защищенные сообщения между серверами через интерфейс WireGuard.
Предпосылки
Чтобы следовать этому руководству, вам потребуется доступ к двум серверам Ubuntu 18.04. На каждом сервере вам нужно будет создать пользователя безsudo
полномочий root с правами для выполнения административных действий. Вам также понадобится базовый брандмауэр, настроенный в каждой системе. Когда вы будете готовы продолжить, войдите на каждый сервер со своим sudo
пользователем.Установка программного обеспечения
Проект WireGuard предоставляет PPA современные пакеты для систем Ubuntu. Нам нужно будет установить WireGuard на оба наших сервера, прежде чем мы сможем продолжить. На каждом сервере выполните следующие действия.Сначала добавьте в систему WireGuard PPA, чтобы настроить доступ к пакетам проекта:
sudo add-apt-repository ppa:wireguard/wireguard
Нажмите ENTER, когда будет предложено добавить новый источник пакета в вашу apt
конфигурацию. После добавления PPA обновите локальный индекс пакета, чтобы получить информацию о новых доступных пакетах, а затем установите модуль ядра WireGuard и компоненты пользовательского пространства:
sudo apt-get updatesudo apt-get install wireguard-dkms wireguard-tools
Далее мы можем начать настройку WireGuard на каждом из наших серверов. Создание приватного ключа
Каждый участник WireGuard VPN аутентифицируется для своих партнеров, используя криптографию с открытыми ключами. Соединения между новыми партнерами могут быть установлены путем обмена открытыми ключами и выполнения минимальной конфигурации. Чтобы сгенерировать закрытый ключ и записать его непосредственно в файл конфигурации WireGuard, введите на каждом сервере следующее :(umask 077 && printf "[Interface]\nPrivateKey = " | sudo tee /etc/wireguard/wg0.conf > /dev/null)wg genkey | sudo tee -a /etc/wireguard/wg0.conf | wg pubkey | sudo tee /etc/wireguard/publickey Первая команда записывает начальное содержимое файла конфигурации в /etc/wireguard/wg0.conf . umask Значение в суб-оболочки , так что мы создаем файл с ограниченными разрешениями , не затрагивая нашу регулярную среду. Вторая команда генерирует закрытый ключ с помощью команды WireGuard wg и записывает его непосредственно в наш ограниченный файл конфигурации. Мы также передаем ключ обратно в wg pubkey команду, чтобы получить связанный открытый ключ, который мы записываем в файл, который вызывается /etc/wireguard/publickey для удобства. Нам нужно будет обменяться ключом в этом файле со вторым сервером при определении нашей конфигурации.
Создание файла начальной конфигурации
Далее мы откроем файл конфигурации в редакторе, чтобы настроить несколько других деталей:
sudo nano /etc/wireguard/wg0.conf
Внутри вы должны увидеть ваш сгенерированный закрытый ключ, определенный в разделе с именем [Interface]
. Этот раздел содержит конфигурацию для локальной стороны соединения.
Настройка раздела интерфейса
Нам нужно определить IP-адрес VPN, который будет использовать этот узел, и порт, который он будет прослушивать для соединений от пиров. Начните с добавления ListenPort
и SaveConfig
строк, чтобы ваш файл выглядел так:
/etc/wireguard/wg0.conf
[Interface]PrivateKey = generated_private_keyListenPort = 5555SaveConfig = true
Это устанавливает порт, который прослушивает WireGuard. Это может быть любой свободный, привязываемый порт, но в этом руководстве мы настроим наш VPN на порт 5555 для обоих серверов. Установите ListenPort
на каждом хосте порт, который вы выбрали:Мы также настроены
SaveConfig
на true
. Это скажет wg-quick
службе автоматически сохранять свою активную конфигурацию в этот файл при завершении работы.Примечание. Если этот параметр
SaveConfig
включен, wg-quick
служба перезаписывает содержимое /etc/wireguard/wg0.conf
файла при каждом завершении работы службы. Если вам нужно изменить конфигурацию WireGuard, либо отключите wg-quick
службу перед редактированием /etc/wireguard/wg0.conf
файла, либо внесите изменения в работающую службу с помощью wg
команды (они будут сохранены в файле при завершении работы службы). Любые изменения, внесенные в файл конфигурации во время работы службы, будут перезаписаны при wg-quick
сохранении активной конфигурации.Затем добавьте уникальное
Address
определение для каждого сервера, чтобы wg-quick
служба могла задавать информацию о сети при запуске интерфейса WireGuard. Мы будем использовать подсеть 10.0.0.0/24 в качестве адресного пространства для нашего VPN. Для каждого компьютера вам нужно будет выбрать уникальный адрес в этом диапазоне (от 10.0.0.1 до 10.0.0.254) и указать адрес и подсеть, используя нотацию CIDR .Мы дадим нашему первому серверу адрес 10.0.0.1, который обозначен как 10.0.0.1/24 в нотации CIDR:
/etc/wireguard/wg0.conf на первом сервере
[Interface]
PrivateKey = generated_private_key
ListenPort = 5555
SaveConfig = true
Address = 10.0.0.1/24
На нашем втором сервере мы определим адрес как 10.0.0.2, что даст нам представление CIDR 10.0.0.2/24:
/etc/wireguard/wg0.conf на втором сервере
[Interface]
PrivateKey = generated_private_key
ListenPort = 5555
SaveConfig = true
Address = 10.0.0.2/24
Это конец [Interface]
раздела.
Мы можем ввести информацию об одноранговых узлах сервера либо в файле конфигурации, либо вручную, используя wg
команду позже. Как упомянуто выше, wg-quick
служба с SaveConfig
параметром, установленным в, true
будет означать, что информация о партнере будет в конечном итоге записана в файл любым из методов.
Чтобы продемонстрировать оба способа определения идентификаторов пиров, мы создадим [Peer]
раздел в файле конфигурации второго сервера, но не первый. Теперь вы можете сохранить и закрыть файл конфигурации для первого сервера (тот, который определяет адрес 10.0.0.1).
Определение одноранговой секции
В файле конфигурации, который все еще открыт, создайте раздел под названием [Peer]
«Записи в [Interface]
разделе».
Начните с установки PublicKey
значения открытого ключа первого сервера. Вы можете найти это значение, набрав cat /etc/wireguard/publickey
на противоположном сервере. Мы также установим AllowedIPs
IP-адреса, действительные внутри туннеля. Поскольку мы знаем конкретный IP-адрес, который использует первый сервер, мы можем ввести его напрямую, заканчивая /32
указанием диапазона, который содержит одно значение IP:
/etc/wireguard/wg0.conf на втором сервере
[Interface]
. . .
[Peer]
PublicKey = public_key_of_first_server
AllowedIPs = 10.0.0.1/32
Наконец, мы можем установить Endpoint
публичный IP-адрес первого сервера и прослушивающий порт WireGuard (в этом примере мы использовали порт 5555). WireGuard обновит это значение, если он получит законный трафик от этого однорангового узла на другой адрес, позволяя VPN адаптироваться к условиям роуминга. Мы устанавливаем начальное значение, чтобы этот сервер мог инициировать контакт:
/etc/wireguard/wg0.conf на втором сервере
[Interface]
. . .
[Peer]
PublicKey = public_key_of_first_server
AllowedIPs = 10.0.0.1/32
Endpoint = public_IP_of_first_server:5555
Когда вы закончите, сохраните и закройте файл, чтобы вернуться в командную строку.
Запуск VPN и подключение к пирам
Теперь мы готовы запустить WireGuard на каждом сервере и настроить соединение между нашими партнерами.
Открытие брандмауэра и запуск VPN
Сначала откройте порт WireGuard в брандмауэре на каждом сервере:
sudo ufw allow 5555 Теперь запустите wg-quick сервис, используя wg0 файл интерфейса, который мы определили:
sudo systemctl start wg-quick@wg0
Это запустит wg0
сетевой интерфейс на машине. Мы можем подтвердить это, набрав: ip addr show wg0
Output on first server 6: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1 link/none inet 10.0.0.1/24 scope global wg0 valid_lft forever preferred_lft forever Мы можем использовать wg инструмент для просмотра информации об активной конфигурации VPN:
sudo wg На сервере без однорангового определения дисплей будет выглядеть примерно так:
Output on first server interface: wg0 public key: public_key_of_this_server private key: (hidden) listening port: 5555 На сервере с уже определенной конфигурацией однорангового узла выходные данные также будут содержать эту информацию:
Output on second server
interface: wg0 public key: public_key_of_this_server private key: (hidden) listening port: 5555 peer: public_key_of_first_server endpoint: public_IP_of_first_server:5555 allowed ips: 10.0.0.1/32 Чтобы завершить соединение, теперь нам нужно добавить информацию об пиринге второго сервера на первый сервер с помощью wg команды.
Добавление информации о пропавшем узле в командной строке
На первом сервере(тот, который не отображает информацию об одноранговой сети) введите информацию об одноранговой сети вручную, используя следующий формат. Открытый ключ второго сервера можно найти в выходных данных sudo wg второго сервера:
sudo wg set wg0 peer public_key_of_second_server endpoint public_IP_of_second_server:5555 allowed-ips 10.0.0.2/32
Вы можете подтвердить, что информация теперь находится в активной конфигурации, набрав еще sudo wg
раз на первом сервере:
sudo wg
Output on first server interface: wg0 public key: public_key_of_this_server private key: (hidden) listening port: 5555 peer: public_key_of_second_server endpoint: public_IP_of_second_server:5555 allowed ips: 10.0.0.2/32 Наше соединение точка-точка теперь должно быть доступно. Попробуйте пропинговать VPN-адрес второго сервера с первого:
ping -c 3 10.0.0.2
Output on first server PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data. 64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=0.635 ms 64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=0.615 ms 64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=0.841 ms --- 10.0.0.2 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 1998ms rtt min/avg/max/mdev = 0.615/0.697/0.841/0.102 ms Если все работает правильно, вы можете сохранить конфигурацию на первом сервере обратно в /etc/wireguard/wg0.conf файл, перезапустив службу:
sudo systemctl restart wg-quick@wg0 Если вы хотите запустить туннель при загрузке, вы можете включить службу на каждой машине, набрав: sudo systemctl enable wg-quick@wg0
Теперь VPN-туннель должен автоматически запускаться при загрузке машины.
Комментариев 0