Найти тему
Андрей Двуреченский

Настройка wireguard сервера, как настроить и подключить впн

Оглавление

Что такое wireguard и зачем он нужен - статей много, здесь ничего этого не будет. Только шаги и команды.

Client ---> VPN server ---> Internet

Сервер

Выбираем физический или виртуальный сервер и подключаемся к консоли.

Обновляемся

sudo apt update && sudo apt upgrade -y

Устанавливаем сам wireguard

sudo apt install wireguard -y

Активируем пересылку трафика, для этого редактируем файл

sudo nano /etc/sysctl.conf

Находим в файле параметр net.ipv4.ip_forward, раскомментируем его и устнавливааем значение =1

Проверяем

cat /proc/sys/net/ipv4/ip_forward

Должна вернутся 1

Перезагружаемся

sudo reboot

Подключаемся после перезагрузки

Сгенерируем пару ключей для сервера

wg genkey | tee server-pri.key | wg pubkey > server-pub.key

И для клиента

wg genkey | tee client-pri.key | wg pubkey > client-pub.key

В резултате получим черыре файла:

  • server-pri.key - приватный ключ сервера
  • server-pub.key - публичный ключ сервера
  • client-pri.key - приватный ключ клиента
  • client-pub.key - публичный ключ клиента
Приватные ключи должны хранится в надежном месте, публичные - собственно можно публиковать в открытом доступе кому угодно.

Создаем конфигурацию сервера

sudo nano /etc/wireguard/wg0.conf

Вставляем в него следующее содержимое

[Interface]

# Server Address = 10.10.10.1/24 #адрес нашего виртуального интерфейса ListenPort = 51820 # порт, на котором будет работать wireguard

PrivateKey = # сюда вставляем содержимое файла server-pri.key, сгенерированного на предыдущем шаге

PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens1 -j MASQUERADE

PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens1 -j MASQUERADE

#здесь указан физический интерфейс сервера ens1, нобходимо скорректировать под свой сверер

[Peer]

# Client PublicKey = # сюда вставляем содержимое файла client-pub.key, сгенерированного на предыдущем шаге

AllowedIPs = 10.10.10.2/32

Запускаем сервис wireguard

sudo systemctl start wg-quick@wg0

И устанавливаем автозапуск

sudo systemctl enable wg-quick@wg0

Клиент

Создаем конфигурацию клиента

nano client.conf

Вставляем содержимое

[Interface]

PrivateKey = # сюда вставляем содержимое файла client-pri.key Address = 10.10.10.2/32

DNS = 1.1.1.1

[Peer]

PublicKey = # сюда вставляем содержимое файла server-pub.key AllowedIPs = 0.0.0.0/0, ::/0

Endpoint = xx.xx.xx.xx:51820 # xx.xx.xx.xx внешний адрес нашего сервера

Можем либо файлом перенести эту конфигурацию на клиента, либо через QR-код с помощью qrencode

sudo apt install qrencode -y

Генерируем QR-код либо в отдельный файл

cat client.conf | qrencode -o client.png

Либо отображаем QR-код сразу в консоли

qrencode -t ansiutf8 < client.conf

Активируем клиента и наслаждаемся.

90% ошибок при настройке - невнимательность. Если что-то не работает - проверяем первым делом ключи и IP-адреса.

В мобильном клиенте wireguard для iOS, есть удобная опция автоподключение, где можно указать когда активировать VPN. Например, только при использовании мобильной сети или WiFi, все кроме определенных сетей.