Пошаговая инструкция по настройке сервера и клиента WireGuard (Ubuntu / Debian)

Автор George, Сегодня в 11:55

« назад - далее »

George

Пошаговая инструкция по настройке сервера и клиента WireGuard (Ubuntu / Debian)

В этом руководстве разобрано, как с нуля развернуть собственный VPN-сервер на базе WireGuard, настроить раздачу интернета и создать конфигурационный файл (или QR-код) для подключения клиента.



Часть 1. Настройка сервера

1. Установка пакетов
Подключитесь к серверу по SSH и установите WireGuard, а также утилиту [tt]qrencode[/tt] (понадобится для генерации QR-кодов для смартфонов):
Код: bash
apt update && apt install wireguard qrencode -y

2. Включение пересылки пакетов (IP Forwarding)
Чтобы сервер мог выпускать VPN-клиентов в интернет, включите форвардинг трафика в ядре системы:
Код: bash
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p

3. Определение имени внешнего сетевого интерфейса
Узнайте, через какой интерфейс сервер выходит в сеть (обычно это [tt]eth0[/tt] или [tt]ens3[/tt]):
Код: bash
ip route get 8.8.8.8
В выводе найдите слово сразу после [tt]dev[/tt] (например, [tt]dev eth0[/tt]). Оно понадобится для правил фаервола.

4. Генерация ключей сервера
Перейдите в рабочую директорию и создайте пару ключей для сервера:
Код: bash
cd /etc/wireguard/
umask 077
wg genkey | tee server_private.key | wg pubkey > server_public.key

5. Создание конфигурации сервера
Посмотрите сгенерированный приватный ключ сервера:
Код: bash
cat /etc/wireguard/server_private.key

Создайте и откройте файл конфигурации [tt]/etc/wireguard/wg0.conf[/tt]:
Код: bash
nano /etc/wireguard/wg0.conf

Вставьте в него следующий шаблон (замените [tt]ПРИВАТНЫЙ_КЛЮЧ_СЕРВЕРА[/tt] на ключ из предыдущего шага, а [tt]eth0[/tt] — на имя вашего сетевого интерфейса, если оно отличается):
Код: bash
[Interface]
Address = 10.66.66.1/24
ListenPort = 51820
PrivateKey = ПРИВАТНЫЙ_КЛЮЧ_СЕРВЕРА

PostUp = iptables -I INPUT -p udp --dport 51820 -j ACCEPT
PostUp = iptables -I FORWARD -i eth0 -o %i -j ACCEPT
PostUp = iptables -I FORWARD -i %i -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

PostDown = iptables -D INPUT -p udp --dport 51820 -j ACCEPT
PostDown = iptables -D FORWARD -i eth0 -o %i -j ACCEPT
PostDown = iptables -D FORWARD -i %i -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
Примечание: вместо стандартного порта [tt]51820[/tt] можно указать любой свободный UDP-порт (например, [tt]443[/tt]).

Сохраните файл (Ctrl + O -> Enter) и закройте редактор (Ctrl + X).

6. Запуск службы WireGuard
Добавьте интерфейс в автозагрузку и запустите его:
Код: bash
systemctl enable wg-quick@wg0
systemctl start wg-quick@wg0

Проверить статус работы можно командой:
Код: bash
wg show



Часть 2. Создание и подключение клиента

1. Генерация ключей клиента
На сервере создайте пару ключей для первого устройства (например, [tt]client1[/tt]):
Код: bash
cd /etc/wireguard/
wg genkey | tee client1_private.key | wg pubkey > client1_public.key

2. Регистрация клиента на сервере
Посмотрите публичный ключ клиента:
Код: bash
cat /etc/wireguard/client1_public.key

Откройте конфиг сервера ([tt]nano /etc/wireguard/wg0.conf[/tt]) и добавьте в самый конец блок [tt][Peer][/tt]:
Код: bash
[Peer]
PublicKey = ПУБЛИЧНЫЙ_КЛЮЧ_КЛИЕНТА
AllowedIPs = 10.66.66.2/32
Для каждого следующего устройства увеличивайте последнюю цифру IP-адреса ([tt]10.66.66.3/32[/tt], [tt]10.66.66.4/32[/tt] и т.д.).

Перезапустите службу на сервере, чтобы изменения вступили в силу:
Код: bash
systemctl restart wg-quick@wg0

3. Формирование клиентского файла конфигурации
Для заполнения клиентского конфига вам понадобятся три значения:
  • Приватный ключ клиента: [tt]cat /etc/wireguard/client1_private.key[/tt]
  • Публичный ключ сервера: [tt]cat /etc/wireguard/server_public.key[/tt]
  • Внешний IP-адрес сервера: [tt]curl -4 ifconfig.me[/tt]

Создайте на сервере файл [tt]/etc/wireguard/client1.conf[/tt] ([tt]nano /etc/wireguard/client1.conf[/tt]) и вставьте в него:
Код: bash
[Interface]
PrivateKey = ПРИВАТНЫЙ_КЛЮЧ_КЛИЕНТА
Address = 10.66.66.2/32
DNS = 1.1.1.1

[Peer]
PublicKey = ПУБЛИЧНЫЙ_КЛЮЧ_СЕРВЕРА
Endpoint = ВНЕШНИЙ_IP_СЕРВЕРА:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

4. Перенос настроек на устройство
  • Для смартфона (iOS / Android): выведите QR-код прямо в терминал сервера и отсканируйте его через официальное приложение WireGuard:
    Код: bash
    qrencode -t ansiutf8 < /etc/wireguard/client1.conf
  • Для ПК (Windows / macOS / Linux): скопируйте содержимое файла [tt]client1.conf[/tt], сохраните на компьютере с расширением [tt].conf[/tt] и импортируйте в клиент WireGuard.

Извините, вам запрещён просмотр содержимого спойлеров.




Извините, вам запрещён просмотр содержимого спойлеров.


  •  

🡱 🡳

Отметьте интересные вам фрагменты текста и они станут доступны по уникальной ссылке в адресной строке браузера.