Product SiteDocumentation Site

12.3.2. Настройка WireGuard-интерфейса

Для создания соединения необходимо создать специальный WireGuard‑интерфейс на каждом абоненте. В качестве приватного ключа используется свой приватный ключ. В описании доступных соединений указывается публичный ключ того, к кому инициируется подключение. Поскольку получателем соединения будет выступать @client, для него необходимо указать порт, на котором он будет ожидать соединения.
  1. Опишите (или скопируйте) конфигурационный файл для создания интерфейса wg абонента client в соответствующем файле виртуальной машины
    @client:/etc/systemd/network/70-wg.netdev
    [NetDev]
    Name = wg
    Kind = wireguard
    
    [WireGuard]
    ListenPort = 51820
    PrivateKey = YHbaodB1g6Uh4rXa/Y17gf4t3pjVt68dABYDq79+tVE=
    
    [WireGuardPeer]
    AllowedIPs = 192.168.0.0/24
    PublicKey = V87kz+xm9c1liF0WQpBW33Dep2W8B++xby80SrBJ2Cc=
    
  2. Опишите (или скопируйте) конфигурационный файл для настройки интерфейса wg абонента client в соответствующем файле виртуальной машины
    @client:/etc/systemd/network/70-wg.network
    [Match]
    Name = wg
    
    [Network]
    Address = 192.168.0.1/24
    

    Примечание

    При аналогичной настройке интерфейса на @company, поскольку отсюда будет производиться подключение, необходимо указать итоговый адрес подключения — IP‑адрес и порт.
  3. Опишите (или скопируйте) конфигурационный файл для создания интерфейса wg абонента company в соответствующем файле виртуальной машины
    @company:/etc/systemd/network/70-wg.netdev
    [NetDev]
    Name = wg
    Kind = wireguard
    
    [WireGuard]
    PrivateKey = OFcPIl8PXbjoPozp9qBH2ZQPOUsr7Qj1ZlyZXeMnMlI=
    
    [WireGuardPeer]
    AllowedIPs = 192.168.0.0/24
    PublicKey = HjxgpnWK367aURR7x6sy9b8wM3UhDJCbs/5XWGWe6CU=
    Endpoint = 10.0.1.1:51820
    
  4. Опишите (или скопируйте) конфигурационный файл для настройки интерфейса wg абонента company в соответствующем файле виртуальной машины
    @company:/etc/systemd/network/70-wg.network
    [Match]
    Name = wg
    
    [Network]
    Address = 192.168.0.2/24
    

    Примечание

    Поскольку в файл с описанием интерфейса могут обратиться любые процессы‑демоны или утилиты (при его создании ему автоматически были выданы права 0644), хранение там приватного ключа в чистом виде запрещено systemd. Для решения проблемы можно создать отдельный файл с приватным ключом и указать его в netdev‑файл через параметр PrivateKeyFile или ограничить права для файла только для группы systemd-network.
  5. С помощью команд управления правами доступа chgrp и chmod задайте права файлам создания интерфейсов wg, а после перезапустите сервис systemd-networkd для применения настроек
    [root@client ~]# chgrp systemd-network /etc/systemd/network/70-wg.netdev
    [root@client ~]# chmod o-r /etc/systemd/network/70-wg.netdev
    [root@client ~]# systemctl restart systemd-networkd
    [root@client ~]#
    
    [root@company ~]# chgrp systemd-network /etc/systemd/network/70-wg.netdev
    [root@company ~]# chmod o-r /etc/systemd/network/70-wg.netdev
    [root@company ~]# systemctl restart systemd-networkd
    
  6. С помощью команды ssh <dstIP> убедитесь в доступности SSH‑соединения с company на client через VPN‑соединение
    [root@company ~]# ssh 192.168.0.1
    The authenticity of host '192.168.0.1 (192.168.0.1)' can't be established.
    ED25519 key fingerprint is SHA256:BxaYoHAW5ddfM6EwmgSAZ2tKXCH0zoppLfEcQ8YiGdg.
    This host key is known by the following other names/addresses:
       ~/.ssh/known_hosts:3: 10.0.12.1
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    Warning: Permanently added '192.168.0.1' (ED25519) to the list of known hosts.
    Last login: Sun Oct 19 13:45:18 2025 from 10.0.23.3
    [root@client ~]#
    <^D>logout
    Connection to 192.168.0.1 closed.
    [root@company ~]#