Запуск WireGuard на Gentoo

Краткая инструкция по быстрой настройке VPN-сервера и клиента WireGuard на ОС Gentoo GNU/Linux.

На сервере и клиенте устанавливаем wireguard-tools

# emerge --ask net-vpn/wireguard-tools

и переходим в каталог /etc/wireguard/

# cd /etc/wireguard/

Затем на сервере откроем файл /etc/sysctl.conf

# nano /etc/sysctl.conf

и исправим строку net.ipv4.ip_forward=0 на

net.ipv4.ip_forward=1

Проверяем

# sysctl -p

консоль должна показать сообщение:

net.ipv4.ip_forward = 1

Теперь необходимо сгенерировать ключи

# wg genkey | tee privatekey | wg pubkey | tee publickey

консоль покажет примерно такое сообщение:

OkcHUyWEzcMk9WjzqyXuSRAWO1mGfaaxSsqNr+pkbkk=

Затем понадобится открыть файл с приватным ключом. Для этого выведем содержимое файла privatekey

# cat privatekey

и консоль покажет нам этот ключ:

wDRR2HwdAapFPosmM6FU6cmxBlLjPmCpe3TmJb1M9WY=

Его необходимо скопировать в буфер для вставки в конфигурационный файл.

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

# touch wg0.conf
# nano wg0.conf

и внесём такое содержимое:

[Interface]
PrivateKey = wDRR2HwdAapFPosmM6FU6cmxBlLjPmCpe3TmJb1M9WY=
Address = 192.168.100.1/24
SaveConfig = true
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o enp0s3 -j MASQUERADE
ListenPort = 51820

После этого зададим права на все файлы в этом каталоге

# chmod 600 *

И также нам понадобится публичный ключ. Выводим его в сообщение в консоли

# cat publickey

консоль покажет его нам:

OkcHUyWEzcMk9WjzqyXuSRAWO1mGfaaxSsqNr+pkbkk=

Его необходимо будет скопировать в буфер.

Теперь на клиенте сгенерируем ключи

# wg genkey | tee privatekey | wg pubkey | tee publickey

консоль покажет:

l7OUNaVuPz5Rrb/7KHaDf+XqUMm7nFjPrSREPM6lATw=

После этого понадобится открыть файл с приватным ключом. Для этого выведем содержимое файла privatekey

# cat privatekey

консоль покажет его:

AHF6JMaah3dvp4+QxjV/jeaARrKxJu8FX7hGEeqU1kg=

Скопируем этот ключ в буфер.

Далее создадим и откроем файл конфигурации клиента wg-client.conf

# touch wg-client.conf
# nano wg-client.conf

и пропишем в него такие параметры:

[Interface]
PrivateKey = AHF6JMaah3dvp4+QxjV/jeaARrKxJu8FX7hGEeqU1kg=
Address = 192.168.100.11/32

[Peer]
PublicKey = OkcHUyWEzcMk9WjzqyXuSRAWO1mGfaaxSsqNr+pkbkk=
Endpoint = 192.168.1.45:51820
AllowedIPs = 192.168.100.0/24

Endpoint — «белый» IP-адрес сервера

Теперь выведем на экран публичный ключ

# cat publickey

консоль покажет нам его:

l7OUNaVuPz5Rrb/7KHaDf+XqUMm7nFjPrSREPM6lATw=

Скопируем его в буфер.

После этого на сервере снова открываем файл конфигурации wg0.conf

# nano wg0.conf

и в конце файла допишем конфигурацию клиента (peer)

[Peer]
PublicKey = l7OUNaVuPz5Rrb/7KHaDf+XqUMm7nFjPrSREPM6lATw=
AllowedIPs = 192.168.100.11/32

Теперь запустим сервер

# wg-quick up wg0

Консоль должна показать нам примерно такое сообщение:

[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 192.168.100.1/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE

Переходим на клиент и запустим его

# wg-quick up wg-client

Здесь консоль должна показать такое сообщение:

[#] ip link add wg-client type wireguard
[#] wg setconf wg-client /dev/fd/63
[#] ip -4 address add 192.168.100.11/32 dev wg-client
[#] ip link set mtu 1420 up dev wg-client
[#] ip -4 route add 192.168.100.0/24 dev wg-client

Проверяем конфигурации сетевых интерфейсов

# ifconfig

консоль должна показать:

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.55  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::a00:27ff:fe57:93b2  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:57:93:b2  txqueuelen 1000  (Ethernet)
        RX packets 18465  bytes 14673438 (13.9 MiB)
        RX errors 0  dropped 1933  overruns 0  frame 0
        TX packets 6481  bytes 742203 (724.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 50  bytes 10200 (9.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 50  bytes 10200 (9.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wg-client: flags=209<UP,POINTOPOINT,RUNNING,NOARP>  mtu 1420
        inet 192.168.100.11  netmask 255.255.255.255  destination 192.168.100.11
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)
        RX packets 9  bytes 1020 (1020.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8  bytes 1044 (1.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

И также — на сервере

# ifconfig

консоль покажет:

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.45  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::a00:27ff:fe0c:8998  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:0c:89:98  txqueuelen 1000  (Ethernet)
        RX packets 32574  bytes 30238230 (28.8 MiB)
        RX errors 0  dropped 1971  overruns 0  frame 0
        TX packets 16215  bytes 2167354 (2.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 10  bytes 1120 (1.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 10  bytes 1120 (1.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wg0: flags=209<UP,POINTOPOINT,RUNNING,NOARP>  mtu 1420
        inet 192.168.100.1  netmask 255.255.255.0  destination 192.168.100.1
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)
        RX packets 8  bytes 1044 (1.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 9  bytes 1020 (1020.0 B)
        TX errors 10  dropped 0 overruns 0  carrier 0  collisions 0

Чтобы убедиться, что обе машины видят друг друга, пропингуем их:

на клиенте

# ping 192.168.100.1

на сервере

# ping 192.168.100.11

Запустим команду wg на сервере

# wg

Она покажет нам в консоли краткую статистику текущих подключений

И в самом конце нам понадобится включить службы в автозагрузку. Для этого выполняем такие команды:

на сервере

# ln -s /etc/init.d/wg-quick /etc/init.d/wg-quick.wg0
# rc-update add wg-quick.wg0 default

и на клиенте

# ln -s /etc/init.d/wg-quick /etc/init.d/wg-quick.wg-client
# rc-update add wg-quick.wg-client default

На этом первоначальная настройка завершена.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *