From ec23969bc8b767abc866bf3c1298443f8fef3073 Mon Sep 17 00:00:00 2001 From: usman-umer Date: Mon, 12 Jul 2021 12:34:54 +0100 Subject: [PATCH] updated diagram, updated sudo wg, fixed heading sizes, replaced pub IPs --- .../images/wireguard_site2site_diagram.jpg | Bin 0 -> 21630 bytes docs/_static/images/wireguard_vpn_diagram.jpg | Bin 20147 -> 0 bytes docs/configuration/interfaces/wireguard.rst | 75 +++++++++--------- 3 files changed, 38 insertions(+), 37 deletions(-) create mode 100644 docs/_static/images/wireguard_site2site_diagram.jpg delete mode 100644 docs/_static/images/wireguard_vpn_diagram.jpg diff --git a/docs/_static/images/wireguard_site2site_diagram.jpg b/docs/_static/images/wireguard_site2site_diagram.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fc305952c97dcbf708a2e3c55af9fc0a47e4a354 GIT binary patch literal 21630 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' set interfaces wireguard wg01 peer to-wg02 port '51820' set interfaces wireguard wg01 peer to-wg02 pubkey 'XMrlPykaxhdAAiSjhtPlvi30NVkvLQliQuKP7AI7CyI=' set interfaces wireguard wg01 port '51820' @@ -101,14 +101,14 @@ one. .. code-block:: none - set interfaces wireguard wg01 address '10.1.0.1/30' # Address of the wg01 tunnel interface. + set interfaces wireguard wg01 address '10.1.0.1/30' # Address of the wg01 tunnel interface. set interfaces wireguard wg01 description 'VPN-to-wg02' - set interfaces wireguard wg01 peer to-wg02 allowed-ips '192.168.2.0/24'# Subnets that are allowed to travel over the tunnel - set interfaces wireguard wg01 peer to-wg02 address '2.2.2.2' # Public IP of the peer - set interfaces wireguard wg01 peer to-wg02 port '58120' # Port of the Peer - set interfaces wireguard wg01 peer to-wg02 pubkey '' # Public Key of the Peer - set interfaces wireguard wg01 port '51820' # Port of own server - set protocols static route 192.168.2.0/24 interface wg01 # Static route to remote subnet + set interfaces wireguard wg01 peer to-wg02 allowed-ips '192.168.2.0/24' # Subnets that are allowed to travel over the tunnel + set interfaces wireguard wg01 peer to-wg02 address '' # Public IP of the peer + set interfaces wireguard wg01 peer to-wg02 port '58120' # Port of the Peer + set interfaces wireguard wg01 peer to-wg02 pubkey '' # Public Key of the Peer + set interfaces wireguard wg01 port '51820' # Port of own server + set protocols static route 192.168.2.0/24 interface wg01 # Static route to remote subnet The last step is to define an interface route for 10.2.0.0/24 to get through the WireGuard interface `wg01`. Multiple IPs or networks can be @@ -139,7 +139,7 @@ or allows the traffic. set interfaces wireguard wg01 address '10.1.0.2/30' set interfaces wireguard wg01 description 'VPN-to-wg01' set interfaces wireguard wg01 peer to-wg02 allowed-ips '192.168.1.0/24' - set interfaces wireguard wg01 peer to-wg02 address '1.1.1.1' + set interfaces wireguard wg01 peer to-wg02 address '' set interfaces wireguard wg01 peer to-wg02 port '51820' set interfaces wireguard wg01 peer to-wg02 pubkey 'u41jO3OF73Gq1WARMMFG7tOfk7+r8o8AzPxJ1FZRhzk=' set interfaces wireguard wg01 port '51820' @@ -149,18 +149,18 @@ or allows the traffic. .. code-block:: none - set interfaces wireguard wg01 address '10.1.0.2/30' # Address of the wg01 tunnel interface. + set interfaces wireguard wg01 address '10.1.0.2/30' # Address of the wg01 tunnel interface. set interfaces wireguard wg01 description 'VPN-to-wg01' - set interfaces wireguard wg01 peer to-wg02 allowed-ips '192.168.1.0/24'# Subnets that are allowed to travel over the tunnel - set interfaces wireguard wg01 peer to-wg02 address '1.1.1.1' # Public IP address of the Peer - set interfaces wireguard wg01 peer to-wg02 port '12345' # Port of the Peer - set interfaces wireguard wg01 peer to-wg02 pubkey '' # Public key of the Peer - set interfaces wireguard wg01 port '51820' # Port of own server - set protocols static route 192.168.1.0/24 interface wg01 # Static route remote subnet + set interfaces wireguard wg01 peer to-wg02 allowed-ips '192.168.1.0/24' # Subnets that are allowed to travel over the tunnel + set interfaces wireguard wg01 peer to-wg02 address 'Site1 Pub IP' # Public IP address of the Peer + set interfaces wireguard wg01 peer to-wg02 port '51820' # Port of the Peer + set interfaces wireguard wg01 peer to-wg02 pubkey '' # Public key of the Peer + set interfaces wireguard wg01 port '51820' # Port of own server + set protocols static route 192.168.1.0/24 interface wg01 # Static route to remote subnet -************************** +******************* Firewall Exceptions -************************** +******************* For the WireGuard traffic to pass through the WAN interface, you must create a firewall exception. @@ -215,9 +215,9 @@ its content. Make sure you distribute the key in a safe manner, wg02# set interfaces wireguard wg01 peer to-wg01 preshared-key 'rvVDOoc2IYEnV+k5p7TNAmHBMEGTHbPU8Qqg8c/sUqc=' -******************************* -Mobile "RoadWarrior" Example -******************************* +*********************************** +Remote Access "RoadWarrior" Example +*********************************** With WireGuard, a Road Warrior VPN config is similar to a site-to-site VPN. It just lacks the ``address`` and ``port`` statements. @@ -287,17 +287,18 @@ Operational Commands Status ====== -.. opcmd:: sudo wg +.. opcmd:: show interfaces wireguard wg0 summary Show info about the Wireguard service. Also shows the latest handshake. .. code-block:: none + vyos@vyos:~$ show interfaces wireguard wg0 summary interface: wg0 public key: private key: (hidden) - listening port: 51869 + listening port: 51820 peer: endpoint: @@ -335,9 +336,9 @@ Status TX: bytes packets errors dropped carrier collisions 0 0 0 0 0 0 -************************** +*************** Encryption Keys -************************** +*************** .. opcmd:: show wireguard keypair pubkey @@ -368,9 +369,9 @@ Encryption Keys vyos@vyos:~$ delete wireguard keypair default -******************************* -Mobile "RoadWarrior" clients -******************************* +*********************************** +Remote Access "RoadWarrior" clients +*********************************** 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