VPN сервер расположен на VPS с Debian 12.
Android / Windows
│
│ UDP 51820
│
Интернет
│
▼
WireGuard Server (Debian 12)
10.66.66.1
После подключения весь интернет-трафик клиентов проходит через VPN сервер.
| Устройство | VPN IP |
|---|---|
| Сервер | 10.66.66.1 |
| Клиент1 | 10.66.66.2 |
| Клиент2 | 10.66.66.3 |
Обновляем систему и устанавливаем пакеты.
sudo apt update sudo apt install wireguard qrencode iptables
cd /etc/wireguard umask 077 wg genkey | tee server.key | wg pubkey > server.pub
ip r | grep default
Пример:
default via 1.2.3.1 dev eth0
Внешний интерфейс: eth0
cat /etc/wireguard/server.key
Заменить в конфиге ниже SERVER_PRIVATE_KEY на содержимое server.key. А также eth0 на ваш сетевой интерфейс.
vim /etc/wireguard/wg0.conf
[Interface] Address = 10.66.66.1/24 ListenPort = 51820 PrivateKey = SERVER_PRIVATE_KEY PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-wireguard.conf sudo sysctl --system
Проверка:
sysctl net.ipv4.ip_forward
Если у тебя UFW:
sudo apt install -y ufw sudo ufw allow 51820/udp sudo ufw enable sudo ufw status
sudo systemctl enable wg-quick@wg0 sudo systemctl start wg-quick@wg0
Проверка:
sudo wg show
Создаем скрипт:
vim /usr/local/bin/wg-add-client
#!/bin/bash WG_DIR="/etc/wireguard" WG_CONF="/etc/wireguard/wg0.conf" SERVER_PUB=$(cat $WG_DIR/server.pub) SERVER_IP=$(curl -4 -s ifconfig.me) CLIENT_NAME=$1 if [ -z "$CLIENT_NAME" ]; then echo "Usage: wg-add-client clientname" exit fi CLIENT_IP=$(grep AllowedIPs $WG_CONF | wc -l) CLIENT_IP=$((CLIENT_IP+2)) cd $WG_DIR wg genkey | tee ${CLIENT_NAME}.key | wg pubkey > ${CLIENT_NAME}.pub cat >> $WG_CONF <<EOF [Peer] PublicKey = $(cat ${CLIENT_NAME}.pub) AllowedIPs = 10.66.66.${CLIENT_IP}/32 EOF cat > ${CLIENT_NAME}.conf <<EOF [Interface] PrivateKey = $(cat ${CLIENT_NAME}.key) Address = 10.66.66.${CLIENT_IP}/32 DNS = 1.1.1.1 [Peer] PublicKey = ${SERVER_PUB} Endpoint = ${SERVER_IP}:51820 AllowedIPs = 0.0.0.0/0 PersistentKeepalive = 25 EOF wg syncconf wg0 <(wg-quick strip wg0) echo "Client created: ${CLIENT_NAME}" echo "Config: $WG_DIR/${CLIENT_NAME}.conf" qrencode -t ansiutf8 < ${CLIENT_NAME}.conf
Сделать исполняемым:
chmod +x /usr/local/bin/wg-add-client
sudo wg-add-client phone
Будет создан файл:
/etc/wireguard/phone.conf
И выведен QR код.
qrencode -t ansiutf8 < client.conf
1 Скачать WireGuard
https://www.wireguard.com/install/
2 Установить
3 Нажать
Add Tunnel → Import from file
4 Выбрать файл клиента
client.conf
5 Нажать Activate
1 Установить приложение
https://play.google.com/store/apps/details?id=com.wireguard.android
2 Нажать
Add tunnel → Scan QR code
3 Отсканировать QR код
На сервере:
sudo wg show
Должно появиться:
latest handshake transfer
На клиенте:
curl ifconfig.me
Должен отображаться IP VPN сервера.
ip a show wg0
ss -lunp | grep 51820
wg show
Если нет строки:
latest handshake
клиент не подключился.
iptables -L -n -v iptables -t nat -L -n -v
sysctl net.ipv4.ip_forward
tcpdump -n -i eth0 udp port 51820
sudo systemctl restart wg-quick@wg0
journalctl -u wg-quick@wg0
```