Мар
07
2022

WireGuard VPN

ssh root@140.28.85.134
apt update && apt upgrade -y
apt install -y wireguard
cd /etc/wireguard/

Генерим ключи сервера:

wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey
chmod 600 /etc/wireguard/privatekey

выводим privatekey и копируем

cat privatekey

Создаём конфиг сервера:

nano /etc/wireguard/wg0.conf
[Interface]
PrivateKey = PRIVATE_KEY
Address = 10.9.0.1/24
ListenPort = 25642
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

ВНИМАНИЕ!

sudo lshw -C network

тут ищем строчку logical name и вписываем ее вместо eth0 в нашем конфиге

Настраиваем IP форвардинг:

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p

Включаем systemd демон с wireguard:

systemctl enable wg-quick@wg0.service
systemctl start wg-quick@wg0.service
systemctl status wg-quick@wg0.service

Создаём ключи клиента:

wg genkey | tee /etc/wireguard/vinni_privatekey | wg pubkey | tee /etc/wireguard/vinni_publickey

выводим ключ клиента и копируем

cat vinni_publickey

открываем конфиг (nano /etc/wireguard/wg0.conf) и дописываем:

[Peer]
PublicKey = VINNI_PUBLICKEY
AllowedIPs = 10.9.0.2/32

Перезагружаем и проверяем:

systemctl restart wg-quick@wg0
systemctl status wg-quick@wg0

получаем SERVER-IP

curl ifconfig.me

На локальной машине (на примере Linux)

Устанавливаем клиент https://www.wireguard.com/install/

типичный сниппет для клиента

[Interface]
PrivateKey = VINNI-PRIVATE-KEY
Address = 10.9.0.2/32
DNS = 8.8.8.8

[Peer]
PublicKey = SERVER-PUBKEY
Endpoint = SERVER-IP:25642
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 20

подключение на Linux

sudo apt install wireguard wireguard-dkms resolvconf
sudo chown -R USER_NAME /etc/wireguard/
cd /etc/wireguard/
sudo nano wg-client.conf
# вставляем сниппет выше
sudo chmod 600 wg-client.conf

включаем:

systemctl enable wg-quick@wg-client.service
systemctl start wg-quick@wg-client.service
systemctl status wg-quick@wg-client.service

Отключить:

sudo systemctl stop wg-quick@wg0.service
sudo systemctl disable wg-quick@wg0.service