Настройка VPN Centos 7 на wireguard

Обновлено: 01.07.2024

Установите VPN-сервер WireGuard на CentOS 7, клиент на Linux и Windows

WireGuard — это бесплатная альтернатива OpenVPN с отличным шифрованием, скоростью и простотой. Эта легкая, безопасная и кроссплатформенная VPN использует передовые технологии шифрования, а также поддерживает операционные системы Windows, Linux, MacOS, BSD, Android и iOS.

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

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

В этой статье мы покажем вам, как настроить собственный VPN-сервер под управлением CentOS 7, а затем настроить клиент WireGuard на локальном компьютере, на котором может работать CentOS 7, Windows, Ubuntu 18.04 или Debian 9.< /p>

Содержание

Как настроить сервер WireGuard в CentOS 7

Предпосылки

  • CentOS 7, работающая на облачной виртуальной машине (поскольку вам потребуется статический IP-адрес)
  • Учетная запись с правами sudo
  • Если вы предпочитаете использовать root, команды sudo все равно будут работать. Либо просто не используйте префикс sudo при копировании и вставке всех команд.

Шаг 1. Установите WireGuard

Обновите систему

Затем перезагрузите сервер CentOS

Настройте репозиторий EPEL

На этом шаге будет установлен пакет WireGuard-tools из репозитория EPEL. Это предоставляет исполняемые файлы wg, которые управляют сервером WireGuard.

Введите y при появлении запроса и продолжайте

Введите y, когда будет предложено дважды

Теперь вы можете установить WireGuard VPN на свой сервер CentOS 7.

Введите y в двух запросах, чтобы установить пакеты

Успешная установка вернет следующий вывод

Шаг 2. Генерация ключей сервера: CentOS 7

Теперь мы создадим пары ключей для сервера.

Создайте каталог для WireGuard на сервере.

Система сохранит пару открытого и закрытого ключей в этом каталоге.

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

Отобразится открытый ключ сервера, как показано ниже.

Шаг 3. Настройте интерфейс сервера: CentOS 7

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

На этом шаге вы укажете IP-подсеть для сети VPN. В этой статье мы будем использовать 10.10.0.1/24. При выборе подсети убедитесь, что она отличается от офисной или домашней сети, чтобы избежать конфликтов.

Найти сетевую карту

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

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

В приведенном ниже примере общедоступный IP-адрес — 160.119.248.10, и он назначен ens3 (это ваша сетевая карта, которую вам нужно будет добавить в файл конфигурации ниже)

Найти закрытый ключ сервера

Затем выполните следующую команду cat, чтобы отобразить ваш server_private.key

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

Установить Vim

Теперь мы будем использовать текстовый редактор Vim для создания файла конфигурации. Если он еще не установлен на вашем сервере, запустите эту команду на своем сервере.

Создать файл конфигурации на сервере

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

Чтобы вставить/отредактировать текст в Vim, нажмите I, чтобы войти в режим --INSERT--. Наконец, добавьте приведенный ниже текст конфигурации.

ПРИМЕЧАНИЕ:

  1. Замените здесь свой server_private.key своим собственным server_private.key ,
  2. замените 10.10.0.1/24 на желаемую IP-подсеть,
  3. замените все экземпляры ens3 своим общедоступным сетевым адаптером, который вы нашли выше,

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

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

 Текст файла конфигурации WireGuard wg0 в редакторе Vim

Нажмите Esc, чтобы выйти из режима INSERT, затем нажмите Shift + ZZ, чтобы сохранить изменения и выйти.

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

Настроить правила брандмауэра

Вариант 1. Если у вас есть существующие правила iptable, выполните следующее: (Если вы используете firewalld, вместо этого используйте вариант 2 ниже)

Вариант 2. Если вместо этого вы используете firewalld или у вас нет существующих правил iptable, выполните следующие команды.

Проверить файл модуля

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

Используйте следующую команду с портом 51820, указанным на скриншоте файла конфигурации выше, вставленным в поле ListenPort как таковой:

Для работы NAT мы включим переадресацию как для IP4, так и для IP6 в файле /etc/sysctl.d/99-sysctl.conf. Выполнить:

интерфейс wg0

Теперь мы готовы запустить интерфейс wg0. Для этого используйте команду wg-quick следующим образом

Теперь вы можете использовать команду wg для просмотра активных интерфейсов и подключенных пиров.

Поскольку мы не настроили клиент, результат должен быть таким, как показано ниже.

Это показывает, что вы успешно настроили интерфейс сервера.

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

Настройте VPN-клиент WireGuard: CentOS 7

