Главная > Технологии > Протокол Установка и настройка Wireguard на примере Debian 11![]()
УстановкаПеред установкой обновимся (желательно): # sudo apt update && sudo apt upgrade Добавим репу и обновим индекс: # sudo sh -c "echo 'deb http://deb.debian.org/debian $(lsb_release -cs)-backports main contrib non-free' > /etc/apt/sources.list.d/$(lsb_release -cs)-backports.list" && sudo apt update Установим wireguard: # sudo apt install wireguard Проверим, как все прошло: # sudo modprobe wireguard Если ничего не выводит - значит все хорошо. Если будет ошибка на подобии этой: # modprobe: FATAL: Module wireguard not found in directory /lib/modules/4.19.0-12-686 Тогда доставим заголовки: # sudo apt install linux-headers-$(uname --kernel-release) Настройка системыДля того, чтобы пакеты перенаправлялись туда, куда надо, нужно разрешить перенаправление сетевых пакетов на уровне ядра. Для этого откройте файл /etc/sysctl.conf и добавьте в конец такие строки: # sudo nano /etc/sysctl.conf # net.ipv4.ip_forward = 1 net.ipv6.conf.default.forwarding = 1 net.ipv6.conf.all.forwarding = 1 net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.proxy_arp = 0 net.ipv4.conf.default.send_redirects = 1 net.ipv4.conf.all.send_redirects = 0 Затем необходимо выполнить команду sysctl -p чтобы система перечитала конфигурацию: # sudo sysctl -p
Генерация ключей сервераДля сервера надо создать приватный и публичный ключ. Эти ключи, потом надо будет записать в конфигурационный файл сервера и клиента, сами файлы ключей вам не нужны, поэтому можете создавать их где хотите, например, в домашней папке: # wg genkey | tee server.private.key && wg pubkey < server.private.key > server.public.key Генерация ключей клиентаАналогичным образом создаём ключи для клиента. Команда та же: # wg genkey | sudo tee client.private.key | wg pubkey | sudo tee client.public.key
Настройка сервераНаш конфигурационный файл сервера будет находится по пути /etc/wireguard/wg0.conf и будет выглядеть следующим образом: # sudo nano /etc/wireguard/wg0.conf # [Interface] # Server address inside wg network Address = 10.0.0.1/24,fd42:42:42::1/64 ListenPort = 63665 # Server private key PrivateKey = OFCMMpdPYUTndTkTuCDCZDg6uYrzGcjcL6Tg4aAp5kU= PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o enp0s8 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o enp0s8 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o enp0s8 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o enp0s8 -j MASQUERADE [Peer] # Client public key PublicKey = 2g8MWhxN1QGLAfGwEnxHG38/krdcPbgjo87zSKurP1g= # Client address inside wg network AllowedIPs = 10.0.0.2/32,fd42:42:42::2/128
Файл разделен на две секции:
В данном случае мы настраиваем сервер WireGuard для работы с IPv4 и IPv6 одновременно, вот, что значат основные параметры:
Секции Peer содержат настройки клиентов, которые могут подключится к серверу:
Теперь можно переходить к созданию конфигурационного файла непосредственно для клиента.
Для запуска сервера используйте такую команду: # sudo wg-quick up wg0 Для остановки выполняем: # sudo wg-quick down wg0 С помощью systemd можно настроить автозагрузку сервиса: # sudo systemctl enable wg-quick@wg0
Настройка клиентаКонфигурационный файл клиента будет выглядеть примерно так: # nano client.conf # [Interface] # Client private key PrivateKey = GMJXo+phyNS/kodizn353D2MN8bPNOSqJEhQ83caKkY= # Client IP address inside wg network Address = 10.0.0.2/24,fd42:42:42::2/64 DNS = 8.8.8.8,8.8.4.4 [Peer] # Server public key PublicKey = xxIV2fvMp7J2H1GxVuQcfVi2TJ0lQ/2K8UXSKC/byhM= ## Server public address Endpoint = 192.168.56.101:63665 # Routing to wg network AllowedIPs = 0.0.0.0/0,::/0 # If this computer is behind a NAT, add line: # PersistentKeepAlive = 25
Обратите внимание, что все ключи мы генерируем на сервере, а затем уже скидываем конфигурационный файл клиента на компьютер, который надо подключить к сети. Рассмотрим подробнее что за что отвечает:
После того, как вы внесли все изменения, скопируйте файл на компьютер клиента под именем /etc/wireguard/wg0.conf.
Ставим WireGuard на клиенте, копируем конфигурационный файл клиента в /etc/wireguard/wg0.conf. Подключение выполняется аналогично запуску сервера: # sudo wg-quick up wg0
После этого вы можете посмотреть статистику по подключению с помощью команды: # sudo wg show Проверка работыЧтобы убедиться что всё работает можно выполнить ping до сервера WireGuard. Он должен быть доступен: # ping 10.0.0.1 Если пакеты идут, значит всё хорошо. Если же нет, надо внимательно проверять инструкцию и смотреть что сделано не так. У WireGuard здесь есть проблемы. У программы нет подробных логов, где можно было бы посмотреть какая ошибка произошла, а причин проблем может быть очень много. Чаще всего - это несоответствующие ключи, закрытый порт или неверный адрес сервера. Доступность порта на сервере можно проверить с помощью утилиты nc. Надо запускать на клиентской машине: # nc -z -v -u 192.168.56.101 63665 Также можно убедится, что пакеты WireGuard доходят к серверу, для этого используйте tcpdump на сервере: # tcpdump -n -i enp0s8 port 63665 Вместо enp0ss вам надо прописать имя своего сетевого интерфейса. Использован материал: Главная > Технологии > Протокол |