Установка и настройка WireGuard на ubuntu server. Подключение клиентов.

В сети набирает популярность относительно новый VPN под названием WireGuard, который позиционирует себя как «простой, быстрый и современный». Настройка WireGuard оказалась действительно проще чем у openvpn. Без недостатков, конечно, не обошлось, но я всё же решил его опробовать. Далее опишу установку и настройку VPN WireGuard, а так же установку и подключение клиентов на ОС w!nd0w$ и raspbian ( raspberry pi )

Устанавливаем:
sudo apt update
sudo apt install wireguard

Далее:
sudo mkdir -p /usrsrc/wireguard
sudo chmod -R 077 /usrsrc/wireguard
cd /usrsrc/wireguard

Создаём приватный ключ:
sudo wg genkey > srv01wgprivate.key
Создаём публичный ключ:
sudo wg pubkey < srv01wgprivate.key > srv01wgpublic.key
Создаём ключ для клиента:
sudo wg genkey | tee mbp01private.key | wg pubkey > mbp01public.key

Создаём конфигурацию сервера:
sudo nano /etc/wireguard/wg0.conf
Содержимое:
[Interface]
# ip-адрес сервера wireguard внутри VPN
Address = 10.36.4.1/24
# Указываем порт, на котором будет висеть wireguard
ListenPort = 55443
# ключ сервера приватный из /usrsrc/wireguard/srv01wgprivate.key
PrivateKey = СТРОКА_С_КЛЮЧОМ

# клиент
[Peer]
# публичный ключ клиента из /usrsrc/wireguard/mbp01public.key
PublicKey = СТРОКА_С_КЛЮЧОМ
# назначаем ip-адрес для этого клиента
AllowedIPs = 10.36.4.151/32

Исправьте строки под себя и на этом конфигурационный файл заканчивается.
Приватные ключи для конфигурационного файла /etc/wireguard/wg0.conf мы берём из ране сгенерированных файлов, просто выполнив к примеру:
cat /usrsrc/wireguard/srv01wgprivate.key

Запускаем wireguard:
sudo wg-quick up wg0
Вижу:
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.36.4.1/24 dev wg0
[#] ip link set mtu 1412 up dev wg0

Здесь
wg0 — это название конфигурационного файла, созданного выше в статье.

Если надо выключить соединение:
sudo wg-quick down wg0

Если надо запустить службой:
sudo systemctl start wg-quick@wg0.service

Для автозапуска:
sudo systemctl enable wg-quick@wg0.service

Не забываем на сервере открыть порт wireguard, который указали в /etc/wireguard/wg0.conf и создать разрешающие правила:
iptables -A INPUT -p udp -i ppp+ --dport 55443 -j ACCEPT
iptables -A INPUT -s 10.36.4.0/24 -j ACCEPT
iptables -A OUTPUT -s 10.36.4.0/24 -j ACCEPT
iptables -A FORWARD -s 10.36.4.0/24 -j ACCEPT

здесь:
ppp — pppoe соединение сервера с провайдером
55443 — номер порта для подключения к серверу wireguard
10.36.4.0/24 — VPN сеть, создаваемая wireguard

Переходим к созданию конфигурации клиента.
sudo nano /usrsrc/wireguard/mbp01.conf

Содержимое:
[Interface]
# ip-адрес клиента внутри vpn
Address = 10.36.4.151/24
# PrivateKey клиента из файла /usrsrc/wireguard/mbp01private.key
PrivateKey = СТРОКА_С_КЛЮЧОМ_(много_сгенерированных_символов)

[Peer]
# PublicKey сервера из файла /usrsrc/wireguard/srv01wgpublic.key
PublicKey = СТРОКА_С_КЛЮЧОМ_(много_сгенерированных_символов)
# внешний ip-адрес сервера и порт
Endpoint = ВНЕШНИЙ_IP-АДРЕС_СЕРВЕРА:55443
# разрешаем видеть всех в сетях 10.36.4.0/24, 10.36.3.0/24, 10.36.2.0/24, 10.36.1.0/24, 10.36.11.0/24, 10.36.21.0/24
AllowedIPs = 10.36.4.0/24, 10.36.3.0/24, 10.36.2.0/24, 10.36.1.0/24, 10.36.11.0/24, 10.36.21.0/24
# поддерживать соединение отправкой пакета каждые 25 сек
PersistentKeepalive = 25

Скачиваем созданный mbp01.conf себе на другой ПК, который будет клиентом для сервера wireguard.

Качаем клиента wireguard с официального сайта. Я рассмотрю вариант клиента на w!nd0w$ и raspbian (raspberry pi).
Сначала w!nd0w$. Тут всё просто. Устанавливаем клиента как большинство приложений для w!nd0w$ простым нажатием далее. Запускаем и нажимаем «Импорт туннелей из файла».
ubuntu server vpn wireguard впн interface
Выбираем созданный mbp01.conf и настройки сами подтягиваются в клиента. Останется только нажать «Подключить» и можем пробовать пинговать клиентов из разрешённых сетей, ВПН

Теперь про клиента на raspbian (raspberry pi). Первым делом устанавливаем:
sudo apt-get install wireguard
Устанавливалось на raspberry pi 2b долго, потому что «The following packages will be upgraded: raspberrypi-kernel».
Эксперименты будем проводить всё на том же подключении с названием mbp01.conf, конфигурационный файл которого мы уже создали ранее.
После установки клиента на raspberry pi, копируем в /etc/wireguard/ наш конфигурационный файл клиента mbp01.conf. В общем это всё, что необходимо было сделать.
Настало время пробовать подключиться клиентом к VPN, для этого выполняем на raspberry pi:
sudo wg-quick up mbp01

если надо отключиться, то делаем:
sudo wg-quick down mbp01

Если надо создать несколько клиентов, то генерируем им ключи на сервере, в конфигурационном файле сервера добавляем новый [Peer] и создаём конфигурацию новому клиенту.

На данный момент WireGuard считаю альтернативой для pptp, но чтобы сдвинуть старичков в лице OpenVPN и IPsec ему придётся постараться и развиваться далее.

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