Введение
В руководстве приведено описание настройки WireGuard-соединения между сервером (на примере vESR) и клиентом (ESR-31).
Конфигурация соединения
Генерация ключей x25519 для WireGuard
Соединение устанавливается на основе аутентификации ключей.
На ESR реализован механизм генерации ключей для WireGuard. Поэтому первым делом сгенерируем публичные ключи для взаимного обмена между устройствами и приватные ключи для использования в конфигурации устройства, которые будут храниться в crypto:private-key/
и crypto:public-key/
соответственно.
Публичный ключ создаётся на основе приватного.
На сервере приватный ключ wg_server.priv и публичный ключ wg_server.pub:
vesr# crypto generate private-key x25519 filename wg_server.priv vesr# crypto generate public-key x25519 private-key wg_server.priv filename wg_server.pub
На клиенте приватный ключ wg_client_1.priv и публичный ключ wg_client_1.pub:
esr-31# crypto generate private-key x25519 filename wg_client_1.priv esr-31# crypto generate public-key x25519 private-key wg_client_1.priv filename wg_client_1.pub
После того, как публичные ключи будут переданы между устройствами (например, с помощью TFTP), можно приступить к настройке сервера.
Настройка сервера - remote-access
Минимальная конфигурация WireGuard для сервера - создан object-group, сконфигурирован интерфейс для выхода в интернет, прописан маршрут, сконфигурирован сервер wireguard.
object-group network client1 ip address-range 10.0.0.2 exit interface gigabitethernet 1/0/1 ip firewall disable ip address 192.168.43.3/20 exit remote-access wireguard wg ip firewall disable port 43020 mtu 1420 local-address 10.0.0.1/24 private-key wg_server.priv peer 1 subnet client1 public-key wg_client_1.pub enable exit enable exit ip route 0.0.0.0/0 192.168.32.1
Настройка клиента - tunnel
Минимальная конфигурация WireGuard для клиента - создан object-group, сконфигурирован интерфейс для выхода в интернет, прописан маршрут, сконфигурирован туннель wireguard.
object-group network client1 ip prefix 10.0.0.0/24 exit interface gigabitethernet 1/0/1 ip firewall disable ip address 192.168.43.23/20 exit tunnel wireguard 1 ip firewall disable mtu 1420 private-key wg_client_1.priv ip address 10.0.0.2/24 peer 1 subnet client1 remote address 192.168.43.3 remote port 43020 public-key wg_server.pub enable exit enable exit ip route 0.0.0.0/0 192.168.32.1
Когда в конфигурацию добавляется subnet, в таблице маршрутизации появляется статический маршрут.
В примере для того, чтобы соединение установилось, был выключен firewall на всех интерфейсах - ip firewall disable.
Для того, чтобы firewall пропускал трафик, нужно в security zone-pair разрешить UDP порты wireguard'а.
По-умолчанию на ESR порт для сервера 5000, а для клиента - 0. Пакеты, приходящие на WG-интерфейс, инкапсулируются в UDP.
Проверка состояния соединения
Просмотр настроек remote-access
На сервере для просмотра статуса WireGuard'а доступны аналогичные другим remote-access-соединениям команды.
vesr# show remote-access configuration Show remote-access configuration counters Show remote access counters status Show remote access status vesr# show remote-access configuration Name State Description -------------------------------- -------- -------------------------------------------------- wg Enabled WireGuard vesr# show remote-access configuration wireguard wg State: Enabled VRF: -- Description: WireGuard Port: 43020 MTU: 1420 Local addres: 10.0.0.1/24 Security zone: -- Private key: wg_server.priv Peer: 1 State: Enabled Description: -- Public key: wg_client_1.pub Subnet: client1 DNS servers: -- vesr# show remote-access counters User IP-address Packets recv Bytes recv Err recv MC recv ------------- --------------------- ------------ ---------- ---------- ---------- peer 1 10.0.0.2 -- 1552 -- -- User IP-address Packets sent Bytes sent Err sent ------------- --------------------- ------------ ---------- ---------- peer 1 10.0.0.2 -- 1552 -- vesr# show remote-access status User IP-address Server ---------------- --------------------- -------------------------------------- peer 1 10.0.0.2 wireguard(wg) Count sessions: 1
Просмотр настроек tunnels
На клиенте для просмотра статуса WireGuard'а доступны аналогичные другим tunnels-соединениям команды.
esr-31# show tunnels configuration Show tunnels' configuration counters Show tunnels' counters history Show tunnels' counters and utilization history status Show tunnels' status utilization Show tunnels' utilization esr-31# show tunnels configuration Tunnel State Description ---------------- -------- ------------------------------ wireguard 1 Enabled -- esr-31# show tunnels configuration wireguard 1 State: Enabled Description: -- VRF: -- Security zone: -- IP address: 10.0.0.2/24 Port: 0 MTU: 1420 esr-31# show tunnels counters Tunnel Packets recv Bytes recv Errors recv MC recv ---------------- -------------- -------------- -------------- -------------- wireguard 1 13 1552 0 0 Tunnel Packets sent Bytes sent Errors sent ---------------- -------------- -------------- -------------- wireguard 1 13 1552 0 esr-31# show tunnels status Tunnel Admin Link MTU Local IP Remote IP Last change state state (d,h:m:s) ---------------- ----- ----- ------ ---------------- ---------------- ------------- wireguard 1 Up Up 1420 10.0.0.2 -- 00,16:36:20 esr-31# show tunnels utilization Tunnel Period, s Sent, kbit/s Recv, kbit/s Sent, Recv, packets/s packets/s ---------------- ----------- ------------ ------------ -------------- -------------- wireguard 1 5 0 0 0 0
WireGuard - stateless VPN протокол, поэтому и сервер, и клиент всегда будут UP в ожидании инициализации соединения от другой стороны.