Шпаргалка по wireguard
Установка
обновляем систему:
apt update && apt upgrade -y
установка
apt install -y wireguard
Настройка сервера
Файлы настроек находятся в
cd /etc/wireguard
Создаём ключи для сервера
wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey
Проставляем права на приватный ключ:
chmod 600 /etc/wireguard/privatekey
Или еще вариант. Команда удаляет все разрешения к файлу для пользователей и групп, кроме пользователя root
, чтобы гарантировать, что только он может получить доступ к закрытому ключу.
chmod go= /etc/wireguard/private.key
Проверим, как у вас называется сетевой интерфейс:
ip a
Скорее всего у вас сетевой интерфейс eth0
, но возможно и другой, например, ens3
или как-то иначе. Это название интерфейса используется далее в конфиге /etc/wireguard/wg0.conf
, который мы сейчас создадим:
vim /etc/wireguard/wg0.conf
[Interface]
PrivateKey = <privatekey>
Address = 10.0.0.1/24
ListenPort = 51830
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
Если не знаете текстовый редактор
vim
— откройте файл сnano
, он проще в работе.
Обратите внимание — в строках PostUp
и PostDown
использован как раз сетевой интерфейс eth0
.
Если у вас другой — замените eth0
на ваш.
Вставляем вместо <privatekey>
содержимое файла /etc/wireguard/privatekey
Настраиваем IP форвардинг:
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
Включаем systemd
демон с wireguard
:
systemctl enable wg-quick@wg0.service
systemctl start wg-quick@wg0.service
systemctl status wg-quick@wg0.service
Можно посмотреть монитор подключенных клиентов
wg
Создаём ключи клиента:
wg genkey | tee /etc/wireguard/user_privatekey | wg pubkey | tee /etc/wireguard/user_publickey
Добавляем в конфиг сервера клиента:
vim /etc/wireguard/wg0.conf
[Peer]
# Name = user ivan
PublicKey = <user_publickey>
AllowedIPs = 10.0.0.2/32
Вместо <user_publickey>
— заменяем на содержимое файла /etc/wireguard/user_publickey
Перезагружаем systemd
сервис с wireguard
:
systemctl restart wg-quick@wg0 && systemctl status wg-quick@wg0
Настройка клиентов
Первым делом, само собой, следует установить клиенскую программу на локальный комп.
- Для windows - Download Windows Installer
- Для android - Download from Play Store
- Arch linux -
sudo pacman -S wireguard-tools
- Ubuntu -
sudo apt install wireguard
- Остальные версии можно глянуть на официальной странице
На локальной машине (например, на ноутбуке) создаём текстовый файл с конфигом клиента:
vim user_wb.conf
[Interface]
PrivateKey = <CLIENT-PRIVATE-KEY>
Address = 10.0.0.2/32
DNS = 8.8.8.8
[Peer]
PublicKey = <SERVER-PUBKEY>
Endpoint = <SERVER-IP>:51830
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 20
Здесь:
<CLIENT-PRIVATE-KEY>
заменяем на приватный ключ клиента, то есть содержимое файла/etc/wireguard/user_privatekey
на сервере.<SERVER-PUBKEY>
заменяем на публичный ключ сервера, то есть на содержимое файла/etc/wireguard/publickey
на сервере.<SERVER-IP>
заменяем на IP сервера.
Этот файл открываем в Wireguard клиенте (есть для всех операционных систем, в том числе мобильных) — и жмем в клиенте кнопку подключения.
Запуск terminal
Для Windows, Mac и Андроид - на сайте есть GUI приложения в которых нужно просто нажиать окошки. Их рассматривать не буду и так все понятно.
Для консолей же команда для поднятия клиента wg-quick up/down <путь к файлу>
Предположим на на клиентской машине файл настроек лежит по пути /etc/wireguard/wg0.conf
Запуск клиента будет выглядеть так:
sudo wg-quick up wg0
Остановка
sudo wg-quick down wg0
Дополнения
lswg
У сервера wireguard
есть совсем небольшой недостаток.
В нем нет отображения имет клиентов (peers)
Во время выводы команды wg
или wg show
пиры отображаются только хешами.
От этого не удобно и муторно понимать, какой хеш, к какому пользователю относится.
Решением позволяющим показывать имя пользователя является python
скрипт lswg
Он отображает имена Name
прописаные в файле wg0.conf
[Peer]
# Name = user ivan
PublicKey = <user_publickey>
AllowedIPs = 10.0.0.2/32
Скачать и установить lswg
Предполагается что на сервере вы как root
wget https://gist.githubusercontent.com/stavis-dev/9537cd4f9bf34a7b57fe698d4e4b780c/raw/lswg && \
chmod +x lswg && \
mv lswg /usr/bin/
Готовые скрипты
Готовый скрипт для установки га голую систему ubuntu20.04
образа wg-easy
bash <(wget --no-check-certificate -O - https://stavis-dev.github.io/f/wg_easy_ubuntu20.04_install.sh)
Или если нужно просто скачать.
wget https://stavis-dev.github.io/f/wg_easy_ubuntu20.04_install.sh
Links
- по мотивам видео видео
- продвинутая инструкция на digitalocean
- официальный сайт wireguard.com