Настройка VPN-туннеля для доступа удаленных клеентов к ресурсам локальной сети.
Краткая сводка:
- GW: RouterOS
- Сервер: Debian Buster
Адресное пространство:
- Виртуальная машина c WireGuard: 172.16.5.97/29
- Сервер: + (клиенты) 172.16.254.0/28
- Локальная сеть: 172.16.5.0/24
Подготовка:
Будут приведены примеры установки из unstable репозитория и backports.
Backports:
Добавляем репозиторий.
# echo "deb http://deb.debian.org/debian buster-backports main" > /etc/apt/sources.list.d/buster-backports.list
Обновляем список пакетов и устанавливаем:
# apt update
# apt -t buster-backports install wireguard
Подгружаем модуля ядра | Проверяем:
# modprobe wireguard && lsmod | grep wireguard
Вывести список установленных пакетов из Backports:
# dpkg-query -W | grep ~bpo
Unstable:
Добавляем репозиторий.
# echo "deb http://deb.debian.org/debian/ unstable main" > /etc/apt/sources.list.d/unstable.list
# printf 'Package: *\nPin: release a=unstable\nPin-Priority: 90\n' > /etc/apt/preferences.d/limit-unstable
Обновляем список пакетов и устанавливаем:
# apt update
# apt install wireguard net-tools qrencode (wireguard wireguard-dkms wireguard-tools)
Включаем форвардинг пакетов:
# nano /etc/sysctl.conf
net.ipv4.ip_forward=1
- Применяем изменения,
# sysctl -p
Настройка сервера:
Создаем ключи:
# cd /etc/wireguard/
# mkdir -p keys/{private,public}
# wg genkey | tee keys/private/server_private_key | wg pubkey > keys/public/server_public_key
# wg genkey | tee keys/private/mtv_private_key | wg pubkey > keys/public/mtv_public_key
# wg genkey | tee keys/private/mobile_private_key | wg pubkey > keys/public/mobile_public_key
Создаем конфигурационный файл wg0.conf:
Задаем параметры сети и настройки пиров для клиентов. Так как клиент это не роутер, то добавляем в AllowedIPs только один маршрут.
# nano wg0.conf
[Interface]
Address = 172.16.254.1/28
ListenPort = 8172
PrivateKey = SERVER_PRIVATE_KEY
# MTv
[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 172.16.254.2/32
# Mobile
[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 172.16.254.3/32
Завершающий этап:
- Устанавливаем права на конфигурационный файл:
# chmod 600 /etc/wireguard/wg0.conf
- Включаем автозагрузку сервиса:
# systemctl enable wg-quick@wg0.service
- Запускаем:
# systemctl restart wg-quick@wg0.service
- Просмотреть статус:
# wg и # ifconfig
Настройка клиентов:
Если клиент находится за NAT опция "PersistentKeepalive ="
# mkdir clients
# cat /etc/wireguard/clients/wg0-mtv.conf
[Interface]
Address = 172.16.254.2/28
PrivateKey = CLIENT_PRIVATE_KEY
DNS = 172.16.5.97
[Peer]
PublicKey = SERVER_PUBLIC_KEY
AllowedIPs = 172.16.254.1/32,172.16.5.0/24
Endpoint = SERVER_REAL_IP or DOMAIN NAME:8172
PersistentKeepalive = 25
Опция "AllowedIPs" указывает на разрешенные адреса хостов или сеть. К ним, после поднятия VPN-интерфейса, автоматически добаляется маршрут.
Генерация QR-кода для настройки мобильных клиетов:
# qrencode -t ansiutf8 < client.conf
MikroTik Routes:
Осталось добавить маршрут в сеть vpn-сервера.
# ip route add dst-address=172.16.254.0/28 gateway=172.16.5.98 comment="To WireGuard site"
После этого подключаем клиентов к VPN-серверу и проверяем пинги до хостов внутри сети 172.16.5.0/24 и адреса сервера и клиента из 172.16.254.0/28.
Завернуть весь трафик через VPN:
Как бонус, если необходимо.
# iptables -t nat -A POSTROUTING -o ens16.96 -s 172.16.254.0/24 -j SNAT --to-source 172.16.5.98