Linux

Как настроить BIND9 в качестве вторичного DNS-сервера в Ubuntu/Debian

Как настроить виртуальные хосты Nginx в Ubuntu/Debian

Как настроить BIND9 в качестве основного DNS-сервера в Ubuntu/Debian

Как установить OpenVPN Server на Ubuntu/Debian

Настройка OpenVPN в Ubuntu/Debian

Как установить сертификат SSL на Nginx для Ubuntu/Debian

Как настроить DNS-сервер BIND9 в Ubuntu/Debian

Как настроить HTTP / 2 в Nginx на Ubuntu/Debian

VPN-сервер с OpenVPN и Stunnel

Настройка веб-сервера

Установка статического IP на сервере

Как из серого IP сделать белый IP?

Переносим Armbian на внешний HDD на Orange Pi PC (Plus)

Настройка Медиа в Majordomo. Orange Pi PC (Plus). Armbian

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

Перенос сайта

Настройка сервера (Rev1)

Установка ssh сервера на Ubuntu/Debian

Установка MajorDoMo на OrangePi

Установка MajorDoMo

Установка phpMyAdmin Ubuntu 20.04

Настройка системы умного дома на базе ESP8266

Установка MAJORDOMO Rev1

Установка сервера MQTT

Установка и настройка сервера на Ubuntu/Debian

Настройка Linux на Orange Pi

Монтирование разделов в Linux

Репозитории Linux

Установка и настройка Orange_CNC

Установка и настройка Armbian и DLNA на Orange Pi PC в картинках

Простой VPN с WireGuard

Nagios – современный и популярный инструмент для мониторинга компьютерных систем и сетей.

Перенос системы на EMMC

Настройки Linux

Удаленный рабочий стол RDP в Linux Armbian

Установка Аndroid OS на Orange Pi Plus

Установка локального сервера BLYNK на любой другой одноплатник с OC Armbian

Простой VPN с WireGuard

Каждое устройство, которое подключается к VPN, должно иметь возможность подключаться ко всем другим устройствам. Например, телефон должен иметь возможность подключаться к веб-серверу на ноутбуке, если оба устройства являются частью сети VPN. Если настройка получится достаточно простой, то можно подумать о подключении к VPN и десктопа (по Ethernet).

Учитывая, что проводные и беспроводные соединения со временем становятся всё менее безопасны (таргетированные атаки, атака KRACK по взлому WPA2 и атака Dragonblood против WPA3), я всерьёз рассматриваю возможность использования WireGuard для всех моих устройств, независимо от того, в какой среде они работают.

Установка программного обеспечения

WireGuard предоставляет предварительно скомпилированные пакеты для большинства дистрибутивов Linux, Windows и macOS. Приложения для Android и iOS поставляются через каталоги приложений.

Установливаем пакет wireguard-dkms

# sudo dnf copr enable jdoss/wireguard
# sudo dnf install wireguard-dkms wireguard-tools

пакет wireguard, устанавливаем его:

# sudo apt-get install wireguard

На телефоне Android я установил приложение WireGuard VPN из официального каталога Google App Store.

Установка ключей

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

# wg genkey | tee wg-laptop-private.key | wg pubkey > wg-laptop-public.key
# wg genkey | tee wg-server-private.key | wg pubkey > wg-server-public.key
# wg genkey | tee wg-mobile-private.key | wg pubkey > wg-mobile-public.key

  Это даёт нам три пары ключей (шесть файлов). Не будем ссылаться на файлы в конфигах, а скопируем сюда содержимое: каждый ключ — это одна строка в base64.

Создание файла конфигурации для VPN-сервера (Raspberry Pi)

Конфигурация довольно простая, я создал следующий файл /etc/wireguard/wg0.conf:

# sudo nano /etc/wireguard/wg0.conf

[Interface]
Address = 10.200.200.1/24
ListenPort = 51820
PrivateKey = <copy private key from wg-server-private.key>
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o wwan0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o wwan0 -j MASQUERADE

[Peer]
# laptop
PublicKey = <copy public key from wg-laptop-public.key>
AllowedIPs = 10.200.200.2/32

[Peer]
# mobile phone
PublicKey = <copy public key from wg-mobile-public.key>
AllowedIPs = 10.200.200.3/32

В соответствующие места нужно вставить строки из файлов с ключами
Моя сеть VPN использует внутренний диапазон 10.200.200.0/24
Для команд PostUp/PostDown у меня указан внешний сетевой интерфейс wwan0, у вас может быть другой (например, eth0)

Сеть VPN легко поднимается следующей командой:

# sudo wg-quick up wg0

Одна маленькая деталь: в качестве DNS-сервера я использовал dnsmasq с привязкой к сетевому интерфейсу br0, я также добавил устройства wg0 в список разрешённых устройств.

В dnsmasq это делается путём добавления новой строки с сетевым интерфейсом в файл конфигурации /etc/dnsmasq.conf, например:

# sudo nano /etc/dnsmasq.conf

interface=br0
interface=wg0

Кроме того, я добавил правило iptable, чтобы разрешить трафик на прослушивающий UDP-порт (51280):

$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPT

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

$ sudo systemctl enable Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.

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

На ноутбуке создаём файл конфигурации /etc/wireguard/wg0.conf с такими же настройками:

[Interface]
Address = 10.200.200.2/24
PrivateKey = <copy private key from wg-laptop-private.key>

[Peer]
PublicKey = <copy public key from wg-server-public.key>
AllowedIPs = 10.200.200.0/24
Endpoint = edgewalker:51820

Примечания:

Вместо edgewalker нужно указать публичный IP или хост VPN-сервера
Установив AllowedIPs на 10.200.200.0/24, мы используем VPN только для доступа к внутренней сети. Трафик на все остальные IP-адреса/серверы будет по-прежнему идти по «обычным» открытым каналам. Также будет использоваться предварительно настроенный DNS-сервер на ноутбуке.

Для тестирования и автоматического запуска используем те же команды wg-quick и systemd:

$ sudo wg-quick up wg0
$ sudo systemctl enable Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.


Настройка клиента на Android-телефоне

Для телефона Android создаём очень похожий файл конфигурации (назовём его mobile.conf):

[Interface]
Address = 10.200.200.3/24
PrivateKey = <copy private key from wg-mobile-private.key>
DNS = 10.200.200.1

[Peer]
PublicKey = <copy public key from wg-server-public.key>
AllowedIPs = 0.0.0.0/0
Endpoint = edgewalker:51820

В отличие от конфигурации на ноутбуке, телефон должен использовать наш VPN-сервер в качестве DNS-сервера (строка DNS), а также пропускать через VPN-туннель весь трафик (AllowedIPs = 0.0.0.0/0).

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

$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.conf

QR-код выйдет в консоль как ASCII. Его можно отсканировать из приложения Android VPN и автоматически настроить VPN-туннель.

 

Вверх