14 KiB
Руководство по Настройке WireGuard для Arch Linux
Это руководство предоставляет упрощённый пошаговый процесс настройки безопасного VPN WireGuard на Arch Linux. Оно обеспечивает правильную конфигурацию публичных и приватных ключей, чтобы избежать распространённых проблем, связанных с аутентификацией и маршрутизацией трафика. Конфигурация клиента охватывает различные платформы, включая Linux, Windows и мобильные устройства (iOS/Android).
Содержание
- Требования
- Установка
- Генерация Ключей
- Конфигурация Сервера
- Конфигурация Клиента
- Брандмауэр и Маршрутизация
- Запуск WireGuard
- Проверка
- Диагностика
Требования
- Arch Linux установлен на сервере.
- Права суперпользователя (root) на сервере.
- Публичный IP-адрес для сервера.
- Приложение WireGuard установлено на клиентском устройстве (Linux, Windows, iOS, Android).
Установка
На Сервере
-
Обновите систему:
sudo pacman -Syu
-
Установите WireGuard и текстовый редактор Nano:
Nano — удобный текстовый редактор, облегчающий редактирование конфигурационных файлов.
sudo pacman -S wireguard-tools nano
На Клиенте
-
Linux:
sudo pacman -S wireguard-tools nano
-
Windows, iOS, Android:
Установите приложение WireGuard с официального сайта или из магазина приложений вашего устройства.
Генерация Ключей
На Сервере
-
Перейдите в директорию WireGuard:
sudo mkdir -p /etc/wireguard cd /etc/wireguard
-
Сгенерируйте ключи сервера:
umask 077 wg genkey | tee server_privatekey | wg pubkey > server_publickey
server_privatekey
: Приватный ключ сервера.server_publickey
: Публичный ключ сервера.
На Клиенте
Linux
-
Перейдите в директорию WireGuard:
mkdir -p ~/wireguard cd ~/wireguard
-
Сгенерируйте ключи клиента:
wg genkey | tee client_privatekey | wg pubkey > client_publickey
client_privatekey
: Приватный ключ клиента.client_publickey
: Публичный ключ клиента.
Windows, iOS, Android
-
Используйте приложение WireGuard для генерации ключей:
- Откройте приложение WireGuard.
- Нажмите "Add Tunnel" > "Add empty tunnel..."
- Приложение сгенерирует приватный и публичный ключи.
- Сохраните приватный ключ в безопасном месте и скопируйте публичный ключ для конфигурации сервера.
Конфигурация Сервера
-
Создайте/Отредактируйте конфигурационный файл WireGuard:
sudo nano /etc/wireguard/wg0.conf
-
Добавьте следующую конфигурацию:
[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
). Посмотреть интерфейсы команда: ip a - Замените
<client_publickey>
на публичный ключ клиента.
- Замените
-
Сохраните и выйдите (
Ctrl + O
,Enter
,Ctrl + X
).
Конфигурация Клиента
Linux
-
Создайте/Отредактируйте конфигурационный файл:
sudo nano /etc/wireguard/wg0.conf
-
Добавьте следующую конфигурацию:
[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-адрес сервера.
- Замените
-
Сохраните и выйдите (
Ctrl + O
,Enter
,Ctrl + X
).
Windows
-
Откройте приложение WireGuard.
-
Добавьте новый туннель:
- Нажмите "Add Tunnel" > "Add empty tunnel..."
-
Вставьте конфигурацию клиента:
[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>
на приватный ключ клиента. - Замените
<server_publickey>
на публичный ключ сервера. - Замените
<server_public_ip>
на публичный IP-адрес сервера.
- Замените
-
Сохраните и активируйте туннель.
iOS/Android
-
Откройте приложение WireGuard.
-
Добавьте новый туннель:
- Нажмите "+" > "Create from scratch" или "Import from file/device."
-
Введите конфигурацию клиента:
[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>
на приватный ключ клиента. - Замените
<server_publickey>
на публичный ключ сервера. - Замените
<server_public_ip>
на публичный IP-адрес сервера.
- Замените
-
Сохраните и активируйте туннель.
Брандмауэр и Маршрутизация
На Сервере
-
Настройте правила 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
-
Сохраните правила iptables для сохранения после перезагрузки:
sudo iptables-save | sudo tee /etc/iptables/iptables.rules sudo systemctl enable iptables sudo systemctl start iptables
-
Включите 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
На Сервере и Linux Клиенте
-
Запустите и включите WireGuard:
sudo systemctl start wg-quick@wg0 sudo systemctl enable wg-quick@wg0
На Windows, iOS, Android
-
Активируйте туннель:
- Откройте приложение WireGuard.
- Включите переключатель рядом с вашим настроенным туннелем.
Проверка
-
Проверьте статус WireGuard:
sudo wg show
- Убедитесь, что интерфейс
wg0
активен и пэры перечислены.
- Убедитесь, что интерфейс
-
Тестирование подключения:
-
Пинг сервера с клиента:
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
).
- Если разрешение DNS не работает, попробуйте другие DNS-серверы (например,
Частые Проблемы и Решения
Причина: Неправильно Настроенные Публичные Ключи
Проблема: Клиент использовал приватный ключ сервера вместо его публичного ключа, что мешало корректной аутентификации.
Решение:
- Убедитесь, что
[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.