- How to Set Up WireGuard VPN Client on Ubuntu Desktop
- Установка и настройка сервера WireGuard VPN на Linux Ubuntu
- Подготовка системы
- 1. Обновление списка пакетов.
- 2. Настройка брандмауэра
- Установка и настройка сервера
- Подключение клиента
- 1. Ключ на сервере
- 2. Настройка клиента
- Windows
- Linux
- 3. Добавление клиента на сервере
- 4. Проверка работы
- Маршруты через сервер VPN
- На сервере
- На клиенте
- Как установить WireGuard VPN Client на Ubuntu Linux
- Установка клиентского приложения WireGuard на Ubuntu
- Генерация закрытого и открытого ключей
- Запуск WireGuard
How to Set Up WireGuard VPN Client on Ubuntu Desktop
Info You may see over the web that you should install WireGuard with ppa, like: $ sudo add-apt-repository ppa:wireguard/wireguard This is an outdated method and as we seen in https://launchpad.net/%7Ewireguard:
This formerly was responsible for producing a PPA for WireGuard on Ubuntu. That functionality has now been folded into Ubuntu itself, so our old PPA has been removed. Simply run apt install wireguard on all Ubuntus ≥ 16.04
2. Configure
2.0. Keys
WireGuard ships with two command-line tools: wg and wg-quick that allow you to configure and manage the WireGuard. Run the following command to generate the public and private keys:
$ sudo mkdir -p /etc/wireguard/clients $ wg genkey | sudo tee /etc/wireguard/clients/desktop.key | wg pubkey | sudo tee /etc/wireguard/clients/desktop.key.pub
This places our keys under our /etc/wireguard/clients directory that we just created. As usual, DO NOT share your private key with anyone else, otherwise your VPN will be compromised. You can view these files with cat :
$ cat /etc/wireguard/clients/desktop.key $ cat /etc/wireguard/clients/desktop.key.pub
2.1. dekstop.conf File
$ sudoedit /etc/wireguard/wg0.conf
[Interface] PrivateKey = DESKTOP_CLIENT_PRIVATE_KEY Address = 10.0.0.2/24 [Peer] PublicKey = YOUR_SERVER_PUBLIC_KEY Endpoint = YOUR_SERVER_IP_ADDRESS:51820 AllowedIPs = 0.0.0.0/0
2.2. Add Desktop Client to Server
The last configuration step is to add your dekstip client’s public key and IP address to your server:
$ sudo wg set wg0 peer DESKTOP_CLIENT_PUBLIC_KEY allowed-ips 10.0.0.2
3. Start WireGuard
3.0. wg up
When everything done above, bring the wg0 interface up using the attributes specified in the configuration file:
Now you should be connected to your Ubuntu VPN server, and the traffic from your client machine should be routed through it. You can check the connection with:
interface: wg0 public key: HFqTSN2SE6LvvEU/xV3eJ0KArQEkTx1mYZpAjRtAjwE= private key: (hidden) listening port: 22870 fwmark: 0xca6c peer: 8Mg3Vgw+QduVhJaLERXQbyrPL1/nUWa27Ly8ZVTGTHs= endpoint: XXX.XXX.XXX.XXX:51820 allowed ips: 0.0.0.0/0 latest handshake: 1 minute, 18 seconds ago transfer: 67.58 KiB received, 170.36 KiB sent
3.1. Start at Boot
4. Test WireGuard
You can now check you IP searching on the browser what is my ip or just use curl to achieve that from your cli :
Установка и настройка сервера WireGuard VPN на Linux Ubuntu
Обновлено: 25.11.2022 Опубликовано: 30.09.2022
WireGuard позиционируется как современное решение по организации быстрого VPN. Рассмотрим процесс его настройки на Linux Ubuntu.
Подготовка системы
1. Обновление списка пакетов.
В дистрибутивах Linux на основе deb важно держать в актуальном состоянии кэш репозиториев. Выполним команду:
2. Настройка брандмауэра
В системах на основе deb, по умолчанию, брандмауэр разрешает все пакеты. Но если в нашей системе настроена защита, то нам нужно открыть UDP-порт для WireGuard. В различных источниках фигурирует разный номер, но на официальном сайте используют 51820:
Установка и настройка сервера
* оба ключа попадут в каталог /etc/wireguard. Выводим на экран содержимое закрытого ключа:
[Interface]
PrivateKey = 2Hl2UlyD/xFrDyzIBEkfPa27yKllp0O+7e9023u8sHk=
Address = 176.16.10.1/24
ListenPort = 51820
SaveConfig = false
- PrivateKey — закрытый ключ, который мы создали и смотрели командой cat.
- Address — адрес в сети VPN. Можно использовать любую подсеть, но стоит ограничиться выбором из зарезервированных диапазонов для локальных сетей. Также данная подсеть не должна пересекаться с используемыми диапазонами.
- ListenPort — порт, на котором будет работать наш сервер.
- SaveConfig — сохранять или нет конфигурацию из текущего состояния при завершении работы. По факту, если выставить в true, то перезапуск сервиса не принимает новые изменения в конфигурационном файле, а возвращает старые настройки. Для внесения изменений нужно будет остановить службу, внести изменения, запустить службу. Мне это показалось не совсем удобным.
Разрешаем автозапуск сервиса:
systemctl enable wg-quick@server —now
* обратите внимание на то, что идет после собаки (server). Это имя конфигурационного файла. При желании, мы можем создать много таких файлов и запустить несколько VPN серверов на разных портах.
Убедимся, что наш сервер начал слушать на заданном порту:
Сервер готов принимать запросы.
Подключение клиента
Для примера мы установим и настроим клиентов для Windows и Linux. Настройка будет выполнена в четыре шага:
- Смотрим ключ на сервере.
- Настраиваем клиента.
- Настраиваем сервер.
- Проверяем подключение.
1. Ключ на сервере
На сервере смотрим публичный ключ, который мы генерировали в начале инструкции:
Фиксируем — его мы будем использовать для настройки клиентов.
2. Настройка клиента
В зависимости от вашей системы, выбираем один из вариантов настройки.
Windows
Заходим на официальный сайт, страницу загрузки. Скачиваем клиента на Windows:
Запускаем скачанный файл и выполняем установку. Она очень простая.
После запустится клиент — в нижней части окна добавляем пустой туннель:
Задаем название для клиента, также фиксируем публичный ключ — он нам будет нужен дальше:
В окне с редактором вносим свои данные:
[Interface]
PrivateKey = qD/VCIDLAWGAIl2G9wUjL+MAobks5PpDmzqQcuqqQWc=
Address = 176.16.10.10/24
[Peer]
PublicKey = Z5E6sWmAX9JqSBpO2frcIZ9vkkm/V+8xgP7ZxWXnOCs=
AllowedIPs = 176.16.10.0/24
Endpoint = 1.1.1.1:51820
PersistentKeepalive = 15
- [Interface] — блок настроек для клиента.
- PrivateKey — приватный ключ клиента. Он автоматически будет сгенерирован
- Address — IP-адрес в сети VPN, который будет назначен клиенту.
- [Peer] — настройки для соединения с сервером.
- PublicKey — публичный ключ сервера. Его мы смотрели в самом начале данного раздела.
- AllowedIPs — маршрут, разрешенный для клиента.
- Endpoint — адрес и порт сервера, к которому мы будем подключаться клиентом.
- PersistentKeepalive — интервал между проверками доступности соединения.
Linux
Установка и настройка, отчасти, похожа на то, что мы делали на сервере. Для начала, устанавливаем wireguard. В зависимости от дистрибутива Linux, команды будут отличаться, например:
б) для Fedora или CentOS 7:
yum install wireguard-tools
* все варианты команд для установки можно посмотреть на официальном сайте.
После установки необходимо сгенерировать ключи и выполнить настройку.
wg genkey | tee /etc/wireguard/private.key | wg pubkey > /etc/wireguard/public.key
* оба ключа попадут в каталог /etc/wireguard.
Смотрим содержимое файлов:
Фиксируем значения. Для настройки клиента нам нужно содержимое приватного ключа, для настройки сервера — публичного.
Создаем конфигурационный файл для сервера:
[Interface]
PrivateKey = qD/VCIDLAWGAIl2G9wUjL+MAobks5PpDmzqQcuqqQWc=
Address = 176.16.10.10/24
[Peer]
PublicKey = Z5E6sWmAX9JqSBpO2frcIZ9vkkm/V+8xgP7ZxWXnOCs=
AllowedIPs = 176.16.10.0/24
Endpoint = 1.1.1.1:51820
PersistentKeepalive = 15
- [Interface] — блок настроек для клиента.
- PrivateKey — приватный ключ клиента. Его мы сгенерировали.
- Address — IP-адрес в сети VPN, который будет назначен клиенту.
- [Peer] — настройки для соединения с сервером.
- PublicKey — публичный ключ сервера. Его мы смотрели в самом начале данного раздела.
- AllowedIPs — маршрут, разрешенный для клиента.
- Endpoint — адрес и порт сервера, к которому мы будем подключаться клиентом.
- PersistentKeepalive — интервал между проверками доступности соединения.
Разрешим автозапуск сервиса:
systemctl enable wg-quick@client
* как в случае с сервером, то, что идет после собаки (client) является именем конфигурационного файла. При желании, мы можем создать много таких файлов и запустить несколько VPN подключений к разным серверам.
3. Добавление клиента на сервере
Откроем конфигурационный файл для нашего сервера:
Добавим пир для нашего нового клиента:
.
[Peer]
PublicKey = 6sDdWDSdYcoBAC7EVKg+z8Gcd+F5OQDkKBELf9MEOTY=
AllowedIPs = 176.16.10.10/32
* где PublicKey — публичный ключ, который мы видели при настройке клиента; AllowedIPs — разрешенный адрес для клиента (который мы ему выдали).
** для каждого клиента, который будет подключаться к серверу мы должны создать свой блок настроек [Peer].
systemctl restart wg-quick@server
4. Проверка работы
Возвращаемся к настройкам клиента. Можно подключаться.
а) На Windows:
Мы должны увидеть измененный статус на Подключен:
б) На Linux запускаем сервис:
systemctl start wg-quick@client
Мы должны подключиться к серверу.
Для проверки соединения можно отправить пинг на сервер (в нашем примере его IP 176.16.10.1):
Базово мы разобрались с настройкой WireGuard.
Маршруты через сервер VPN
Как правило, VPN используется в качестве транзита в другие подсети. Рассмотрим, как теперь настроить наш сервер для работы в качестве маршрутизатора. Настройки выполняются как на сервере, так и клиенте.
Мы предположим, что наш сервер должен пускать клиентов в сеть 192.168.100.0/24.
На сервере
Открываем на редактирование sysctl.conf:
Добавляем в него следующую строчку:
Применяем настройки sysctl:
Добавляем правило в брандмауэр:
iptables -t nat -I POSTROUTING -o ens18 -j MASQUERADE
* в данном примере идет расчет на то, что наша сеть 192.168.100.0/24 доступна для сервера через интерфейс ens18. Вы должны заменить значение на свое.
Наш сервер настроен в качестве маршрутизатора в сеть 192.168.100.0/24. Переходим к клиенту.
На клиенте
В конфигурации клиента редактируем опцию AllowedIPs в блоке [Peer]:
[Peer]
.
AllowedIPs = 176.16.10.0/24, 192.168.100.0/24
.
* обратите внимание, что мы добавили подсеть 192.168.100.0/24 — это приведет к тому, что при подключении клиента к серверу будет прописываться маршрут в данную подсеть через сервер VPN.
А если мы хотим, чтобы весь траффик шел через VPN, задаем значение для AllowedIPs:
Готово. Перезапускаем клиента и пробуем получить доступ к ресурсам в нужной сети.
Как установить WireGuard VPN Client на Ubuntu Linux
WireGuard — это приложение которое позволяет настроить безопасную виртуальную частную сеть (VPN), известное своей простотой и удобством использования. Оно использует проверенные криптографические протоколы и алгоритмы для защиты данных. Изначально разработанное для ядра Linux, оно может быть развернуто на Windows, macOS, BSD, iOS и Android.
В этой настройке клиента WireGuard vpn используется дистрибутив линукса — Ubuntu 20.04.
Установка клиентского приложения WireGuard на Ubuntu
Установка WireGuard клиента происходит так же, как и на стороне сервера.
Войдите по SSH на Linux сервер, после входа в систему проверьте, обновлена ли машина, выполнив следующую команду:
Теперь установите WireGuard, выполнив следующую команду:
Генерация закрытого и открытого ключей
WireGuard работает путем шифрования соединения с помощью пары криптографических ключей. Пара ключей используется путем передачи открытого ключа другой стороне, которая затем может зашифровать свое сообщение таким образом, что оно может быть расшифровано только с помощью соответствующего закрытого ключа. Для обеспечения безопасности двусторонней связи каждая сторона должна иметь собственные закрытый и открытый ключи, так как каждая пара обеспечивает только односторонний обмен сообщениями.
Сгенерируйте пару открытого и закрытого ключей клиента, для этого выполните следующую команду:
После этого создайте файл конфигурации клиента, в следующем каталоге:
[Interface]
PrivateKey =
Address = 10.0.0.1/24
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 51820
[Peer]
PublicKey =
AllowedIPs = 10.0.0.2/32
Примечания: В строку publickey вставьте публичный ключ сервера, который мы сгенерировали в предыдущей статье, а в private key вставьте закрытый ключ клиента.
Запуск WireGuard
Для запуска соединения введите следующую команду:
Теперь клиент может общаться с сервером, можно пропинговать сервер с клиента командой
Чтобы узнать статус соединения, выполните следующую команду:
Вы получите все детали соединения, как показано ниже
Поздравляю! Теперь ваш клиентский компьютер имеет доступ к VPN сети.