From d24b81bed22231d6efc561604809e3dacf2aa0e5 Mon Sep 17 00:00:00 2001 From: Christian Poessinger Date: Sat, 24 Apr 2021 18:13:11 +0200 Subject: [PATCH] WireGuard: T1802: add mobile client config generation command --- docs/_static/images/wireguard_qrcode.jpg | Bin 0 -> 127083 bytes docs/configuration/interfaces/wireguard.rst | 126 +++++++++++++------- 2 files changed, 85 insertions(+), 41 deletions(-) create mode 100644 docs/_static/images/wireguard_qrcode.jpg diff --git a/docs/_static/images/wireguard_qrcode.jpg b/docs/_static/images/wireguard_qrcode.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8b03e4d34ab177c3b95d63657c08732078bf3536 GIT binary patch literal 127083 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

oZJ+1$Nys|4qG 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 Tu1+FXO8!T}4k2&n>&yQE*XJyn literal 0 HcmV?d00001 diff --git a/docs/configuration/interfaces/wireguard.rst b/docs/configuration/interfaces/wireguard.rst index 0e340007..07ced733 100644 --- a/docs/configuration/interfaces/wireguard.rst +++ b/docs/configuration/interfaces/wireguard.rst @@ -8,15 +8,16 @@ WireGuard is an extremely simple yet fast and modern VPN that utilizes state-of-the-art cryptography. See https://www.wireguard.com for more information. +************* Configuration -============= +************* WireGuard requires the generation of a keypair, which includes a private key to decrypt incoming traffic, and a public key for peer(s) to encrypt traffic. -Generate keypair ----------------- +Generate Keypair +================ .. opcmd:: generate wireguard default-keypair @@ -35,8 +36,8 @@ Generate keypair hW17UxY7zeydJNPIyo3UtGnBHkzTK/NeBOrDSIU9Tx0= -Generate named keypair ----------------------- +Generate Named Keypair +====================== Named keypairs can be used on a interface basis when configured. If multiple WireGuard interfaces are being configured, each can have their @@ -51,7 +52,7 @@ The commands below generates 2 keypairs unrelated to each other. Interface configuration ------------------------ +======================= The next step is to configure your local side as well as the policy based trusted destination addresses. If you only initiate a connection, @@ -210,56 +211,99 @@ to the server go over the connection. PersistentKeepalive = 25 -Operational commands -==================== +******************** +Operational Commands +******************** -**Show interface status** +Status +====== -.. code-block:: none +.. opcmd:: show interfaces wireguard - vyos@wg01# run show interfaces wireguard wg01 - interface: wg1 - description: VPN-to-wg01 - address: 10.2.0.1/24 - public key: RIbtUTCfgzNjnLNPQ/asldkfjhaERDFl2H/xUfbyjc= + Get a list of all wireguard interfaces + + .. code-block:: none + + Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down + Interface IP Address S/L Description + --------- ---------- --- ----------- + wg0 10.0.0.1/24 u/u + + +.. opcmd:: show interfaces wireguard + + Show general information about specific WireGuard interface + + .. code-block:: none + + vyos@vyos:~$ show interfaces wireguard wg01 + interface: wg0 + address: 10.0.0.1/24 + public key: h1HkYlSuHdJN6Qv4Hz4bBzjGg5WUty+U1L7DJsZy1iE= private key: (hidden) - listening port: 53665 - peer: to-wg02 - public key: u41jO3OF73Gq1WARMMFG7tOfk7+r8o8AzPxJ1FZRhzk= - latest handshake: 0:01:20 - status: active - endpoint: 192.168.0.124:12345 - allowed ips: 10.2.0.0/24 - transfer: 42 GB received, 487 MB sent - persistent keepalive: every 15 seconds - RX: - bytes packets errors dropped overrun mcast - 45252407916 31192260 0 244493 0 0 - TX: - bytes packets errors dropped carrier collisions - 511649780 5129601 24465 0 0 0 + listening port: 41751 -**Show public key of the default key** + RX: bytes packets errors dropped overrun mcast + 0 0 0 0 0 0 + TX: bytes packets errors dropped carrier collisions + 0 0 0 0 0 0 -.. code-block:: none +Encryption Keys +=============== - vyos@wg01# run show wireguard keypair pubkey default - FAXCPb6EbTlSH5200J5zTopt9AYXneBthAySPBLbZwM= +.. opcmd:: show wireguard keypair pubkey -**Show public key of a named key** + Show public key portion for specified key. This can be either the ``default`` + key, or any other named key-pair. -.. code-block:: none + The ``default`` keypair - vyos@wg01# run show wireguard keypair pubkey KP01 - HUtsu198toEnm1poGoRTyqkUKfKUdyh54f45dtcahDM= + .. code-block:: none + + vyos@vyos:~$ show wireguard keypair pubkey default + FAXCPb6EbTlSH5200J5zTopt9AYXneBthAySPBLbZwM= + + Name keypair ``KP01`` + + .. code-block:: none + + vyos@vyos:~$ show wireguard keypair pubkey KP01 + HUtsu198toEnm1poGoRTyqkUKfKUdyh54f45dtcahDM= + +.. opcmd:: delete wireguard keypair pubkey + + Delete a keypair, this can be either the ``default`` key, or any other + named key-pair. + + .. code-block:: none + + vyos@vyos:~$ delete wireguard keypair default -**Delete wireguard keypairs** +Mobile "RoadWarrior" clients +============================ -.. code-block:: none +Some users tend to connect their mobile devices using WireGuard to their VyOS +router. To ease deployment one can generate a "per mobile" configuration from +the VyOS CLI. - vyos@wg01$ delete wireguard keypair default +.. warning:: From a security perspective it is not recommended to let a third + party create the private key for a secured connection. You should create the + private portion on your own and only hand out the public key. Please keep this + in mind when using this convenience feature. +.. opcmd:: generate wireguard mobile-config server address + + Using this command you will create a client configuration which can connect to + ``interface`` on this router. The public key from the specified interface is + automatically extracted and embedded into the configuration. + + In addition you will specifiy the IP address or FQDN for the client where it + will connect to. The address parameter is used to assign a given client an + IPv4 or IPv6 address. + + .. figure:: /_static/images/wireguard_qrcode.jpg + :alt: WireGuard Client QR code .. stop_vyoslinter