#!/bin/sh # 2020-06-13, 2022-01-20, Nico Schottelius # Add a VPN to either of our devices if [ $# -lt 2 ]; then echo "$0 device-ip vpn-server" echo " device-ip-address: where to find the device" echo " device-name: device we configure" echo " [wireguard-private-key]: wg key to reuse" exit 1 fi # Get & set vpnserver network & co. via rest? device_ip=$1; shift device_name=$1; shift # Whitelisting of enabled networks case $device_name in *-03??|*-09??|*-0a??) device_id=$(echo $device_name | sed 's/.*-\(....\)$/\1/') vpnserver_id=$(echo $device_id | sed 's/\(..\)..$/\1/') prefix_base=2a0a:e5c1:${device_id} vpn_endpoint_host=vpn-2a0ae5c1${vpnserver_id}.ungleich.ch case $vpnserver_id in 03) # cdist, viirb, linthal vpn_endpoint_pubkey="ft68G2RID7gZ6PXjFCSCOdJ9yspRg+tUw0YrNK9cTxE=" ;; 05) # cdist, vigir, linthal vpn_endpoint_pubkey="oaFiIVV1NjvDcfdtwJqR4F3k2XIC07npNgj0YjIEem4=" ;; 06) # cdist, viwib, linthal vpn_endpoint_pubkey="ygZQW3OSiMJl/RpKyaJVE0GSt6bjEDnoxdMJsNiloRE=" ;; 09) # k8s, viwib2 made, linthal vpn_endpoint_pubkey="vnDJHqkAdMs8QkiIQizGGcPlaQfAwVBUvTBrYKfDZmE=" ;; a0) # k8s, viwib2 made, diesbach vpn_endpoint_pubkey="Hxb5lV5r90r3hT9/JsMM8zIzrzYfXHCtt1jFtPgDlCQ=" ;; esac ;; *) echo "$device_type currently unsupported" exit 1 ;; esac echo Setting up $device_name connecting to $vpn_endpoint_host for $prefix_base set -x hex_id=$device_id device_hostname=${device_name} my_prefix=${prefix_base} my_network=${my_prefix}::/48 my_wireguard_ip=${my_prefix}::42 my_lan_ip=${my_prefix}:cafe::42 my_wifi_ip=${my_prefix}:7ea::42 # wireguard if [ $# -eq 1 ]; then private_key=$1; shift else private_key=$(wg genkey) fi public_key=$(echo $private_key | wg pubkey) echo "Trying to reach ${device_ip} ..." ping -c3 ${device_ip} if [ $? -ne 0 ]; then echo "Cannot reach ${device_ip}, aborting" exit 1 fi cat <