Примеры настройки WireGuard#
Пример “Site-to_Site VPN”#
Настроить между маршрутизаторами HQ-RTR и BR-RTR Site-to_Site VPN туннель WireGuard. Адреса VPN - туннеля должны быть из сети 10.10.10.0/30
Site-to_Site VPN - это VPN от маршрутизатора к маршрутизатору. В VPN Site-to_Site не разрешено использовать несколько пользователей.
Настройка:
Выполнить проверку настройку сетевых интерфейсов:
ip a
Между роутерами должны проходить пакеты (connectivity).
В данном случае через интерфейс ens224 трафик направляется во внешнюю сеть, поэтому в дальнейшем он будет использоваться в ноастойках конфигурационных файлов.
Выполнить установку необходимых пакетов на оборудование(HQ-RTR, BR-RTR):
apt-get install wireguard-tools wireguard-tools-wg-quick kernel-source-wireguard
Создать каталоги /etc/wireguard и /etc/wireguard/keys
mkdir /etc/wireguard
mkdir /etc/wireguard/keys
Перейти в каталог /etc/wireguard/keys:
..code:
cd /etc/wireguard/keys
Сгенерировать приватный и публичный ключ:
wg genkey | tee private.key | wg pubkey | tee public.key
Здесь генерируется приватный ключ wg genkey и командой tee направляется в файл private.key, затем он передается на вход wg pubkey, генерирующей на его основе публичный ключ и командой tee записывается в public.key
Перейти в каталог /etc/wireguard и создать конфигурационные файлы wg-hq.conf и wg-br.conf на соответствующих маршрутизаторах:
cd /etc/wireguard/
HQ-RTR:
vim wg-hq.conf
[Interface]
Address = 10.10.10.1/32
ListenPort = 51820
PrivateKey = <ПРИВАТНЫЙ_КЛЮЧ_HQ-RTR>
PostUp = iptables -t nat -A POSTROUTING -o ens224 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -o ens224 -j MASQUERADE
[Peer]
PublicKey = <ПУБЛИЧНЫЙ_КЛЮЧ_BR-RTR>
AllowedIPs = 10.10.10.0/30
Endpoint = 172.16.5.2:51820
PersistentKeepalive = 20
BR-RTR:
vim wg-br.conf
[Interface]
Address = 10.10.10.2/32
ListenPort = 51820
PrivateKey = <ПРИВАТНЫЙ_КЛЮЧ_BR-RTR>
PostUp = iptables -t nat -A POSTROUTING -o ens224 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -o ens224 -j MASQUERADE
[Peer]
PublicKey = <ПУБЛИЧНЫЙ_КЛЮЧ_HQ-RTR>
AllowedIPs = 10.10.10.0/30
Endpoint = 172.16.5.1:51820
PersistentKeepalive = 20
Поднять туннели на обоих серверах:
HQ-RTR:
wg-quick up wg-hq
BR-RTR:
wg-quick up wg-br
Note
Примечание: Выключить туннель можно командой: wg-quick down wg-hq
Проверить активность туннелей командой wg:
wg
Если присутствует “latest handshake:… seconds ago” и байты и в received и в sent, значит, все хорошо.
Если байты только в sent, без handshake и received, значит, где-то в конфигурационном файле ошибка или серверы недоступны друг для друга.
Если в процессе включения туннеля произошла ошибка, то достаточно перезагрузить сервер — активные туннели сбросятся.
Проверить сетевые интерфейсы
..code:
ip a
В случае отсутствия ошибок поставить туннели в автозапуск:
HQ-RTR:
systemctl enable wg-quick@wg-hq.service
BR-RTR:
systemctl enable wg-quick@wg-br.service
Пример “Remote access VPN”#
В Remote access VPN (VPN с удалённым доступом) пользователи подключаются к частным сетям, и это позволяет механически удалённо получать доступ к сервисам и использовать эту частную сеть. Это лучше всего подходит для деловых и домашних целей. При использовании VPN c удаленным доступом разрешено использовать несколько пользователей.
Для хоста OUT-CLI настроить Remote access VPN к маршрутизатору BR-RTR. Для клиента использовать адрес из сети 172.16.10.0/24
Проверить настройки хоста OUT - CLI
Установить необходимое программное обеспечение:
apt-get install wireguard-tools wireguard-tools-wg-quick kernel-source-wireguard
Создать каталог для ключей клиента (см. п.п. 2 - 4, Пример 1)
В каталоге /etc/wireguard cоздать конфигурационный файл wg0-client.conf для клиента OUT-CLI:
cd /etc/wireguard
vim wg0-client.conf
[Interface]
PrivateKey = <ПРИВАТНЫЙ_КЛЮЧ_OUT-CLI>
Address = 172.16.10.10/32
[Peer]
PublicKey = <ПУБЛИЧНЫЙ_КЛЮЧ_BR-RTR>
AllowedIPs = 172.16.10.0/24, 192.168.0.0/24
Endpoint = 172.16.5.2:51820
PersistentKeepalive = 20
Address = 172.16.10.10/32 - IP адрес клиента в теннеле
AllowedIPs = 172.16.10.0/24, 192.168.0.0/24
172.16.10.0/24 - сеть туннеля. Из этой сети разрешать доступ
192.168.0.0/24 - Из этой сети разрешать доступ и пакеты, направляемые в эту сеть передавать через туннель.
Endpoint = 172.16.5.2:51820 - ip адрес сервера VPN (BR-RTR)
PersistentKeepalive = 20 - каждые 2 секунд выполнять handshake для поддержания связи.
На BR-RTR внести изменения в файл wg-br.conf
Добавить в конец файла два раздела:
[Interface]
Address = 172.16.10.1/32
ListenPort = 51820
PrivateKey = <ПРИВАТНЫЙ_КЛЮЧ_BR-RTR>
[Peer]
PublicKey = <ПУБЛИЧНЫЙ_КЛЮЧ_OUT-CLI>
AllowedIPs = 172.16.10.10/32
PersistentKeepalive = 20
На обоих устройствах запустить туннель:
BR-RTR:
wg-quick down wg-br
wg-quick up wg-br
OUT-CLI:
wg-quick down wg0-client
wg-quick up wg0-client
Проверить состояние туннеля:
wg
При отсутствии ошибок поставить туннели в автозапуск:
OUT-CLI:
systemctl enable wg-quick@wg0-client.service
Можно с OUT-CLI получать доступ к инфраструктуре за BR-RTR:
ping 192.168.0.2