Инструменты пользователя

Инструменты сайта


linux:wireguard

WireGuard

WireGuard - рекрасный VPN будущего.

Поднимем туннель между двумя Linux компьютерами, один из кторых сервер на Debian 9 Stretch.

Устанавливаем WireGuard:

echo "deb http://deb.debian.org/debian/ unstable main" > /etc/apt/sources.list.d/unstable.list 
printf 'Package: *\nPin: release a=unstable\nPin-Priority: 90\n' > /etc/apt/preferences.d/limit-unstable
apt update
apt upgrade
apt install wireguard

Генерируем ключи WireGuard для сервера и одного клиента:

wg genkey | tee client-private.key |  wg pubkey > client-public.key
wg genkey | tee server-private.key |  wg pubkey > server-public.key

Создаем конфигурационный файл для WireGuard на сервере и клиенте

touch /etc/wireguard/wg0.conf

Конфигурационный файл на сервере. Аналогичный на клиенте, с небольшими изменениями. Важно не запутаться где какие ключи.

#настройки локального интерфейса
[Interface]
#IP адрес локального интерфейса на сервере
Address = 10.0.0.1/24
#порт подключения
ListenPort = 51820
#приватный ключ сервера (секретный)
PrivateKey = %server-private.key%
#правила firewall в момент поднятия и опускания интерфейса WireGuard, где enp1s0 интерфейс для выхода в интернет
PostUp   = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o enp1s0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o enp1s0 -j MASQUERADE

#настройки клиентов (пиров) которые подключаются к серверу
[Peer]
#клиент один
#публичный ключ клиента 
PublicKey = %client-public.key%
#IP адрес клиента должен совпадать с настройками на клиенте
AllowedIPs = 10.0.0.2/32

Конфигурационный файл на клиенте:

#настройки локального интерфейса
[Interface]
#IP адрес локального интерфейса на клиенте (должен совпадать с указанным в серверном конфигурационном файле) 
Address = 10.0.0.2/24
#приватный ключ сервера (секретный)
PrivateKey = %client-private.key%
#если вы используете DNS в вашей VPN сети, укажите его адрес
DNS = 192.168.0.1

#настройка сервера
[Peer]
#публичный ключ сервера 
PublicKey = %server-public.key%
#сети, которые нужно заворачивать в туннель (сеть самого туннеля и внутренняя сеть)
#если есть необходимость завернуть ВЕСЬ трафик в туннель, нужно указать:
#AllowedIPs = 0.0.0.0/0,
AllowedIPs = 10.0.0.0/24, 192.168.0.0/24
#точка подключения и порт (IP сервера и указанный ранее порт ListenPort
Endpoint = 195.195.195.195:51820 
#посылать пакеты для поддержания соединения
PersistentKeepalive = 25

Проверяем корректность настроек:

 wg-quick up wg0

Верояно будет ошибка отсутствия resolvconf типа /usr/bin/wg-quick: line 31: resolvconf: command not found , решение:

sudo add-apt-repository ppa:wireguard/wireguard -y && sudo apt update && sudo apt install wireguard resolvconf -y

Далее поднимаем туннели (указывается конфигурационный файл):

systemctl start wg-quick@wg0

Командой wg можно узнать статус туннеля, а проверить обычным пингом.

#статус на сервере
~# wg
interface: wg0
  public key: *********************
  private key: (hidden)
  listening port: 51820
#подключенные пиры
peer: *********************
  endpoint: %ip_пира_и_порт%
  allowed ips: 10.0.0.2/32
  #последнее "рукопожатие"
  latest handshake: 1 minute, 7 seconds ago
  #трафик в туннеле, если цифры по нулям, что-то не то
  transfer: 2.28 MiB received, 11.30 MiB sent
#статус на клиенте
# wg
interface: wg0
  public key: *********************
  private key: (hidden)
  listening port: 34702
#пир - сервер
peer: *********************
  endpoint: 195.195.195.195:51820
  allowed ips: 10.0.0.0/24, 192.168.0.0/24
  latest handshake: 46 seconds ago
  transfer: 267.54 KiB received, 128.65 KiB sent
  persistent keepalive: every 25 seconds

Делаем атозапуск туннеля с нашим конфигурационным файлом

systemctl enable wg-quick@wg0.service

По материалам:

linux/wireguard.txt · Последнее изменение: 2020/09/01 22:56 — adminroot