Организация VPN сервера WireGuard на Ubuntu Server
WireGuard - современный VPN сервис с открытым исходным кодом. Сервисом WireGuard можно полностью заменить OpenVPN.
Необходимо организовать единую сеть для устройств таких как персональные компьютеры, ноутбуки и смартфоны, которые находятся в разных точках планеты и имеют доступ в интернет - это основная задача, выполнение которой будет описано в этой статье.
Статья - инструкция по установке и настройке сервиса WireGuard под Ubuntu Server состоит из четырёх этапов:
Создать свой VPN сервер с помощью сервиса WireGuard на операционной системе Ubuntu Server можно просто следуя командам написанным ниже. Достаточно знать что такое Linux, Ubuntu и суперпользовать (root).
Все указанные ниже команды выполняются от имени суперпользователя
1. Обновляем базовые пакеты Ubuntu Server
2. Устанавливаем сервис WireGuard
3. Добавление сервиса WireGuard в автозагрузку
4. Запуск WireGuard
Для сервера, как и для клиента, необходимо сгенерировать ключи, которые позже необходимо прописать в файле конфигурации сервиса WireGuard.
1. Создаём файл конфигурации сервиса WireGuard
2. Внесём необходимые данные
В контейнере Interface:
Запускаем WireGuard
Проверяем статус работы сервиса WireGuard
VPN сервер с помощью сервиса WireGuard на Ubuntu Server запущен.
Полезные команды:
Расшифровка файла конфигурации:
Рекомендуемые подсети и IP адреса для использования в частной сети:
Клиентов под разные операционные системы для WireGuard можно скачать с официального сайта. Настройка клиентов WireGuard проста. Ниже примеры для Android, Windows и Ubuntu Server.
Необходимо организовать единую сеть для устройств таких как персональные компьютеры, ноутбуки и смартфоны, которые находятся в разных точках планеты и имеют доступ в интернет - это основная задача, выполнение которой будет описано в этой статье.
Статья - инструкция по установке и настройке сервиса WireGuard под Ubuntu Server состоит из четырёх этапов:
- Установка WireGuard;
- Генерация ключей;
- Настройка сервиса WireGuard;
- Настройка клиента WireGuard.
Создать свой VPN сервер с помощью сервиса WireGuard на операционной системе Ubuntu Server можно просто следуя командам написанным ниже. Достаточно знать что такое Linux, Ubuntu и суперпользовать (root).
Все указанные ниже команды выполняются от имени суперпользователя
sudo -sУстановка и настройка WireGuard
1. Обновляем базовые пакеты Ubuntu Server
apt update2. Устанавливаем сервис WireGuard
apt install WireGuard3. Добавление сервиса WireGuard в автозагрузку
systemctl enable wg-quick@vpn4. Запуск WireGuard
wg-quick up vpnно эту команду запускаем после окончания настройки сервиса.Генерация ключей
Для сервера, как и для клиента, необходимо сгенерировать ключи, которые позже необходимо прописать в файле конфигурации сервиса WireGuard.
- Генерация ключей для сервера
wg genkey | tee /etc/wireguard/server_private.key | wg pubkey | tee /etc/wireguard/server_public.key - Генерация ключей для клиента
wg genkey | tee /etc/wireguard/client1_private.key | wg pubkey | tee /etc/wireguard/client1_public.key
cat /etc/wireguard/client1_public.key и записать в файл конфигурации сервиса WireGuard командой:cat /etc/wireguard/client1_public.key >> /etc/wireguard/vpn.confНастройка сервиса WireGuard
1. Создаём файл конфигурации сервиса WireGuard
nano /etc/wireguard/vpn.confvpn.conf - "vpn" - можно использовать любое другое название, это название будет соответствовать имени интерфейса и имени сервера VPN. На одном сервере можно настроить и запустить несколько серверов VPN с разными настройками.2. Внесём необходимые данные
[Interface]
Address = 10.0.0.1/24
ListenPort = 52525
SaveConfig = false
PrivateKey = <сгенерированный ранее приватный ключ для сервера>
PreUp = sysctl -w net.ipv4.ip_forward=1
PostUp = iptables -A FORWARD -i vpn -j ACCEPT; iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
PreDown = sysctl -w net.ipv4.ip_forward=0
PostDown = iptables -D FORWARD -i vpn -j ACCEPT; iptables -t nat -D POSTROUTING -o enp0s3 -j MASQUERADE
[Peer]
#Client1
PublicKey = <сгенерированный ранее публичный ключ для первого клиента>
AllowedIPs = 10.0.0.11/32
[Peer]
#Client2
PublicKey = <сгенерированный ранее публичный ключ для второго клиента>
AllowedIPs = 10.0.0.12/32В контейнере Interface:
- Address - подсеть VPN и адрес сервера в этой сети;
- ListenPort - порт для подключения клиентов;
- SaveConfig - позволяет сохранять текущее состояние настроек:
- false - не сохранять
- true - сохранять; - PrivateKey - приватный ключ сервера, который сгенерирован ранее;
- PreUp - скрипт, который запускается после запуска сервиса WireGuard;
- PostUp - команда, которая выполняется после запуска сервиса WireGuard;
- PreDown - скрипт, который запускается после остановки сервиса WireGuard;
- PostDown - команда, выполняется после остановки сервиса WireGuard.
- PublicKey - публичный ключ клиента, сгенерированный ранее;
- AllowedIPs - IP адрес назначенный клиенту.
Запускаем WireGuard
wg-quick up vpnПроверяем статус работы сервиса WireGuard
systemctl status wg-quick@vpnVPN сервер с помощью сервиса WireGuard на Ubuntu Server запущен.
Полезные команды:
запустить сервис WireGuardsystemctl start wg-quick@vpn
статистика по подключениямwg show
остановить сервис WireGuardsystemctl stop wg-quick@vpn
Расшифровка файла конфигурации:
Параметр "true" разрешает вносить изменения в конфигурацию WireGuard сервиса не перезапуская его. Например добавить клиента можно командой:SaveConfig = true
10.0.0.13/32 - изменить на ip следующего клиента.wg set vpn peer "сгенерированный ранее публичный ключ для нового клиента" allowed-ips 10.0.0.13/32
Параметр "false" - позволяет вносить настройки только вручную в файл конфигурации сервиса WireGuard и обязательного его перезапуска.
Включается пересылка трафика между интерфейсами.PreUp = sysctl -w net.ipv4.ip_forward=1
Включается поддержка MASQUERADE для интерфейса enp0s3, а также разрешается прием пакетов на интерфейсе vpn. Сетевые интерфейсы: enp0s3 и vpn необходимо заменить на свои.PostUp = iptables -A FORWARD -i vpn -j ACCEPT; iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
Узнать их можно запустив команду:ip a
Рекомендуемые подсети и IP адреса для использования в частной сети:
- 10.0.0.0 - 10.255.255.255 (10/8 prefix)
- 172.16.0.0 - 172.31.255.255 (172.16/12 prefix)
- 192.168.0.0 - 192.168.255.255 (192.168/16 prefix)
Настройка клиента WireGuard
Клиентов под разные операционные системы для WireGuard можно скачать с официального сайта. Настройка клиентов WireGuard проста. Ниже примеры для Android, Windows и Ubuntu Server.
Android
- Установить приложение WireGuard;
- Запустить WireGuard;
- Создаём новое соединение, новый туннель WireGuard, нажатием кнопки +;
- В меню выбираем пункт Создать с нуля;
- Заполняем поля, Название - удобное и понятное нам;
- В поле Приватный ключ вводим приватный ключ для клиента сгенерированный при настройке сервера, в результате в поле Публичный ключ отобразится тот же публичный ключ для клиента, который был сгенерирован ранее;
- В поле Адреса вводим IP адрес указанный при настройке сервера для данного клиента;
- В поле DNS-сервера вводим IP адреса DNS серверов;
- Нажимаем Добавить пир;
- В поле Публичный ключ вводим публичный ключ для сервера сгенерировать при настройке сервера;
- В поле Постоянное соединение укажем 25;
- В поле Конечная точка вводим адрес сервера с указанием порта;
- В поле Разрешённые IP вводим 0.0.0.0/0.



Комментариев 0