VPN сервер по протоколу wireguard
после создания VPS к вам на почту придут данные для входа на сервер по протоколу SSH. Для входа нужно будет знать пароль суперпользователя root, а также ip адрес сервера.
Итак, для примера, я имею следующие данные:
логин: root
пароль: 12345678
Мы будет работать с клиентского хоста, который тоже в OS GNU/Linux, допустим пусть это будет дистрибутив. И у нас уже должен быть настроен доступ к серверу по SSH. (Подробнее про настройку подключения по SSH).
Заходим на сервер.
Внимание если у вас успешно настроен вход по ssh, то далее идут команды запускаемые уже на сервере. Так, как мы сразу логинемся под супер-пользователем root, приставка sudo в командах нам не потребуется.
Обновляем сервер:
Устанавливаем пакет wireguard:
Генерируем свои ключи WireGuard сервера, с помощью следующих команд в одной строке через пайп | вот так:
Проставляем права на приватный ключ, доступ только для владельца т.е. пользователя root сервера:
Проверим, как у вас называется сетевой интерфейс:
Скорее всего у вас на сервере будет сетевой интерфейс eth0, но возможно и другой, например, ens3 или как-то иначе. Это название интерфейса будет использоваться далее в конфиге /etc/wireguard/wg0.conf, файл которого мы сейчас создадим следующей командой:
☯
Terminal:
⌕
≡
✕
root@111.111.111.111# vim /etc/wireguard/wg0.conf
[Interface] PrivateKey = privatekey Address = 10.0.0.1/24 ListenPort = 51830 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
Если не знаете текстовый редактор vim — откройте файл с nano, он для новичков понятнее в работе.
Обратите внимание — в строках PostUp и PostDown использован как раз сетевой интерфейс eth0. Если у вас другой — замените eth0 на ваш.
Вставляем вместо privatekey содержимое файла /etc/wireguard/privatekey
Настраиваем IP форвардинг:
Включаем systemd демон с wireguard, на сревере с Ubuntu на борту, SystemD работает по умолчанию:
Теперь создаём ключи для клиента, сначала здесь же на самом сервере:
Скопируйте в буфер содержимое файла публичного ключа клиента.
Добавляем в уже созданный конфиг сервера, данные этого клиента, в конце файла сразу после строк конфигураций самого сервера:
☯
Terminal:
⌕
≡
✕
[Interface]
PrivateKey = privatekey
Address = 10.0.0.1/24
ListenPort = 51830
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
[Peer]
PublicKey = ramanzes_publickey
AllowedIPs = 10.0.0.2/32
Вместо ramanzes_publickey — заменяем на содержимое файла /etc/wireguard/ramanzes_publickey
А AllowedIPs
назначаем IP адрес, следующий свободный за адресом сервера. Эту нашу будущую VPN сеть мы установили сами в этом файле выше, назначив адрес серверу.
Перезагружаем systemd сервис с wireguard:
Выводим на экран содержимое файлов которое нам пригодится на следующем шаге.
ВНИМАНИЕ! открываем во второй вкладке терминала, консоль ЛОКАЛЬНОЙ машины, хоста из которого мы сейчас работаем с сервером (например, на ноутбуке).
Создаём на своём хосте текстовый файл с конфигом клиента, по образу и подобию файла настроек сервера... Запомните расположение файла, или пусть он будет просто в корне домашнего каталога пользователя:
Добаваляем следующее содержимое:
☯
Terminal:
⌕
≡
✕
ramanzes@mx:~
$ vim ramanzes_wb.conf
[Interface]
PrivateKey = CLIENT-PRIVATE-KEY
Address = 10.0.0.2/32
DNS = 8.8.8.8
[Peer]
PublicKey = SERVER-PUBKEY
Endpoint = SERVER-IP:51830
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 20
Здесь CLIENT-PRIVATE-KEY заменяем на приватный ключ клиента, то есть содержимое файла /etc/wireguard/ramanzes_privatekey на сервере, из вкладки консоли сервера. А SERVER-PUBKEY заменяем на публичный ключ сервера, то есть на содержимое файла /etc/wireguard/publickey тоже копируем из вкладки терминала на сервере. Ну и SERVER-IP заменяем на IP сервера у меня это 111.111.111.111 как вы помните, у вас свой IP... Сохраняем файл.
Теперь этот файл нужно добвать в клиентский пакет ПО в Wireguard (клиентские пакеты тоже есть для всех операционных систем, в том числе мобильных) — и жмём в клиенте кнопку подключения.
клиент на MX Linux устанавливаем так:
Сначала вам нужно обновить OS и установить необходимые пакеты.
Пожалуйста, выполните следующие команды одну за другой и подтвердите обновление и установку новых пакетов, нажав «Y» при появлении запроса:
Выполняйте следующие команды по одной, чтобы загрузить исходный код из GIT репозитория скомпилировать и установить.
Теперь открываем настройки сети, зависит от с графической оболочки у меня например это Plasma KDE.
Найдите раздел VPN и нажмите кнопку «+», чтобы начать создавать новую конфигурацию VPN. Нажмите на кнопку "Импорт из файла...". Загрузите конфигурационный файл WireGuard (файл ramanzes_wb.conf) Нажмите переключатель рядом с именем VPN-соединения, чтобы начать подключение.
в итоге, на сервере можно смотреть статистику подключений всех клиентов, удобно когда вы желаете знать сколько их всего сейчас работает в реальном времени:
в консоле сервера выполняем команду
получим примерно вот такой вывод:
☯
Terminal:
⌕
≡
✕
root@111.111.111.111:~ $ wg show $WG_IFACE interface: wg0 public key: dsfasdfDFDSAFSDfasdfasdFASDFDFasdfSDF+wAA= private key: (hidden) listening port: 51830 peer: UjTwjdsSDFASDFDdsfasdfasdfsdfdDD/MjsRtFfic= endpoint: 234.174.234.19:6026 allowed ips: 10.0.0.2/32 latest handshake: 28 seconds ago
Если через графический интерфейс, сетевого менеджера не получается включить службу, то надёжнее в любом дистрибутиве будет выполнять подключение через консоль.
Для этого на хосте-клиенте, скопируем созданный на предыдущих шагах конфигурацию из домашнего каталога файл у меня он назывался ramanzes_wb.conf, в каталог /etc/wireguard. Все пакеты которые были установлены выше, для работы запуска службы через сетевой менеджер, должны быть установлены, на случай если вы сразу перешли к этому разделу без попытки с GUI... Однако если вы здесь после неудачной попытки запустить клиента, в linux через графический интерфейс, то сперва удалите в этом графическом интерфейсе созданную настройку, чтобы они не конфликтовали. И после этого от root пользователя выполняем:
На этом собственно всё. Для запуска соединения введите следующую команду, в качестве аргумента указывая имя файлы конфигурации без расширения..., например в моём случае это было ramanzes_wb:
Чтобы узнать статус соединения, выполните следующую команду:
Чтобы разорвать соединение с сервером VPN, делается по аналогии с запуском только указываем down вместо up:
-
Создано 22.12.2022 08:04:36
-
Roman Sakhno

Комментарии (1):
на сервере должны быть прописаны ДНС root@vm949425:~# cat /etc/resolv.conf # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN # 127.0.0.53 is the systemd-resolved stub resolver. # run "resolvectl status" to see details about the actual nameservers. nameserver 8.8.8.8 nameserver 1.1.1.1 также в конфигах должны быть указаны DNS root@vm:~# cat /etc/wireguard/wg0.conf # Generated by WireguardConfig.com [Interface] Address = 10.x.x.x/24 ListenPort = 51820 PrivateKey = <privkey> DNS = 1.1.1.1, 8.8.8.8 и на клиентских конфигах тоже
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.