WireGuard-Guide-On_Arch_Linux/README-ru.md
2024-11-28 17:56:25 +03:00

11 KiB
Raw Blame History

Руководство по Настройке WireGuard для Arch Linux

Это руководство предоставляет упрощённый пошаговый процесс настройки безопасного VPN WireGuard на Arch Linux. Оно обеспечивает правильную конфигурацию публичных и приватных ключей, чтобы избежать распространённых проблем, связанных с аутентификацией и маршрутизацией трафика.

Содержание

  1. Требования
  2. Установка
  3. Генерация Ключей
  4. Конфигурация Сервера
  5. Конфигурация Клиента
  6. Брандмауэр и Маршрутизация
  7. Запуск WireGuard
  8. Проверка
  9. Диагностика

Требования

  • Arch Linux установлен на серверах и клиентах.
  • Права суперпользователя (root) или sudo на обоих устройствах.
  • Публичный IP-адрес для сервера.

Установка

На Сервере и Клиенте

  1. Обновите систему:

    sudo pacman -Syu
    
  2. Установите WireGuard:

    sudo pacman -S wireguard-tools
    
  3. Установите текстовый редактор Nano (Опционально, но рекомендуется):

    Nano — удобный текстовый редактор, облегчающий редактирование конфигурационных файлов.

    sudo pacman -S nano
    

Генерация Ключей

На Сервере

  1. Перейдите в директорию WireGuard:

    sudo mkdir -p /etc/wireguard
    cd /etc/wireguard
    
  2. Сгенерируйте ключи сервера:

    umask 077
    wg genkey | tee server_privatekey | wg pubkey > server_publickey
    
    • server_privatekey: Приватный ключ сервера.
    • server_publickey: Публичный ключ сервера.

На Клиенте

  1. Сгенерируйте ключи клиента:

    wg genkey | tee client_privatekey | wg pubkey > client_publickey
    
    • client_privatekey: Приватный ключ клиента.
    • client_publickey: Публичный ключ клиента.

Конфигурация Сервера

  1. Создайте/Отредактируйте конфигурационный файл WireGuard:

    sudo nano /etc/wireguard/wg0.conf
    
  2. Добавьте следующую конфигурацию:

    [Interface]
    Address = 10.0.0.1/24
    ListenPort = 51820
    PrivateKey = <server_privatekey>
    
    # Включение IP-переадресации и настройка NAT
    PostUp = sysctl -w net.ipv4.ip_forward=1
    PostUp = iptables -t nat -A POSTROUTING -o <external_interface> -j MASQUERADE
    PostUp = iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    PostUp = iptables -A FORWARD -s 10.0.0.0/24 -j ACCEPT
    PostDown = sysctl -w net.ipv4.ip_forward=0
    PostDown = iptables -t nat -D POSTROUTING -o <external_interface> -j MASQUERADE
    PostDown = iptables -D FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    PostDown = iptables -D FORWARD -s 10.0.0.0/24 -j ACCEPT
    
    [Peer]
    PublicKey = <client_publickey>
    AllowedIPs = 10.0.0.2/32
    
    • Замените <server_privatekey> содержимым server_privatekey.
    • Замените <external_interface> на внешний сетевой интерфейс сервера (например, ens1, eth0).
    • Замените <client_publickey> на публичный ключ клиента.
  3. Сохраните и выйдите (Ctrl + O, Enter, Ctrl + X).

Конфигурация Клиента

  1. Создайте/Отредактируйте конфигурационный файл WireGuard:

    sudo nano /etc/wireguard/wg0.conf
    

    На Windows используйте приложение WireGuard для добавления нового туннеля и ввода конфигурации.

  2. Добавьте следующую конфигурацию:

    [Interface]
    PrivateKey = <client_privatekey>
    Address = 10.0.0.2/24
    DNS = 8.8.8.8
    
    [Peer]
    PublicKey = <server_publickey>
    Endpoint = <server_public_ip>:51820
    AllowedIPs = 0.0.0.0/0, ::/0
    PersistentKeepalive = 25
    
    • Замените <client_privatekey> содержимым client_privatekey.
    • Замените <server_publickey> на публичный ключ сервера.
    • Замените <server_public_ip> на публичный IP-адрес сервера.
  3. Сохраните и выйдите (Ctrl + O, Enter, Ctrl + X).

