4.51111111111Rating 4.50 (2 Votes)

wireguardЧто характерно - поднимается все это VPN хозяйство на CentOS (и иных дистрибутивах, коих порядка ~20 в списке, включая даже OpenWRT) буквально в считанные минуты.

Кратко о том, что такое WireGuard - быстрый, простой инструмент для построения VPN сетей, на столько все быстро и просто все "поднимается", что даже не верится, что это нечто сложное, что под капотом скрыты алгоритмы шифрования или что-то еще, что обеспечивает безопасность и скорость содинения. На официальном сайте приведены бенчмарки, графики вполне впечатляющие... Я сам уже какое-то время использую WireGuard и вполне доволен, НО сами разработчики называют это экспериментом, поэтому если не в проде, то в тестовой среде, как минимум это стоит попробовать.

Далее кратко, пошагово расскажу как поднять VPN на своем CentOS VPS...

Установка WireGuard VPN в CentOS

Загрузить repo-файл:

curl -Lo /etc/yum.repos.d/wireguard.repo https://copr.fedorainfracloud.org/coprs/jdoss/wireguard/repo/epel-7/jdoss-wireguard-epel-7.repo

Установить нужный софт:

yum install nano epel-release -y && yum install wireguard-dkms wireguard-tools qrencode -y

Добавить, проверить модули ядра:

modprobe wireguard && lsmod | grep wireguard

Настройка Firewalld

Предположим, что сеть будет 10.0.0.1/24, порт 36666, xxx.xxx.xx.x адрес VPN сервера, далее настраиваем правила NAT, разрешаем порт и т.п., далее по очереди:

firewall-cmd --permanent --zone=public --add-port=36666/udp
firewall-cmd --permanent --zone=public --add-masquerade
firewall-cmd --reload

В sysctl.conf

nano /etc/sysctl.conf

Добавляем:

net.ipv4.ip_forward=1
net.ipv4.conf.all.forwarding=1
net.ipv6.conf.all.forwarding=1

Применяем:

sysctl -p

Генерация ключей WireGuard сервера / клиента

По сути, это попросту два пира, один из которых играет роль сервера, другой клиента. Создаем каталог и файл конфига:

mkdir /etc/wireguard && cd /etc/wireguard && bash -c 'umask 077; touch wg0-server.conf'

Далее генерим приватный ключ для сервера:

wg genkey > /etc/wireguard/private-server.key

Публичный ключ для сервера:

wg pubkey < /etc/wireguard/private-server.key > public-server.key

Генерим приватный ключ для клиента:

wg genkey > /etc/wireguard/private-client.key

Публичный ключ для клиента:

wg pubkey < /etc/wireguard/private-client.key > public-client.key

Создание конфига сервера / клиента

Редактируем файл, с конфигом для сервера wg0-server.conf:

[Interface]
Address = 10.0.0.1/24
ListenPort = 36666
PrivateKey = <содержимое private-server.key>

[Peer]
PublicKey = <содержимое public-client.key>
AllowedIPs = 10.0.0.2/32

Создаем файл client.conf:

[Interface]
Address = 10.0.0.2/24
PrivateKey = <содержимое private-client.key>

[Peer]
PublicKey = <содержимое public-server.key>
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = xxx.xxx.xx.x:36666
PersistentKeepalive = 15

Задаем на conf-файлы нужные разрешения:

chmod 600 client.conf && chmod 600 wg0-server.conf

Включаем, запускаем сервер:

systemctl enable [email protected] && systemctl start [email protected]

Настройка Android

В Google Play необходимо найти и установить WireGuard:

wireguard android

Далее сгенерировать QR код из файла конфига client.conf:

qrencode -t ansiutf8 < client.conf

wireguard qrcode

В Android приложении нажать + далее Create from QR code, подключиться:

wireguard android2

Проверить (если есть например termux) наличие нужного адаптера (в моем случае tun0):

ip -c a l tun0

wg android ip a

Проверяем внешний IP:

curl https://ipinfo.io/ip

Подключение с клиента

Здесь все просто, можно запустить как службу:

systemctl restart [email protected]

Можно средствами wg:

wg-quick up client

Результат:

wg-quick up client
[#] ip link add client type wireguard
[#] wg setconf client /dev/fd/63
[#] ip address add 10.0.0.2/24 dev client
[#] ip link set mtu 65456 up dev client
[#] wg set client fwmark 51820
[#] ip -6 route add ::/0 dev client table 51820
[#] ip -6 rule add not fwmark 51820 table 51820
[#] ip -6 rule add table main suppress_prefixlength 0
[#] ip -4 route add 0.0.0.0/0 dev client table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0

Просмотр текущего состояния можно посмотреть командой wg:

wg

Done! 

Добавить комментарий


Защитный код
Обновить

Сейчас 312 гостей и ни одного зарегистрированного пользователя на сайте

Вверх
Вниз