WireGuard — это новый VPN протокол с открытым исходным кодом, основанный на последних концепциях криптографии. Его особенность – простота реализация и высокая скорость работы. WireGuard работает быстрее, чем тот же популярный протокол OpenVPN. WireGuard реализует безопасное соединений по типу точка-точка , в котором передача данных происходит в зашифрованном виде. Так же протокол включен в состав ядра Linux, начиная с версии 5.6.
- Установка WireGuard на Ubuntu
- Генерации ключей для клиента и сервера
- Создание конфигурационного файла для сервера
- Содержание конфигурационного файла сервера (wg0-server.conf)
- Включаем IP Forwarding пакетов
- Добавляем сервис WireGuard в автозагрузку и запускаем его
- Команда на перезагрузку, остановку и запуск WireGuard
- Проверка, наличие сетевого интерфейса wg0-server
- Генерация ключей для клиента
- Создание конфигурационного файла для клиента
- Содержание конфигурационного файла клиента (wg-client.conf)
- Создание нового клиента
- Генерация QR кода конфига клиента (wg-client.conf)
- Генерируем код
Установка WireGuard на Ubuntu
sudo apt install wireguard
Генерации ключей для клиента и сервера
cd /etc/wireguard wg genkey | tee server-private.key | wg pubkey > server-public.key
Создание конфигурационного файла для сервера
nano /etc/wireguard/wg0-server.conf
Содержание конфигурационного файла сервера (wg0-server.conf)
[Interface]
#Назначаем IP адрес сервера
Address = 10.0.0.1/24 [VIRTUAL_IP_SERVER]
#Правила для firewall
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
#Задаем порт на котором будет работать сервер и прописываем приватный ключ сервера
ListenPort = [ANY_PORT]
PrivateKey = [SERVER_PRIVATKEY_KEY]
#Прописываем публичный ключ клиента и назначаем ему IP адрес
[Peer]
PublicKey = [CLIENT_PUBLIC_KEY]
AllowedIPs = 10.0.0.2/32
Address — прописываем виртуальный адрес сервера
ListenPort — задаем порт, на котором будет работать сервер
PrivateKey — приватный ключ сервера
PostUp и PostDown — правила iptables при подключении WireGuard
eth0 — сетевой интерфейс
PublicKey — публичный ключ клиента
AllowedIPs — назначенный IP адрес VPN клиента
Включаем IP Forwarding пакетов
nano /etc/sysctl.conf ищем строку #net.ipv4.ip_forward = 1 и раскомментируем ее
net.ipv4.ip_forward = 1
Затем выполнить команду
sysctl -p
Добавляем сервис WireGuard в автозагрузку и запускаем его
systemctl enable wg-quick@wg0-server
systemctl start wg-quick@wg0-serverКоманда на перезагрузку, остановку и запуск WireGuard
systemctl restart wg-quick@wg0-server #перезагрузка systemctl stop wg-quick@wg0-server #остановка systemctl start wg-quick@wg0-server #запуск
Проверка, наличие сетевого интерфейса wg0-server
ip a show wg0-server
Генерация ключей для клиента
wg genkey | tee wg-client-private.key | wg pubkey > wg-public.key
chmod 600 ./*-private.keyСоздание конфигурационного файла для клиента
nano /etc/wireguard/wg0-client.conf
Содержание конфигурационного файла клиента (wg-client.conf)
[Interface]
Address = 10.0.0.2/24 [Virtual_IP_client]
PrivateKey = CLjIzMixsDeh/oDKwCdiBZKiiLtt+M4ipowYel2MI0k= [Private_Key_client]
DNS = 1.1.1.1 [ Public DNS services 8.8.8.8 or 1.1.1.1]
[Peer]
PublicKey = prw5wC5a1tL/6NLjW91PyPBq4aAU0poynMUahkH0z1Q= [Public_Key_server]
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 20
Endpoint = 1.2.3.4:39548 [IP_addres_server]
Address — виртуальный адрес клиента
PrivateKey — приватный ключ клиента
DNS — любой DNS сервер, можно публичный
PublicKey — публичный ключ сервера
Endpoint — IP адрес и порт сервера
Создание нового клиента
wg genkey | tee wg-client2-private.key | wg pubkey > wg-client2-public.key
chmod 600 ./*-private.keyКаждого нового клиента добавляем в конфиг файл сервера !
Генерация QR кода конфига клиента (wg-client.conf)
Для генираци QR кода необходимо установить пакет
sudo apt install qrencode
Генерируем код
qrencode -t ansiutf8 < /etc/wireguard/wg-client.conf
Полученный QR код можно отсканировать в приложении на Android, IOS устройстве