Установка WireGuard на CentOS
WireGuard — протокол связи, а также бесплатное ПО для организации VPN-сервера с шифрованием. По статистике, WireGuard до 5 раз быстрее OpenVPN, а также более безопасный.
Для подключения понадобится установить клиент на компьютер или на телефон:
Автоматическая установка и управление через веб-интерфейс
Инструкция по автоматической установке WireGuard размещена здесь.
Автоматическая установка WireGuard
Для быстрой установки WireGuard используйте следующие команды:
curl -O https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh
chmod +x wireguard-install.sh
./wireguard-install.sh
Скрипт установит всё необходимое, а также поможет добавить необходимое количество пользователей.
Установка WireGuard вручную
Для установки необходимо выполнить следующие команды в SSH:
yum install epel-release elrepo-release
yum install yum-plugin-elrepo
yum install kmod-wireguard wireguard-tools
Далее потребуется подключить модуль ядра, а также выполнить настройку WireGuard:
modprobe wireguard && lsmod | grep wireguard
mkdir /etc/wireguard && cd /etc/wireguard
wg genkey | tee server-private.key | wg pubkey > server-public.key
wg genkey | tee client-private.key | wg pubkey > client-public.key
chmod 600 ./*-private.key
Для перехода к настройке WireGuard откроем файл конфигурации через nano
:
nano /etc/wireguard/wg0-server.conf
Добавим в файл следующие параметры конфигурации, предварительно заменив значения следующим образом:
<SERVER_PRIVATE_KEY>
— ключ из файлаserver-private.key
<CLIENT_PUBLIC_KEY>
— ключ из файлаclient-public.key
[Interface]
Address = 10.0.0.1/24
PrivateKey = <SERVER_PRIVATE_KEY>
ListenPort = 39548
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
PublicKey = <CLIENT_PUBLIC_KEY>
AllowedIPs = 10.0.0.2/32
Данный пример конфигурации дан при использовании iptables
. Если на сервере используется firewalld
, то значения параметров PostUp
и PostDown
для данного примера будут следующими:
PostUp = firewall-cmd --add-port $SERVER_PORT/udp && firewall-cmd --add-rich-rule='rule family=ipv4 source address=$FIREWALLD_IPV4_ADDRESS/24 masquerade' && firewall-cmd --add-rich-rule='rule family=ipv6 source address=$FIREWALLD_IPV6_ADDRESS/24 masquerade'
PostDown = firewall-cmd --remove-port $SERVER_PORT/udp && firewall-cmd --remove-rich-rule='rule family=ipv4 source address=$FIREWALLD_IPV4_ADDRESS/24 masquerade' && firewall-cmd --remove-rich-rule='rule family=ipv6 source address=$FIREWALLD_IPV6_ADDRESS/24 masquerade'
Далее необходимо внести правки в конифгурацию sysctl
:
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
В завершении необходимо включить автозагрузку созданного нами сервера wg0
, а также запустить его:
systemctl enable wg-quick@wg0-server
systemctl start wg-quick@wg0-server
Подключение к WireGuard
Для подключения к WireGuard необходимо скачать ПО клиента по ссылкам:
Для максимального быстрого подключения проще всего настроить генерацию QR-кода подключения на стороне сервера. Это можно сделать следующим образом.Создадим файл клиента на стороне сервера:
nano /etc/wireguard/client.conf
В данный файл добавим конфигурацию аналогично конфигурации сервера, заменив аналогичным образом параметры, отвечающие за ключи:
<SERVER_PUBLIC_KEY>
— ключ из файлаserver-public.key
<CLIENT_PRIVATE_KEY>
— ключ из файлаclient-private.key
<SERVER_IP>
— IP-адрес сервера
[Interface]
Address = 10.0.0.2/24
PrivateKey = <CLIENT_PRIVATE_KEY>
DNS = 8.8.8.8
[Peer]
PublicKey = <SERVER_PUBLIC_KEY>
AllowedIPs = 0.0.0.0/0
Endpoint = <SERVER_IP>:39548
PersistentKeepalive = 20
Для генерации QR-кода выполните (код отобразится на экране):
qrencode -t ansiutf8 < /etc/wireguard/client.conf
Комментарии и вопросы