Я постараюсь максимально кратко описать, как настроить wireguard для работы.
Немного общей информации, чтобы было понимание, как это работает и как настраивается. Если в общих словах это очень похоже на ssh соединение, так как используются пары закрытых и открытых ключей для инициализации соединения. Так что в общих словах. Мы установим клиент-сервер приложения, сгенерируем пары ключей для сервера и для клиентов, напишем простые конфигурации и всё. WireGuard и правда мега простой в настройке VPN.
Сервер
Устанавливаем wireguard для вашей платформы - https://www.wireguard.com/install/
Создаем ключи для сервера и для клиента(ов)
wg genkey | tee wg-server-private.key | wg pubkey > wg-server-public.key
wg genkey | tee wg-client-private.key | wg pubkey > wg-client-public.key
...
wg genkey | tee wg-clientN-private.key | wg pubkey > wg-clientN-public.key
Создаем файл конфигурации сервера
/etc/wireguard/wg0.conf
[Interface]
# IP адресс внутренней сети VPN можете указать свой в доступных диапазонах, не забудьте поменять в AllowedIPs тоже!
# 10.0.0.0 – 10.255.255.255
# 172.16.0.0 – 172.31.255.255
# 192.168.0.0 – 192.168.255.255
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = <Копируем сюда содержимое wg-server-private.key>
# Добавляем NAT роутинг между нашей VPN сетью и сетью с интернетом
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]
# Anton-iOS // Тут можно подписать чей ключ, если нужно будет удалить
PublicKey = <Копируем сюда содержимое wg-client-public.key>
# Адрес который будет у подключеного клиента
AllowedIPs = 10.0.0.2/32
[Peer]
# Заготовка для новых клиентов
PublicKey = <Копируем сюда содержимое wg-new-client(N)-public.key>
# Адрес который будет у подключеного клиента, должен отличаться от предыдущих
AllowedIPs = 10.0.0.3/32
Заменить eth0 на другой если отличается, ifconfig в помощь, у нужного интерфейса совпадает inet с IP сервера
Поднимаем сетьsudo wg-quick up wg0
(eсли нужно выключить то sudo wg-quick down wg0
)
Открываем FireWall (если он у вас есть)sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPT
Прописываем автозапускsudo systemctl enable wg-quick@wg0.service
Возможность проводить через себя трафик и работать роутером, чтобы заработало прямо сейчас sudo sysctl -w net.ipv4.ip_forward=1
И чтобы добавлялось само каждый раз, открываем файл sudo nano /etc/sysctl.conf
и расскоментируем строчку:
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
Сохраняем файл
Клиент
- Создаем аналогичную конфигурацию на клиенте
/etc/wireguard/wg0.conf
[Interface]
# На клиенте сервер и клиент меняются местами так сказать
# Тот же самый адрес, который для для данного клиента в конфигурации сервера, но другая маска
Address = 10.0.0.2/24
PrivateKey = <Копируем сюда содержимое wg-client-private.key>
DNS = 8.8.8.8
# MTU = 1500 # Если нужно спрятать факт туннеля
[Peer]
# А тут описываем сервер
PublicKey = <Копируем сюда содержимое wg-server-public.key>
AllowedIPs = 10.0.0.0/24
Endpoint = АДРЕС_СЕРВЕРА:51820
Для ПостРОителей сетей. Если нужно указать, что за VPN не одна сеть, а несколько:AllowedIPs = 10.0.0.0/24, 192.168.0.0/24, 192.168.10.0/24
Если нужно весь трафик пересылать в туннеле тоAllowedIPs = 0.0.0.0/0
Пример для мобильного устройства
# Anton-iOS
[Interface]
Address = 10.0.0.3/24
PrivateKey = <Копируем сюда содержимое wg-mobile-private.key>
DNS = 8.8.8.8,9.9.9.9 # Можно указать ваши любимые DNS
# MTU = 1500 # Если нужно спрятать факт туннеля
[Peer]
PublicKey = <Копируем сюда содержимое wg-server-public.key>
AllowedIPs = 0.0.0.0/0
Endpoint = АДРЕС_СЕРВЕРА:51820
2. Поднимаем соединениеsudo wg-quick up wg0
3*. Как создать QR codesudo apt install qrencode
qrencode -t ansiutf8 < mobile.conf
выведет QR-код в консоль
илиqrencode -o mobile.png < mobile.conf
чтобы создать картинку для пересылки.
Вот и всё, кайф wireguard ещё и в приложении на телефоне, которое может смотреть к какой сети вы подключены и автоматически включать VPN если вы не дома. Это то чем обычно я пользуюсь. А так же ест намного меньше батарейки, чем тот же openVPN, который был у меня до.
PS. Конечно же, уже появились скрипты, когда его просто можно скопировать и управлять всем из скрипта, как это у меня было с OpenVPN
На ваш выбор 2 скрипта
1. Популярный https://github.com/angristan/wireguard-install
2. От создателя скрипта для OpenVPN https://github.com/Nyr/wireguard-install