Как настроить WireGuard VPN на CentOS 8

Установить WireGuard на CentOS 8

WireGuard — это простая и современная VPN (виртуальная частная сеть) с передовой криптографией. Она быстрее, проще в настройке и производительнее других аналогичных решений, таких как IPsec и OpenVPN .

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

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

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

Предпосылки

Вам понадобится сервер CentOS 8, к которому вы можете получить доступ как пользователь root или как учетная запись с привилегиями sudo .

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

Начнём с установки WireGuard на машину с CentOS и настройки его в качестве сервера. Также мы настроим систему для маршрутизации клиентского трафика через него.

Установка WireGuard на CentOS 8

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

 sudo dnf install epel-release elrepo-release

После этого установите пакеты WireGuard:

 sudo dnf install kmod-wireguard wireguard-tools

Вам может быть предложено импортировать ключи GPG репозиториев. Введите y при появлении запроса.

Настройка WireGuard

Пакет wireguard-tools включает два инструмента командной строки с именами wg и wg-quick , которые позволяют настраивать и управлять интерфейсами WireGuard.

Конфигурацию VPN-сервера мы сохраним в каталоге /etc/wireguard . В CentOS этот каталог не создаётся во время установки. Выполните следующую команду, чтобы создать его :

 sudo mkdir /etc/wireguard

Сгенерируйте открытый и закрытый ключи в каталоге /etc/wireguard .

 wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey

Вы можете просмотреть файлы с помощью cat или less . Закрытый ключ ни в коем случае не следует передавать кому-либо.

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

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

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

 sudo nano /etc/wireguard/wg0.conf

/etc/wireguard/wg0.conf

 [Interface] Address = 10.0.0.1/24 SaveConfig = true ListenPort = 51820 PrivateKey = SERVER_PRIVATE_KEY PostUp = firewall-cmd --zone=public --add-port 51820/udp && firewall-cmd --zone=public --add-masquerade PostDown = firewall-cmd --zone=public --remove-port 51820/udp && firewall-cmd --zone=public --remove-masquerade

Интерфейс можно назвать как угодно, однако рекомендуется использовать что-то вроде 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 — команда или скрипт, выполняемый перед активацией интерфейса. В этом примере мы используем firewall-cmd для открытия порта WireGuard и включения маскарадинга. Это позволит трафику выходить за пределы сервера, предоставляя VPN-клиентам доступ в Интернет.

  • PostDown — команда или скрипт, выполняемый перед отключением интерфейса. Правила брандмауэра будут удалены после отключения интерфейса.

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

 sudo chmod 600 /etc/wireguard/{privatekey,wg0.conf}

После этого поднимите интерфейс 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

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

 sudo wg show wg0
 interface: wg0 public key: My3uqg8LL9S3XZBo8alclOjiNkp+T6GfxS+Xhn5a40I= private key: (hidden) listening port: 51820

Вы также можете использовать команду ip для проверки состояния интерфейса:

 ip a show wg0
 4: wg0:  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

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

 sudo systemctl enable wg-quick@wg0

Серверная сеть

Для работы NAT необходимо включить переадресацию IP-адресов. Создайте новый файл /etc/sysctl.d/99-custom.conf и добавьте в него следующую строку:

 sudo nano /etc/sysctl.d/99-custom.conf

/etc/sysctl.d/99-custom.conf

 net.ipv4.ip_forward = 1

Сохраните файл и примените изменения с помощью sysctl :

 sudo sysctl -p /etc/sysctl.d/99-custom.conf
 net.ipv4.ip_forward = 1

Вот и всё. CentOS-узел, который будет выступать в роли сервера, настроен.

Настройка клиентов 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 и добавьте в него следующее содержимое:

 sudo nano /etc/wireguard/wg0.conf

/etc/wireguard/wg0.conf

 [Interface] PrivateKey = CLIENT_PRIVATE_KEY Address = 10.0.0.2/24  [Peer] PublicKey = SERVER_PUBLIC_KEY Endpoint = SERVER_IP_ADDRESS:51820 AllowedIPs = 0.0.0.0/0

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

  • Адрес — список 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-адрес.

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

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

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

WireGuard Windows добавить туннель

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

WireGuard Windows Tunnel

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

 [Interface] PrivateKey = CLIENT_PRIVATE_KEY Address = 10.0.0.2/24  [Peer] PublicKey = SERVER_PUBLIC_KEY Endpoint = SERVER_IP_ADDRESS:51820 AllowedIPs = 0.0.0.0/0

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

В разделе «Пэры» добавьте следующие поля:

  • PublicKey — открытый ключ сервера CentOS (файл /etc/wireguard/publickey ).
  • Конечная точка — IP-адрес сервера CentOS, за которым следует двоеточие и порт 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

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

 sudo wg
 interface: wg0 public key: sZThYo/0oECwzUsIKTa6LYXLhk+Jb/nqK4kCCP2pyFg= private key: (hidden) listening port: 60351 fwmark: 0xca6c peer: My3uqg8LL9S3XZBo8alclOjiNkp+T6GfxS+Xhn5a40I= endpoint: XXX.XXX.XXX.XXX:51820 allowed ips: 0.0.0.0/0 latest handshake: 41 seconds ago transfer: 213.25 KiB received, 106.68 KiB sent

Вы также можете открыть браузер, ввести «какой у меня IP-адрес», и вы увидите IP-адрес вашего сервера CentOS.

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

 sudo wg-quick down wg0

Клиенты Windows

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

WireGuard Windows Connect Tunnel

Заключение

Мы показали вам, как установить WireGuard на компьютер с CentOS 8 и настроить его в качестве VPN-сервера. Такая настройка позволяет вам анонимно пользоваться интернетом, сохраняя конфиденциальность данных о вашем трафике.

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

безопасность vpn centos Не используете CentOS 8?
Выберите другую ОС:
дебиан 10 убунту 18.04 убунту 20.04

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *