====== Wireguard ====== ===== Create Key Pairs ===== **Host A** root@hosta # wg genkey > privateA root@hosta # wg pubkey < privateA > publicA **Host B** root@hostb # wg genkey > privateB root@hostb # wg pubkey < privateB > publicB ===== Assign Link Network to Wireguard-Tunnel ===== Link-Network: 172.24.0.0/30 HostA: 172.24.0.1/30 HostB: 172.24.0.2/30 ===== Create Config ===== **Assumption** Host A is visible to Host B **Host A** root@hosta # cat /etc/wireguard/wg0.conf # HostA - HostB [Interface] Address = 172.24.0.1/30 PrivateKey = ListenPort = 51820 [Peer] PublicKey = AllowedIPs = 172.24.0.2/32 **Host B** root@hostb # cat /etc/wireguard/wg0.conf # HostB - HostA [Interface] Address = 172.24.0.2/30 PrivateKey = ListenPort = 51820 #If something needs to happen after tunnel is up or before tunnel goes down #PostUp = /usr/local/sbin/wg0-PostUp.sh #PreDown = /usr/local/sbin/wg0-PreDown.sh [Peer] PublicKey = Endpoint = AllowedIPs = 172.24.0.1/32 # Uncomment if HostB is behind NAT Router # PersistentKeepAlive = 25 ===== Start Wireguard Tunnel ===== Issue on both hosts root@hosta # wg-quick up wg0 root@hostb # wg-quick up wg0 ===== Check Status ===== **Host A** root@hosta # wg interface: wg0 public key: PUBLIC-KEY-A private key: (hidden) listening port: 51820 peer: PUBLIC-KEY-B endpoint: 185.69.244.140:25920 allowed ips: 172.24.0.2/32 latest handshake: 1 minute, 44 seconds ago transfer: 2.80 MiB received, 1.09 MiB sent **Host B** root@hostb # wg interface: wg0 public key: PUBLIC-KEY-B private key: (hidden) listening port: 51820 peer: PUBLIC-KEY-A endpoint: 144.76.72.57:51820 allowed ips: 172.24.0.1/32 latest handshake: 21 seconds ago transfer: 1006.68 KiB received, 2.57 MiB sent persistent keepalive: every 25 seconds ===== Fallback systemd service to call PreDown script ===== root@hostb # cat << EOF > /etc/systemd/system/wg0-shutdown-fallback.service [Unit] Description=WireGuard wg0 shutdown fallback DefaultDependencies=no Before=shutdown.target reboot.target halt.target Before=wg-quick@wg0.service Conflicts=shutdown.target reboot.target halt.target After=local-fs.target [Service] Type=oneshot RemainAfterExit=yes ExecStart=/bin/true ExecStop=/usr/local/sbin/wg0-PreDown.sh TimeoutStopSec=30 [Install] WantedBy=multi-user.target EOF root@hostb # systemctl daemon-reload root@hostb # systemctl enable wg0-shutdown-fallback.service root@hostb # systemctl start wg0-shutdown-fallback.service {{tag>kb linux}}