Собственный VPN на WireGuard
WireGuard — это протокол VPN, встроенный в ядро Linux, который позволяет поднять собственный сервер VPN несколькими командами. Собственный VPN отправляет ваш трафик в сеть через IP-адрес, который вы контролируете. Но анонимным он вас не делает: сайты, которые вы посещаете, видят IP-адрес вашего сервера.
В статье рассказано, для чего хорош собственный VPN и что он не решает, как настроить его вручную и как проще — через веб-интерфейс.
Для чего нужен собственный VPN?
- Общедоступный Wi-Fi: в сети кафе или отеля ваш трафик идёт до вашего сервера в зашифрованном виде.
- Турецкий IP за границей: поскольку сервер находится в Стамбуле, находясь за границей, вы можете выходить в сеть с турецким IP-адресом.
- Доступ к частной сети: вы получаете доступ к устройствам, подключённым к тому же VPN, и к службам на сервере так, как будто все вы находитесь в одной локальной сети.
- Постоянный адрес выхода: даже если ваш домашний IP меняется, выход вашего VPN остаётся прежним.
Чего он не решает?
- Он не делает вас анонимным. Сайты видят IP-адрес вашего сервера, а этот адрес связан с вашей учётной записью.
- Некоторые сервисы блокируют IP-адреса дата-центров. Не считайте, что любой сервис откроется через ваш VPN.
- Он не даёт выходов во многих странах. Ваш сервер находится в одном месте, в Seturack это Стамбул.
- Он не предназначен для предоставления интернета другим людям. Если вы даёте другим доступ в интернет через свой сервер, обязанности по Закону № 5651 лежат на вас согласно договору об оказании услуг. Используйте VPN в основном для своих устройств и прочитайте договор об оказании услуг, прежде чем давать доступ кому-то ещё.
Почему WireGuard нравится людям
- Он вошёл в ядро Linux с версии 5.6, поэтому в современных дистрибутивах отдельный драйвер устанавливать не нужно.
- Паролей нет. Каждая сторона распознаётся по собственной паре из закрытого и открытого ключа.
- Конфигурация короткая и умещается в одном файле.
- Используется UDP. Чаще всего в примерах и инструментах встречается порт 51820.
Ручная настройка (Ubuntu, от имени root)
- Установите пакет:
apt install wireguard - Создайте пару ключей сервера:
umask 077 && wg genkey | tee privatekey | wg pubkey > publickey - Пусть каждое клиентское устройство создаст свой ключ. Приложение WireGuard на телефонах и компьютерах делает это само, а вам нужен только его открытый ключ.
- Запишите
/etc/wireguard/wg0.confпо таблице ниже. - Включите пересылку IP:
echo 'net.ipv4.ip_forward=1' | tee /etc/sysctl.d/70-wireguard.conf, а затемsysctl --system - Откройте порт в брандмауэре:
ufw allow 51820/udp - Запустите:
systemctl enable --now wg-quick@wg0
| Раздел | Строка | Для чего нужен |
|---|---|---|
| [Interface] | Address = 10.8.0.1/24 | Адрес сервера внутри сети VPN |
| [Interface] | ListenPort = 51820 | Порт UDP, который он слушает |
| [Interface] | PrivateKey = содержимое файла privatekey | Закрытый ключ сервера. Никогда никому его не передавайте |
| [Interface] | PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE | Выпускает трафик клиентов в интернет. Замените eth0 на имя сетевого интерфейса вашего сервера, его показывает ip route show default |
| [Interface] | PostDown = те же три правила, но с -D вместо -A | Удаляет правила, когда VPN останавливается |
| [Peer] | PublicKey = открытый ключ клиента | Определяет этого клиента |
| [Peer] | AllowedIPs = 10.8.0.2/32 | Адрес в сети VPN, который вы выдаёте клиенту |
Сначала запишите в файл строки [Interface], затем строки [Peer]. Для каждого клиента нужен свой блок [Peer].
Подключение клиента
На клиенте в разделе [Interface] укажите свой закрытый ключ, строку Address = 10.8.0.2/24 и адрес DNS. В разделе [Peer] укажите открытый ключ сервера, строку Endpoint = SERVER_IP:51820 и строку AllowedIPs = 0.0.0.0/0. Последнее значение направляет весь трафик IPv4 через туннель. Если нужен доступ только к сети VPN, напишите вместо него 10.8.0.0/24. Для устройств за NAT или брандмауэром в официальной документации советуют PersistentKeepalive = 25.
Выполните на сервере wg show. Если клиент подключился, вы увидите строку «latest handshake».
Весь трафик или только часть?
Значение AllowedIPs на клиенте определяет, какой трафик попадает в туннель. 0.0.0.0/0 направляет в него весь трафик IPv4, но не IPv6. Если у вашего устройства есть IPv6, этот трафик может идти мимо туннеля. С 0.0.0.0/0, ::/0 IPv6 тоже попадает в туннель и отбрасывается в нём, потому что сервер не передаёт IPv6, так что утечки нет. Если нужен доступ только к определённым сетям, например 10.8.0.0/24, укажите только их. Это называется раздельным туннелированием (split tunneling), а остальной трафик идёт обычным путём. Для удалённого доступа к сети раздельного туннелирования часто достаточно. Остальной трафик не проходит через туннель, поэтому не замедляется.
Способ проще: wg-easy
wg-easy — это инструмент, который объединяет сервер WireGuard и управление клиентами в веб-интерфейсе. Он добавляет и удаляет клиентов и показывает QR-код для телефонов. Устанавливается через Docker Compose и использует 51820/UDP. Если вы хотите безопасно открыть экран администратора в интернет, рекомендуется обратный прокси.
Готовый сервер WireGuard в Seturack использует wg-easy и запускается примерно за 4 минуты. В панели вы увидите адрес админ-панели и пароль. Туннель передаёт только IPv4. Создавайте отдельного клиента для каждого устройства, а если потеряете устройство, удаляйте только его клиента. Шаги подключения описаны в справочной статье о WireGuard.
Настройка устройств
У WireGuard есть официальные приложения для Windows, macOS, Android и iOS. В Linux достаточно пакета. На телефоне конфигурацию добавляют по QR-коду, на компьютере — импортом файла конфигурации. Включать и выключать туннель можно из приложения. Пока туннель включён, ваш интернет-трафик выходит в сеть через ваш сервер.
Четыре небольших правила безопасности
- Разрешите читать файл конфигурации только root:
chmod 600 /etc/wireguard/wg0.conf - Никому не отправляйте свой закрытый ключ. Делиться можно только открытым.
- Удалите блок
[Peer]устройства, которое вы потеряли или которому больше не хотите разрешать доступ. - Поддерживайте сервер в актуальном состоянии. Обновления операционной системы и приложений после настройки — на вас.
Поскольку трафик вашего VPN проходит через сервер, важен и объём трафика. В цену Seturack входит безлимитный трафик.
Если не подключается
Некоторые сети блокируют трафик UDP. Попробуйте другую сеть, например мобильный интернет на телефоне. Проверьте также, что порт 51820/UDP открыт в брандмауэре.
Если хотите начать с готовой установки, загляните на страницу VPN WireGuard.
Комментарии0
Комментариев пока нет
Поделитесь своим мнением первым.
Пожалуйста, войдите или зарегистрируйтесь, чтобы оставить комментарий.