DEV Community

Vladimir Avakumov
Vladimir Avakumov

Posted on

Установка WireGuard

Будем устанавливать WireGuard на сервер и настраивать клиента. Сервер ubuntu 22.04, клиент manjaro linux.

Серверная часть

Обновляем пакеты
apt update && apt upgrade -y

Устанавливаем wireguard
apt install -y wireguard

Перейдем для удобства в настройки wireguard
cd /etc/wireguard

Генерируем приватный и публичный ключ wiregurd
wg genkey | tee /etc/wireguard/private.key | wg pubkey | tee /etc/wireguard/public.key

Команда tee принимает данные, записывает их в файл и отправляет их дальше в stdout. Таким образом у нас создадутся 2 файла private.key и public.key с ключами.

Создаем файл с конфигурацией
vim wg0.conf со следующим содержимым:

[Interface]
PrivateKey = <Приватный ключ сервера из файла private.key>
Address = 10.0.0.1/24  # Внутренний IP сервера
ListenPort = 51820  # Порт для подключения
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

#[Peer]
#PublicKey = < Публичный ключ клиента 1>
#AllowedIPs = 10.0.0.2/32

#[Peer]
#PublicKey = < Публичный ключ клиента 2>
#AllowedIPs = 10.0.0.3/32
Enter fullscreen mode Exit fullscreen mode

В этот файл мы должны вставить приватный ключ из private.key. Адрес 10.0.0.1/24 будет для сервера. Сервер будет доступен по этому адресу. Также у нас есть 2 клинта с адресами 10.0.0.3 и 10.0.0.2. Пока все что относится к клиентам закоментировано.

Настройка проброски портов
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf

Проверка sysctl -p должна вывести net.ipv4.ip_forward=1

Создаем службу wireguard
systemctl enable wg-quick@wg0

После успешного создания стартуем
systemctl start wg-quick@wg0

Проверяем статус
systemctl status wg-quick@wg0

Начинаем добавлять клиентские ключи
wg genkey | tee /etc/wireguard/client1_private.key | wg pubkey | tee /etc/wireguard/client1_public.key
wg genkey | tee /etc/wireguard/client2_private.key | wg pubkey | tee /etc/wireguard/client2_public.key

Раскомментируем в файле wg0.conf и вставим ключи из client1_public.key и client2_public.key

[Peer]
PublicKey = < Публичный ключ клиента 1>
AllowedIPs = 10.0.0.2/32

[Peer]
PublicKey = < Публичный ключ клиента 2>
AllowedIPs = 10.0.0.3/32
Enter fullscreen mode Exit fullscreen mode

Рестарт wireguard
systemctl restart wg-quick@wg0

На этом настройка сервера закончена. Приступаем к клиенту.

Клиентская часть

Создаем конфигурационный файл для клиента wireguard wg_client1.conf

[Interface]
PrivateKey = <Приватный ключ клиента 1>
Address = 10.0.0.2/32
DNS = 8.8.8.8

[Peer]
PublicKey = <Публичный ключ сервера>
Endpoint = <публичный адрес сервера>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 20
Enter fullscreen mode Exit fullscreen mode

Создаем конфигурационный файл для клиента wireguard wg_client2.conf

[Interface]
PrivateKey = <Приватный ключ клиента 1>
Address = 10.0.0.3/32
DNS = 8.8.8.8

[Peer]
PublicKey = <Публичный ключ сервера>
Endpoint = <публичный адрес сервера>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 20
Enter fullscreen mode Exit fullscreen mode

Для запуска можно использовать любые клиенты для android, windows, linux. Для запустка в linux manjaro устанавливаем клиента
sudo pacman -S wireguard-tools

Копируем конфигурационныe файлы
sudo cp wg_client1.conf /etc/wirequard/client1.conf
sudo cp wg_client2.conf /etc/wirequard/client2.conf

Запускаем клиента
sudo wg-quick up client1 или sudo wg-quick up client2

Останавливаем
sudo wg-quick down client1

Top comments (0)