Для большинства операционных систем процесс установки WireGuard одинаков как для сервера, так и для клиента. Отличие только в конфигурационном файле. В этой статье мы узнаем, как настроить клиент в CentOS 7, Windows, Ubuntu 18.04 и Debian 9.

Мы начнем с установки WireGuard на ваш клиентский компьютер (это может быть ваш ПК, другой сервер и т. д.), после чего мы сгенерируем пару ключей для клиента и, наконец, выполним настройку.

Шаг 1. Установите WireGuard на клиентский компьютер

Выполните следующие команды и введите y при появлении запроса и дождитесь завершения установки!

Шаг 2. Генерация ключей клиента: CentOS 7

Создайте каталог WireGuard.

Если вы работаете от имени пользователя sudo, у вас может не быть доступа к каталогу WireGuard.

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

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

Это сгенерирует ключи, сохранит их в каталоге WireGuard и вернет открытый ключ вашего клиента:

Для просмотра ключей можно использовать команду cat.

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

Временно скопируйте и вставьте оба этих ключа в безопасное место за пределами вашего терминала. Они понадобятся вам снова ниже. (Не забудьте удалить его после добавления)

Шаг 3. Настройте клиентский интерфейс: CentOS 7

На этом шаге мы создадим файл конфигурации /etc/wireguard/wg0.conf на клиентском устройстве. Обратите внимание, что имя файла и его расположение такие же, как и на сервере, и единственная разница заключается в содержимом.

Вам нужно будет заменить текстовые поля PrivateKey , PublicKey и Endpoint собственными значениями.

Найти открытый ключ сервера

PublicKey — это server_public.key на VPN-сервере. Получите его с помощью команды cat из любого места на сервере, указав полный путь к файлу:

Или запустите команду из каталога WireGuard на сервере

Установите Vim на клиентском компьютере

Теперь мы будем использовать текстовый редактор Vim для создания файла конфигурации. Если он еще не установлен на вашем клиентском компьютере, выполните следующую команду:

Создать файл конфигурации на клиентской машине

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

Чтобы вставить/отредактировать текст в Vim, нажмите I, чтобы войти в режим --INSERT--. Теперь добавьте текст конфигурации ниже.

ПРИМЕЧАНИЕ:

  1. Адрес = 10.10.0.2/24 должен находиться в той же IP-подсети, что и ваш сервер, но IP-адрес не может быть точно таким же. Например: увеличьте последнюю цифру перед префиксом /24 на 1. Мы увеличили нашу цифру с 1 до 2 .
  2. Замените ваш client_private.key здесь своим client_private.key ,
  1. Замените здесь свой server_public.key своим собственным server_public.key ,
  2. Конечная точка: замените общедоступный IP-адрес вашего сервера на свой собственный

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

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

 Текст файла конфигурации клиента wireguard в Vim

Нажмите Esc, чтобы выйти из режима INSERT, затем нажмите Shift + ZZ, чтобы сохранить изменения и выйти.

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

Шаг 4. Добавьте одноранговый клиент к серверу

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

Для этого перейдите на сервер и перейдите в каталог WireGuard

Теперь запустите приведенную ниже команду, вставив свой собственный client_public.key. В качестве примера это будет выглядеть так:

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

вывод команды wg на VPN-сервере WireGuard

Это показывает, что мы успешно добавили узел.

Проверить соединения

Теперь мы запустим интерфейс на клиенте с помощью команды wg-quick.

Примечание. Прежде чем запускать интерфейс, обратите внимание, что если ваш клиентский компьютер также является сервером, включение интерфейса wg0 приведет к потере доступа SSH к вашему клиентскому компьютеру. Чтобы убедиться, что ваша команда выполнена, выполните следующее:

Дважды нажмите пробел, теперь вы должны находиться в каталоге /home/

Теперь запустите интерфейс на клиентской машине

Это даст следующий результат;

Когда и серверный, и клиентский интерфейсы включены, вы можете проверить статус с помощью команды wg.

На сервере

 Статус интерфейса сервера WireGuard

На клиентском компьютере

Примечание. Если ваш клиентский компьютер также является сервером, вы потеряли доступ по SSH, и теперь вам потребуется SSH с вашего сервера на клиентский компьютер через IP-адрес, который вы назначили ему в файле конфигурации выше. Мы присвоили нашей клиентской машине IP 10.10.0.2. Итак, теперь мы должны

 состояние интерфейса клиентского компьютера wireguard

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

Обратите внимание, что вы можете включать и выключать интерфейсы с помощью

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

Примечание: если ваш клиентский компьютер также является сервером, и теперь вам нужно подключиться к нему по SSH, используя IP-адрес конфигурации через ваш сервер, дважды используйте команду выхода, чтобы выйти из сеанса экрана клиентского компьютера, и клиентский компьютер, чтобы вернуться на ваш сервер. терминал.