Брандмауэр и Маршрутизация

На Сервере

  1. Настройте правила iptables:

    sudo iptables -t nat -A POSTROUTING -o <external_interface> -j MASQUERADE
    sudo iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    sudo iptables -A FORWARD -s 10.0.0.0/24 -j ACCEPT
    
  2. Сохраните правила iptables для сохранения после перезагрузки:

    sudo iptables-save | sudo tee /etc/iptables/iptables.rules
    sudo systemctl enable iptables
    sudo systemctl start iptables
    
  3. Включите IP-переадресацию:

    echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.d/99-sysctl.conf
    sudo sysctl -p /etc/sysctl.d/99-sysctl.conf
    

Запуск WireGuard

На Сервере и Клиенте

  1. Запустите и включите WireGuard:

    sudo systemctl start wg-quick@wg0
    sudo systemctl enable wg-quick@wg0
    

Проверка

  1. Проверьте статус WireGuard:

    sudo wg show
    
    • Убедитесь, что интерфейс wg0 активен и пэры перечислены.
  2. Тестирование подключения:

    • Пинг сервера с клиента:

      ping 10.0.0.1
      
    • Пинг внешнего IP с клиента:

      ping 8.8.8.8
      
    • Тестирование разрешения DNS:

      nslookup google.com
      
    • Доступ к веб-сайтам:

      Откройте веб-браузер и перейдите на любой сайт (например, https://www.google.com).

Диагностика

  • Неправильное Сопоставление Ключей:

    • Убедитесь, что [Peer] PublicKey на сервере содержит публичный ключ клиента.
    • Убедитесь, что [Peer] PublicKey на клиенте содержит публичный ключ сервера.
  • Правила Брандмауэра:

    • Проверьте правила iptables:

      sudo iptables -L -v
      sudo iptables -t nat -L -v
      
  • IP-Переадресация:

    • Подтвердите, что IP-переадресация включена:

      sysctl net.ipv4.ip_forward
      

      Должно вернуть net.ipv4.ip_forward = 1.

  • Просмотр Логов:

    • Проверьте логи WireGuard на сервере:

      sudo journalctl -u wg-quick@wg0
      
  • Доступность Порта:

    • Убедитесь, что UDP-порт 51820 открыт и прослушивается:

      sudo ss -ulnp | grep 51820
      
  • Проблемы с DNS:

    • Если разрешение DNS не работает, попробуйте другие DNS-серверы (например, 1.1.1.1, 8.8.4.4).

Частые Проблемы и Решения

Причина: Неправильно Настроенные Публичные Ключи

Проблема: Клиент использовал приватный ключ сервера вместо его публичного ключа, что мешало корректной аутентификации.

Решение:

  • Убедитесь, что [Peer] PublicKey на клиенте установлен на публичный ключ сервера.
  • Убедитесь, что [Peer] PublicKey на сервере установлен на публичный ключ клиента.

Причина: Дублирующиеся Правила iptables

Проблема: Несколько одинаковых правил MASQUERADE вызывали конфликты маршрутизации.

Решение:

  • Удалите дублирующиеся правила iptables и оставьте только одно правило MASQUERADE.

    sudo iptables -t nat -F POSTROUTING
    sudo iptables -t nat -A POSTROUTING -o <external_interface> -j MASQUERADE
    

Причина: Отключённая IP-Переадресация

Проблема: IP-переадресация была отключена, блокируя маршрутизацию трафика через VPN.

Решение:

  • Включите IP-переадресацию постоянно.

    echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.d/99-sysctl.conf
    sudo sysctl -p /etc/sysctl.d/99-sysctl.conf
    

Заключение

Правильная настройка публичных и приватных ключей, а также корректные настройки брандмауэра и маршрутизации, являются ключевыми для функционирования VPN WireGuard на Arch Linux. Следуя этому руководству, вы сможете настроить WireGuard безопасно и эффективно, минимизируя потенциальные проблемы, связанные с аутентификацией и маршрутизацией трафика.

Для дополнительной помощи обратитесь к документации WireGuard или обратитесь за помощью к сообществу Arch Linux.