WireGuard - VPN нового поколения

Установка, настройка, эксплуатация.

Модератор: ROOT

WireGuard - VPN нового поколения

Сообщение ROOT » 27 мар 2022, 16:36

Оглавление


Темы
 Что за скрипт wireguard-install.sh? 
 Установка WireGuard 
 Дополнительные настройки firewalld 
 Управление конфигурацией 
 Вывод QR-кода 
 Проверка подключения на анонимность 
 Доступ к локальной сети через WireGuard 
Дополнительные материалы
Wake on Lan: Удалённое включение компьютера
OpenVPN: Открытая виртуальная частная сеть
Синхронизация времени
BIND — DNS-сервер
ISCSI — Транспортный протокол для SCSI
QUAGGA — Протоколы динамической маршрутизации
Dnscrypt — Проксирование dns-трафика


 Что за скрипт wireguard-install.sh? 
Скрипт wireguard-install.sh предназначен для автоматизации процесса разворачивания WireGuard, который можно скачать по ссылке с githubusercontent.com
Пробежимся по набору дистрибутивов и функционалу, которые поддерживаются данным скиптом

Поддерживаемые дистрибутивы:
  • Ubuntu >= 16.04
  • Debian 10
  • Fedora
  • CentOS
  • Arch Linux

Основные функции
  • Установка необходимых пакетов, настройка WireGuard и конфигурирование файрволла и параметров системы (sysctl)
  • Добавление в конфигурацию WireGuard настроек для нового пользователя и генерация QR-кода с настройками для подключения
  • Удаление настроек для конкретного пользователя из конфигурации WireGuard
  • деинсталляция WireGuard
Для желающих поблагодарить
SB: 5469 4009 6510 2267
QIWI: +79175241450
Аватар пользователя
ROOT
Администратор
 
Сообщений: 344
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Сообщение ROOT » 09 апр 2022, 11:47

 Установка WireGuard 
Загрузите инсталлятор WireGuard, дайте скрипnу права на выполнение и запустите его. Все действия необходимо выполнять от имени администратора
Код: выделить все
curl -O https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh
chmod +x wireguard-install.sh
./wireguard-install.sh


При установке необходимо выполнить первичную настройку.

  • Введите свой внешний(белый) ip адрес
  • Укажите интерфейс сети
  • Укажите имя нового интерфейса для WireGuard
  • ipv4 WireGuard сервера
  • ipv6 WireGuard сервера
  • Порт WireGuard сервера
  • Два DNS сервера для клиентов

При установке так же добавиться пользователь. Для его настройки требуется указать набор следующих параметров:
  • Имя клиента
  • ipv4 клиента
  • ipv6 клиента
После ответа на вопросы инсталлятора будет создан конфигурационный файл с настройками для клиента в домашнем каталоге пользователя, так же будет выведен сгенерированный QR-код

В итоге после работы скрипта получаем два файла (wg0.conf и params) с настройками WireGuard в каталоге /etc/wireguard, и в домашнем каталоге конфигурацию для клиентов
# > cat /etc/wireguard/wg0.conf
Код: выделить все
[Interface]
Address = 10.55.55.1/24,fd55:55:55::1/64
ListenPort = 50250
PrivateKey = < PRIVATE_KEY >
PostUp = firewall-cmd --add-port 50250/udp && firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.55.55.0/24 masquerade' && firewall-cmd --add-rich-rule='rule family=ipv6 source address=fd55:55:55::0/24 masquerade'
PostDown = firewall-cmd --remove-port 50250/udp && firewall-cmd --remove-rich-rule='rule family=ipv4 source address=10.55.55.0/24 masquerade' && firewall-cmd --remove-rich-rule='rule family=ipv6 source address=fd55:55:55::0/24 masquerade'

### Client notebook
[Peer]
PublicKey = < PUBLIC_KEY >
PresharedKey = < PRESHARED_KEY >
AllowedIPs = 10.55.55.2/32,fd55:55:55::2/128


# > cat /etc/wireguard/params
Код: выделить все
SERVER_PUB_IP=46.175.149.7
SERVER_PUB_NIC=eth0
SERVER_WG_NIC=wg0
SERVER_WG_IPV4=10.55.55.1
SERVER_WG_IPV6=fd55:55:55::1
SERVER_PORT=50250
SERVER_PRIV_KEY=< SERVER_PRIV_KEY >
SERVER_PUB_KEY=< SERVER_PUB_KEY >
CLIENT_DNS_1=208.67.222.222
CLIENT_DNS_2=208.67.220.220

Наличие данного файла проверяется при запуске скрипта и при его наличии считываются переменные. Если файл отсутствует, то начинается процедура установки и настройки WireGuard.
Для желающих поблагодарить
SB: 5469 4009 6510 2267
QIWI: +79175241450
Аватар пользователя
ROOT
Администратор
 
Сообщений: 344
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Сообщение ROOT » 09 апр 2022, 11:49



 Дополнительные настройки firewalld 