В этом руководстве показано, как настроить собственный VPN-сервер WireGuard на CentOS. WireGuard создан специально для ядра Linux. Он работает внутри ядра Linux и позволяет создавать быстрый, современный и безопасный VPN-туннель. TL;DR

В этом руководстве предполагается, что VPN-сервер и VPN-клиент работают под управлением операционной системы CentOS.

Шаг 1. Установите WireGuard на сервер CentOS и рабочий стол

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

Затем используйте те же команды для установки WireGuard на локальный компьютер с CentOS (клиент VPN).

Шаг 2. Создайте пару открытого/закрытого ключей

Шаг 3. Создайте файл конфигурации WireGuard

Вставить в это содержимое:

Защитите файл следующим образом:

Вставить в это содержимое:

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

Шаг 4. Включите IP-переадресацию на сервере

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

Шаг 5. Настройте маскировку IP-адресов на сервере

Выполните следующую команду, чтобы включить маскировку IP-адресов в брандмауэре сервера.

Это скроет вашу сеть VPN от внешнего мира. Таким образом, Интернет может видеть только IP-адрес вашего VPN-сервера, но не может видеть IP-адрес вашего VPN-клиента, точно так же, как ваш домашний маршрутизатор скрывает вашу частную домашнюю сеть.

Шаг 6. Установите DNS-преобразователь на сервер

Поскольку мы указываем VPN-сервер в качестве DNS-сервера для клиента, нам нужно запустить преобразователь DNS на VPN-сервере. Мы можем установить DNS-сервер bind9.

Отредактируйте основной файл конфигурации BIND /etc/named.conf.

В предложении options вы можете найти следующие две строки.

Это заставляет named прослушивать только локальный хост. Если вы хотите разрешить клиентам в той же сети запрашивать имена доменов, закомментируйте эти две строки. (добавьте двойную косую черту в начале каждой строки)

Найдите следующую строку.

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

Сохраните и закройте файл. Перезапустите BIND9, чтобы изменения вступили в силу.

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

Шаг 7. Откройте порт WireGuard в брандмауэре

Выполните следующую команду, чтобы открыть UDP-порт 51820 на сервере.

Шаг 8. Запустите WireGuard

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

Вы также можете использовать службу systemd для запуска WireGuard.

Если запуск не удался, проверьте журнал, чтобы выяснить, что не так.

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

Теперь сервер WireGuard готов принимать клиентские подключения.

Включить автозапуск при загрузке системы.

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

Затем отредактируйте файл конфигурации клиента.

Например, если вы добавите следующие 3 строки в раздел [interface], то WireGuard создаст таблицу маршрутизации с именем «1234» и добавит правило ip в таблицу маршрутизации. В этом примере трафик будет направляться через VPN-сервер только в том случае, если в качестве протокола транспортного уровня используется TCP, а порт назначения — 25, т. е. когда клиентский компьютер отправляет электронные письма.

Сохраните и закройте файл. Затем снова запустите клиент WireGuard.

Выключатель VPN

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

Отредактируйте файл конфигурации клиента.

Добавьте следующие две строки в раздел [interface].

Сохраните и закройте файл. Затем запустите клиент WireGuard.

Вот и все. Приятного общения!

riccardo1991 прокомментировал 28 сентября 2021 г.

Небольшое замечание, из-за которого я зря потратил время.

Перед шагом 5: если по какой-то причине вам необходимо установить firewalld, потому что он отсутствует в вашей системе, и в настоящее время вы подключаетесь через ssh к другому порту, а не к 22, обязательно вернитесь к порту 22 в /etc/ssh/ sshd_config.
По умолчанию ssh включен в качестве службы на firewalld, но это просто "обертка" для стандартного порта 22. Поэтому активация firewalld без переключения обратно на стандартный порт заблокирует вас.

Вы не можете выполнить это действие в данный момент.

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

WireGuard — это приложение, которое может обеспечить безопасную виртуальную частную сеть (VPN), оно простое в использовании и настройке. Он использует надежные криптографические протоколы и алгоритмы для шифрования данных. Разработанный исключительно для ядра Linux, он может быть развернут на Windows, macOS, FreeBSD, iOS и Android.

В нашем случае мы будем использовать CentOS 8.3 для установки WireGuard.

Установка клиента WireGuard в CentOS

Установка клиента аналогична установке сервера. Войдите на свой сервер Linux, после входа добавьте репозитории EPEL и Elrepo для установки модулей ядра и инструментов WireGuard.

sudo dnf установить epel-release elrepo-release -y

Теперь давайте установим WireGuard из репозитория epel:

sudo dnf установить kmod-wireguard wireguard-tools

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

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

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

