Консультация по продукту 1cloud

Установка Wireguard VPN на VPS

В этом мануале — пошаговая инструкция по установке, настройке и подключению к WireGuard (WG) VPN. Для работы WG вам понадобится любой виртуальный сервер под управлением Linux. Мы выбрали виртуальный сервер на базе Open source в минимальной конфигурации под управлением Ubuntu 20.

Обратите внимание, в инструкции для работы с текстовыми файлами используется текстовый редактор VIM. Если вы не знакомы с ним — настоятельно рекомендуем сначала прочитать этот краткий мануал.

Работа по установке, настройке и подключению к WG серверу разделена на два этапа:

  • работа по настройке WG на удаленном сервере;
  • работа на клиентских машинах по подключению к WG серверу.

Работа на удаленном сервере

Подключимся по SSH к удалённому серверу, на котором хотим развернуть VPN. В нашем случае, это сервер на базе Open source, находящийся в Таллине: ssh <имя пользователя>@. После успешного подключения приступаем к настройке системы и установки WG сервера.

Установка, настройка и запуск WG VPN сервера:

  1. Обновим apt-репозиторий: sudo apt update -y
  2. Устанавим сам WG: sudo apt install -y wireguard
  3. Перейдём в директорию с WG:
    cd /etc/wireguard/ — в этой директории будут происходить все действия
  4. Теперь нужно сгенерировать с помощью встроенных команд WiG пару ключей для подключения к VPN-серверу:
    wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey

    Что тут происходит?
    Команда wg genkey генерирует секретный ключ, затем с помощью Linux-оператора пайп — «|» передаёт его команде tee, которая сохраняет ключ в файл /etc/wireguard/privatekey и передаёт его на вход команде wg pubkey, которая на основе полученного секретного ключа, генерирует публичный ключ и передаёт его через пайп другой команде tee, которая, опять же, сохраняет полученный ключ в файл /etc/wireguard/publickey и печатает его в терминале.
  5. Убедимся с помощью команды cat в наличии ключей в файлах: cat publickey
    cat privatekey
  6. Теперь с помощью текстового редактора VIM создадим конфигурационный файл нашего VPN-сервера: sudo vim wg0.conf
  7. Внесём в конфиг следующее: [Interface]
    PrivateKey = <privatekey> # Приватный ключ из файла privatekey.
    Address = 10.0.0.1/24 #Адрес VPN-сервера в частной сети.
    ListenPort = 51830 #Порт, который будет слушать VPN-сервер.
    PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE #Команды, который будут выполнять при поднятии сервера
    PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE #Команды, который будут выполнять при выключении сервера
    Тут нужно только скопировать приватный ключ из файла privatekey и вставить его вместо <privatekey>. Остальное менять не надо.
  8. Теперь чтобы прокидывался интернет трафик через VPN-сервер — настроим IP-форвардинг следующей командой: echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
  9. Убедимся в применении новых правил командой: sysctl -p Команда должна вернуть вывод следующего вида:
    net.ipv4.ip_forward = 1
  10. Настроим автоматический запуск WG сервера после перезагрузки или выключения виртуального сервера: systemctl enable wg-quick@wg0.service. Команда должна вернуть следующее сообщение:
    Created symlink /etc/systemd/system/multi-user.target.wants/wg-quick@wg0.service → /lib/systemd/system/wg-quick@.service.
  11. Теперь запустим VPN-сервер: systemctl start wg-quick@wg0.service
  12. Проверим статус WG сервера: systemctl status wg-quick@wg0.service
    В отчёте должен стоять статус active!
    WireGuard active

На этом шаге WireGuard сервер установлен, сконфигурирован и запущен. Переходим к созданию конфигурации для подключения клиентов.

Настройка подключения клиентов к WireGuard серверу:

  1. Сначала нужно создать пары ключей для подключения клиента. Если у вас будет подключаться несколько клиентов, старайтесь давать ключам осмысленные названия, чтобы потом в них не запутаться. Воспользуемся уже хорошо нам знакомой связкой команд:
    wg genkey | tee /etc/WireGuard/katkov_privatekey | wg pubkey | tee /etc/WireGuard/katkov_publickey
  2. Теперь в директории WireGuard сервера находятся следующие файлы: .
    ├── katkov_privatekey — частный ключ клиента
    ├── katkov_publickey — публичный ключ клиента
    ├── privatekey — частный ключ WG сервера
    ├── publickey — публичный ключ WG сервера
    └── wg0.conf — конфигурационный файл WG сервера
  3. У нас всё готово для добавления нового клиента в конфигурационный файл wg0.conf. Откроем его: vim /etc/WireGuard/wg0.conf
  4. Добавим в конец файла новую секцию:
    [Peer]
    PublicKey = <katkov_publickey> #Публичный ключ клиента
    AllowedIPs = 10.0.0.2/32 #IP-адрес в частной сети, который будет присвоен клиенту.
  5. После добавления секции с данным для подключения нового клиента WG сервер нужно перезагрузить и проверить его статус командой systemctl: systemctl restart wg-quick@wg0
    systemctl status wg-quick@wg0
    Вывод команды systemctl status wg-quick@wg0 должен вернуть следующий вывод: WireGuard active

Теперь можно переходить к настройке клиентской машины.

Работа на клиентской машине

Мы будем подключать к WG серверу с клиентской машины под управлением Windows 11. Вне зависимости от версии Windows шаги по подключению будут одинаковы.

Рекомендуем не закрыть SSH-сессию с удалённым сервером, так как мы будем часто обращаться к ключам, расположенным в директории /etc/WireGuard/.

  1. Скачиваем клиент под нужную ОС и устанавливаем его: Windows, macOSAndroid, iOS.
  2. После установки WG клиента в любом текстовом редакторе создаем конфигурационный файл для подключения к WG серверу. Месторасположения файла значения не имеет. Мы создадим файл wgvpn_connect.conf прямо на диске D и запишем в него следующие: [Interface]
    PrivateKey = <CLIENT-PRIVATE-KEY> #Клиентский приватный ключ. В нашем случае katkov_privetkey.
    Address = 10.0.0.2/32 #IP-адрес клиента, который настроен на WG сервере
    DNS = 8.8.8.8 #DNS, который будет использовать при подключении

    [Peer]
    PublicKey = <SERVER-PUBKEY> #Публичный ключ сервера
    Endpoint = <SERVER-IP>:51830 #IP адрес удалённого сервера и порт прослушивания
    AllowedIPs = 0.0.0.0/0 #Если указаны все нули — весь трафик клиента будет проходить через WG сервер
    PersistentKeepalive = 20 #Интервал проверки соединения между клиентом и сервером (сек).

    Узнать IP адрес удаленного сервера можно через Панель управления, либо командой curl ifconfig.me.

  3. Загрузим полученный конфигурационный файл в WG-клиент. На Windows это делается так:
  4. После успешного подключения к WG серверу в статусах подключения должны быть зеленые индикаторы, а переданных трафик должен постоянно увеличивать:

Убедиться в том, что вы выходите в интернет под другим IP, в нашем случае, это IP адрес удаленного сервера в Таллине, можно с помощью сайта ifconfig.me.

IP-адрес удаленного сервера и IP-адрес клиента, распознаваемый сайтом ifconfig.me должны совпадать:

Настройка частой WireGuard VPN-сети окончена. Для подключения других клиентов к VPN-сети нужно сгенерировать новые пары ключей связкой команд wg genkey и wg pubkey, добавить в конфигурационный файл WG ещё секций с клиентами, указать им IP-адреса и создать клиентские конфигурационные файлы на подключаемых устройствах.


Средняя оценка: 4,8, всего оценок: 21