В связи с вводом нового параметра параметра - forward, контролирующего пересылку трафика между сетями, нужно включить его.
Код: выделить все
firewall-cmd --add-forward --permanent
firewall-cmd --reload

Для предотвращения обнаружения тоннеля с помощью метода "Двусторонний пинг" рекомендуется отключить возможность отвечать на эхо-запросы с внешнего интерфейса тоннеля
Код: выделить все
firewall-cmd --add-forward --permanent
firewall-cmd --reload
Для желающих поблагодарить
SB: 5469 4009 6510 2267
QIWI: +79175241450
Аватар пользователя
ROOT
Администратор
 
Сообщений: 344
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Сообщение ROOT » 09 апр 2022, 11:50



 Управление конфигурацией 
При последующих попытках запустить скрипт Вы увидите меню из четырёх пунктов и сможете воспользоваться функциями управления пользователями и деинсталляции WireGuard.

Код: выделить все
Welcome to WireGuard-install!
The git repository is available at: https://github.com/angristan/wireguard-install

It looks like WireGuard is already installed.

What do you want to do?
   1) Add a new user
   2) Revoke existing user
   3) Uninstall WireGuard
   4) Exit
Select an option [1-4]:
Для желающих поблагодарить
SB: 5469 4009 6510 2267
QIWI: +79175241450
Аватар пользователя
ROOT
Администратор
 
Сообщений: 344
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Сообщение ROOT » 09 апр 2022, 11:51



 Вывод QR-кода 
Если будет необходимость вновь преобразовывать конфигурацию в QR-код, то воспользуйтесь командой:
Код: выделить все
qrencode -t ansiutf8 -l L < /root/wg0-client-USER.conf

QR.png
Пример QR-кода настроек клиента WireGuard

Если возникает необходимость часто и большое количество конфигураций преобразовывать в QR-кода, то можно воспользоваться следующей функцией:
Код: выделить все
qrcode() {
    if [ "$1" == "" ] || [ ! -e $1 ]; then
        echo "Параметр ошибочный или отсутствует"
        echo "Например, qrcode wg0-client/wg0-client.conf"
    else
        conf=$1
        qrencode -t ansiutf8 -l L < $conf
    fi
}

Код этой функции добавляем в ~/.bashrc
Для желающих поблагодарить
SB: 5469 4009 6510 2267
QIWI: +79175241450
Аватар пользователя
ROOT
Администратор
 
Сообщений: 344
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Сообщение ROOT » 09 апр 2022, 11:51



 Проверка подключения на анонимность 
Проверку подключения на анонимность можно выполнить он-лайн-сервисами например, по следующим ссылкам:
hidemy.name, thesafety.us, 2ip.ru
Для желающих поблагодарить
SB: 5469 4009 6510 2267
QIWI: +79175241450
Аватар пользователя
ROOT
Администратор
 
Сообщений: 344
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Сообщение ROOT » 19 апр 2022, 11:59



 Доступ к локальной сети через WireGuard 
Для того, чтобы через VPN была также доступна локальная сеть, внесём ряд изменений в файлы конфигурации сервера и клиента WireGuard.
Отредактируем файл /etc/wireguard/wg0.conf сервера:
Код: выделить все
$EDITOR /etc/wireguard/wg0.conf

В директиве AllowedIPs через запятую добавим адрес локальной подсети клиента, например 192.168.1.0/24:
Код: выделить все
[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.9.0.2/32, 192.168.1.0/24

Перезапустим сервис WireGuard на сервере:
Код: выделить все
systemctl restart wg-quick@wg0.service

На клиенте, к локальной сети которого требуется получить доступ, разрешим перенаправление трафика и включим маскарадинг в Firewalld:
Код: выделить все
sysctl -w net.ipv4.conf.all.forwarding=1
sysctl -w net.ipv6.conf.all.forwarding=1
firewall-cmd --zone=public --add-masquerade
firewall-cmd --zone public --add-forward

Отредактируем файл конфигурации данного клиента, дописав в AllowedIPs подсеть через запятую (однако если там уже указано 0.0.0.0/0, то ничего более делать не требуется).
Проверим доступность компьютеров из локальной сети со стороны других клиентов WireGuard:
Код: выделить все
[code]ping 192.168.1.2[/code]

Здесь вместо 192.168.1.2 укажем реально существующий адрес в локальной сети.
Если всё работает корректно, сделаем изменения на клиенте с LAN постоянными:
Код: выделить все
bash -c "echo -e \"net.ipv4.conf.all.forwarding=1\nnet.ipv6.conf.all.forwarding=1\" > /etc/sysctl.d/99-wireguard.conf"
firewall-cmd --zone=public --add-masquerade --permanent
firewall-cmd --permanent --zone public --add-forward

Перезагрузим настройки Firewalld:
Код: выделить все
firewall-cmd --reload
Для желающих поблагодарить
SB: 5469 4009 6510 2267
QIWI: +79175241450
Аватар пользователя
ROOT
Администратор
 
Сообщений: 344
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный


Вернуться в Fedora

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron