Differences

This shows you the differences between two versions of the page.

Link to this comparison view

isc:labs:10 [2024/12/08 20:19]
florin.stancu
isc:labs:10 [2024/12/11 10:20] (current)
radu.mantu [[20p] 0. Setup & EasyRSA certificate generation]
Line 44: Line 44:
  
 <​solution -hidden> <​solution -hidden>
 +<code bash>
 ./easyrsa gen-req Server ./easyrsa gen-req Server
 ./easyrsa sign-req server Server ./easyrsa sign-req server Server
 ./easyrsa gen-req Client ./easyrsa gen-req Client
 ./easyrsa sign-req client Client ./easyrsa sign-req client Client
 +</​code>​
 </​solution>​ </​solution>​
  
Line 108: Line 110:
 ==== [40p] 2. WireGuard ==== ==== [40p] 2. WireGuard ====
  
-TODO+Wireguard is one of the latest open-source VPN technology, increasingly popular for its low complexity, straight-forward , security and performance due to its use of some modern cryptographic primitives (ChaCha20+Poly1305 for symmetric encryption, Curve25519 for ECDH, BLAKE2s for hashing). 
 + 
 +Authentication is done by simply exchanging public keys. Let's go! 
 + 
 +1. Both pairs should generate a private and public key pair and share the public counterpart. This is best done using the ''​wg''​ CLI utility: <code bash> 
 +wg genkey | tee wg-priv.key | wg pubkey | tee wg-pub.key 
 +# Q: what does `tee` do? (`man` it!) 
 +</​code>​ 
 + 
 +Only the public key is displayed on console (both are stored as files for backup!). Share it with your colleague! 
 + 
 +2. Time to create our configuration file. Create a ''​.conf''​ file inside ''/​etc/​wireguard/''​ (your choice of naming, though ''​wg-isc''​ sounds quite okay). 
 + 
 +Use the following code template and fill the variables (also remove/​replace the ''<​..>''​ placeholders!):​ <​code>​ 
 +[Interface] 
 +PrivateKey = <​paste-your-private-key>​ 
 +ListenPort = 55820 
 + 
 +[Peer] 
 +PublicKey = <​paste-your-colleagues'​s-pub-key>​ 
 +Endpoint = <​colleague-VM-IP>:​55820 
 +AllowedIPs = <​your-tunnel-subnet>/<​mask>​ 
 +</​code>​ 
 + 
 +Use a private space as the tunnel subnet address, e.g., ''​10.12.34.252/​30''​. 
 + 
 +3. We'll create the wireguard interfaces the ''​iproute2''​ way (i.e., using the ''​ip''​ Linux utility): <​code>​ 
 +ip link add wg-isc type wireguard 
 +wg setconf wg-isc /​etc/​wireguard/​wg-isc.conf ​ # or whatever you named your config 
 +ip address add <​your-address>/<​mask>​ dev wg-isc 
 +</​code>​ 
 + 
 +4. Connectivity test! <​code>​ 
 +ping <​colleague-private-tunnel-ip>​ 
 +sudo wg  # show wireguard statistics 
 +</​code>​ 
 + 
 +<note tip> 
 +**Note:** there are even simpler ways of configuring Wireguard, like [[https://​www.man7.org/​linux/​man-pages/​man8/​wg-quick.8.html|wg-quick]] (automates interface creation & IP address/​routes configuration using a similar .conf file) and [[https://​github.com/​wg-easy/​wg-easy|wg-easy]] (Web GUI for Wireguard) -- but we wanted to demonstrate its purest form (: 
 +</​note>​
  
  
isc/labs/10.1733681999.txt.gz · Last modified: 2024/12/08 20:19 by florin.stancu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0