Fork me on GitHub

Настройка vpn WireGuard

Полезные ссылки

Настройка сервера

1.Установка

    sudo apt install wireguard

2.Генерация public и private ключей

    wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey

3.Создание конфигурации интерфейса vpn /etc/wireguard/wg0.conf:

[Interface]
Address = 10.0.0.1/24
SaveConfig = true
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
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

где

  • SERVER_PRIVATE_KEY - содержимое файла /etc/wireguard/privatekey
  • PostUp - command or script which is executed before bringing the interface up. In this example, we’re using iptables to enable masquerading. This will allow traffic to leave the server, giving the VPN clients access to the Internet. Make sure to replace ens3 after -A POSTROUTING to match the name of your public network interface. You can easily find the interface by running the following command:
ip -o -4 route show to default | awk '{print $5}'
  • PostDown - command or script which is executed before bringing the interface down. The iptables rules will be removed once the interface is down.

4.файлы wg0.conf и privatekey не должны быть доступны обычным пользователям:

sudo chmod 600 /etc/wireguard/{privatekey,wg0.conf}

5.поднять интерфейс wg0

wg-quick up wg0 
wg show wg0
ip a show wg0
sudo systemctl enable wg-quick@wg0

6.Настройки сети и фаервола * добавить в файл /etc/sysctl.conf строку:

net.ipv4.ip_forward=1
  • применить изменения:
sudo sysctl -p
  • открыть порт 51820:
sudo ufw allow 51820/udp

Настройка клиента Android

1.генерация ключей для клиента

cd /etc/wireguard/
wg genkey | sudo tee phone_privatekey | wg pubkey > phone_publickey

2.создадим файл конфигурации android2.conf

[Interface]
PrivateKey = <приватный ключ из файла phone_privatekey>
Address = 10.0.0.3/32
DNS = 8.8.8.8

[Peer]
PublicKey = <public ключ сервера в моём случае из файла publickey>
Endpoint = <ip server>:51820
AllowedIPs = 0.0.0.0/0

3.добавим в конец файла wg0.conf информацию о подключении:

[Peer]
PublicKey = <public ключ из файла phone_publickey>
AllowedIPs = 10.0.0.3/32

4.перезапустим интерфейс wg0:

wg-quick down wg0
wg-quick up wg0

5.установим программу генерации qr-кодов на сервере:

apt install qrencode

6.генерация qr-кода который отсканируем в программе WireGuard на андроиде:

qrencode -t utf8 < android2.conf

7.пробуем подключаться к впн.

Настройка клиента Linux

1.установка

sudo apt install openresolv
sudo apt install wireguard

2.генерация ключей на клиенте

wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey

3.создать файл /etc/wireguard/wg0.conf

[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.0.0.2/32
DNS = 8.8.8.8

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_IP_ADDRESS:51820
AllowedIPs = 0.0.0.0/0

4.на сервере выполнить команду:

sudo wg set wg0 peer CLIENT_PUBLIC_KEY allowed-ips 10.0.0.2

5.чтобы подключиться к впн выполните команду:

wg-quick up wg0

6.чтобы отключиться от впн выполните команду:

wg-quick down wg0

social