From 48c4f5e38461521ecbdbb73c25c834b290934ad1 Mon Sep 17 00:00:00 2001 From: Ivan Razin Date: Tue, 18 Jun 2024 09:13:57 +0300 Subject: [PATCH] Create awg-gen-config.sh --- awg-gen-config.sh | 115 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 awg-gen-config.sh diff --git a/awg-gen-config.sh b/awg-gen-config.sh new file mode 100644 index 0000000..a6812b1 --- /dev/null +++ b/awg-gen-config.sh @@ -0,0 +1,115 @@ +#!/bin/bash + +set -xe + +export SERVER_NAME="serverwg" +export INTERFACE_WG="wg0" + +sudo mkdir -p /etc/amnezia/amneziawg/keys ; + +wg genkey | sudo tee "/etc/amnezia/amneziawg/keys/server.key" | \ +wg pubkey | sudo tee "/etc/amnezia/amneziawg/keys/server.key.pub"; + +echo +echo "CREATING THE SERVER CONFIG" +echo + +DEFAULT_INTERFACE="$(ip -o -4 route show to default | awk '{print $5}')" +MAIN_IP="$(hostname -I | cut -d' ' -f1)" + +PRIVATE_KEY=$(sudo cat /etc/amnezia/amneziawg/keys/server.key) + +PORT=$(shuf -i 52800-53000 -n1) + +J_C=$(shuf -i 7-15 -n1) +J_MIN=$(shuf -i 35-65 -n1) +J_MAX=$(shuf -i 800-950 -n1) +S_1=$(shuf -i 50-70 -n1) +S_2=$(shuf -i 130-150 -n1) +H_1=$(shuf -i 1006457265-1206457265 -n1) +H_2=$(shuf -i 239455488-259455488 -n1) +H_3=$(shuf -i 1109847463-1309847463 -n1) +H_4=$(shuf -i 1546644382-1746644382 -n1) + +cat << EOF | sudo tee "/etc/amnezia/amneziawg/${INTERFACE_WG}.conf" +[Interface] +Address = 10.90.90.1/24 +ListenPort = ${PORT} +PrivateKey = ${PRIVATE_KEY} +Jc = ${J_C} +Jmin = ${J_MIN} +Jmax = ${J_MAX} +S1 = ${S_1} +S2 = ${S_2} +H1 = ${H_1} +H2 = ${H_2} +H3 = ${H_3} +H4 = ${H_4} + +EOF + +sudo chmod 600 "/etc/amnezia/amneziawg/${INTERFACE_WG}.conf" "/etc/amnezia/amneziawg/keys/server.key" + +echo +echo "ACTIVATING WIREGUARD SERVICE" +echo + +sudo wg-quick up "${INTERFACE_WG}" +sudo wg show "${INTERFACE_WG}" + +echo +echo "ENABLE WIREGUARD SERVICE AT BOOT" +echo + +sudo systemctl enable awg-quick@wg0 + + +chmod -R 755 /etc/amnezia/amneziawg + +cat << EOF | sudo tee "/etc/systemd/system/wg-dash.service" +[Unit] +After=syslog.target network-online.target +ConditionPathIsDirectory=/etc/amnezia/amneziawg + +[Service] +Type=forking +User=root +Group=root +PIDFile=/wgdashboard/src/gunicron.pid +WorkingDirectory=/wgdashboard/src +ExecStart=/usr/bin/env gunicorn --access-logfile /wgdashboard/src/log/access.log --error-logfile /wgdashboard/src/log/error.log 'dashboard:run_dashboard()' --pid /wgdashboard/src/gunicron.pid +PrivateTmp=true +Restart=no + +[Install] +WantedBy=multi-user.target + +EOF + +cat << EOF | sudo tee "/wgdashboard/src/wg-dashboard.ini" +[Account] +username = admin +password = 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 + +[Server] +wg_conf_path = /etc/amnezia/amneziawg +app_ip = 0.0.0.0 +app_port = 10085 +auth_req = true +version = v3.1 +dashboard_refresh_interval = 60000 +dashboard_sort = status +dashboard_theme = light + +[Peers] +peer_endpoint_allowed_ip = 0.0.0.0/0 +peer_display_mode = grid +remote_endpoint = ${MAIN_IP} +peer_keep_alive = 21 + + +EOF + +systemctl daemon-reload + +systemctl enable wg-dash --now