wg генкей | тройник private.key | wg pubkey > public.key

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

sudo nano /etc/wireguard/wg0.conf

В типе файла:

[Интерфейс]
PrivateKey =
Address = 10.0.0.1/24
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -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
ListenPort = 51820
[Peer]
PublicKey =
AllowedIPs = 10.0.0.2/32

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

Запуск WireGuard

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

sudo wg-quick up wg0


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


< /p>

Во-первых, мы удостоверимся, что все обновлено (это может занять некоторое время):

Если этого не делать, Wireguard можно установить с помощью следующих двух команд:

Настройка Wireguard

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

Перейдите в каталог wireguard:

Сгенерируйте ключи с помощью wg genkey , затем используйте команду tee, чтобы передать сгенерированный закрытый ключ команде wg pubkey, чтобы она сгенерировала соответствующий открытый ключ и сохранила его с именем publickey .

Теперь у вас должно быть 2 файла в папке с именами privatekey и publickey .


< /p>

Следующий шаг — создать файл конфигурации для Wireguard. Для этого откройте его в предпочитаемом вами текстовом редакторе:

Если вы хотите использовать nano, установите его с помощью:

Затем создайте и откройте файл с именем wg0 с помощью следующей команды:

Затем вы можете скопировать и вставить приведенные ниже конфигурации. В Nano вы можете использовать правый клик для вставки и Ctrl+X, а затем y для сохранения и закрытия. Обратите внимание на некоторые необходимые изменения:

  • YOUR_INTERFACE_NAME должно быть именем интернет-интерфейса, который имеет доступ к Интернету на сервере. Для проверки используйте команду:
    • IP-адрес

    Вы будете использовать интерфейс с вашим общедоступным IP-адресом. В данном случае это будет «eth0».

    • YOUR_PRIVATE_KEY должен быть текстом в файле закрытого ключа, который мы создали ранее. Чтобы скопировать его, вы можете использовать приватный ключ cat и скопировать текст.
    • CLIENT_PUBLIC_KEY — это открытый ключ CLIENT. Это еще не сгенерировано, но мы поговорим об этом в следующем разделе. Пока оставьте это поле пустым.

    Это должно выглядеть примерно так:


    < /p>

    Теперь вы можете выйти из режима sudo:

    Убедитесь, что брандмауэр не блокирует порт vps, это откроет порт 51820, который мы настроили ранее в файле wg0.conf для приема UDP-пакетов:

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

    Также убедитесь, что включена переадресация IPv4 и IPv6. Для этого запустите:

    и добавьте следующие строки:

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

    Чтобы настроить клиент, нам придется повторить некоторые шаги, сделанные для сервера:

    Сначала установите Wireguard. Если клиент является машиной CentOS, выполните те же команды, что и выше. Мы будем использовать в качестве примера компьютер с Windows 10 в качестве клиента. Вы можете найти список установочных файлов на официальной странице установки на сайте Wireguard, в том числе и для Windows.

    Тогда клиент также должен будет иметь пару закрытый-открытый ключ. Либо сгенерируйте его, как раньше, либо, если вы используете такую ​​платформу, как Windows, клиент Wireguard сгенерирует их автоматически. В нашем случае использовался windows-клиент, а ключи генерируются автоматически:

    В приложении внизу нажмите стрелку Добавить туннель и выберите «Добавить пустой туннель». Дайте ему имя.

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

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

    • CLIENT_PRIVATE_KEY – закрытый ключ, сгенерированный для клиента.
    • SERVER_PUBLIC_KEY — это открытый ключ, который был сгенерирован ранее на сервере, его необходимо скопировать в этот файл.
    • SERVER_IP — общедоступный сетевой IP-адрес вашего сервера. Вы можете проверить это, выполнив команду вроде ifconfig в Linux или ipconfig в Windows.

    Завершение настройки сервера

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

    Скопируйте открытый ключ клиента и используйте его для замены CLIENT_PUBLIC_KEY в файле сервера /etc/wireguard/wg0.conf.

    Включите WireGuard VPN:

    Если это не работает, сначала перезагрузите компьютер, а затем повторите попытку:

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

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

    Это сбросит сервер с новыми настройками.

    Наконец, убедитесь, что на вашем VPS открыт порт 51820 для соединений UDP.

    Вы можете проверить, все ли работает, выполнив поиск в Google по запросу «какой мой IP-адрес» и проверив, соответствует ли он общедоступному IP-адресу VPN-сервера.

    Заключение

    И это все! Вы успешно настроили Wireguard VPS на своем компьютере с CentOS 7!

    Надеемся, что это руководство было полезным. Вы можете ознакомиться с другими нашими руководствами, чтобы узнать больше о Linux!

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