„wg-config“ hinzufügen
This commit is contained in:
parent
fba3a95c79
commit
5449d19b46
142
wg-config
Normal file
142
wg-config
Normal file
@ -0,0 +1,142 @@
|
||||
#!/bin/bash
|
||||
|
||||
# This script creates a wireguard configuration for both sides
|
||||
|
||||
prog="$(basename $0)"
|
||||
|
||||
a_privkey=$(wg genkey)
|
||||
a_pubkey=$(echo ${a_privkey} | wg pubkey)
|
||||
a_file=./side-a.conf
|
||||
a_print_qr=0
|
||||
a_print_opn=0
|
||||
|
||||
b_privkey=$(wg genkey)
|
||||
b_pubkey=$(echo ${b_privkey} | wg pubkey)
|
||||
b_file=./side-b.conf
|
||||
b_print_qr=0
|
||||
b_print_opn=0
|
||||
|
||||
port=51820
|
||||
persistent_keepalive=25
|
||||
psk=$(wg genpsk)
|
||||
|
||||
if ! which wg > /dev/null; then
|
||||
echo "Please install wireguard before running this script!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! which qrencode > /dev/null; then
|
||||
echo "Please install qrencode before running this script!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
|
||||
usage() {
|
||||
cat >&2 <<-EOF
|
||||
usage: $prog [-h]
|
||||
creates a wireguard configuration for both endpoints
|
||||
|
||||
-e ENDPOINT_ADDR Endpoint address on side A
|
||||
-t TUNNEL_ADDR Tunnel address on side A
|
||||
-n NETWORKS CIDR formatted networks accessible on side A (comma separated)
|
||||
-d DNS DNS servers and suffixes accessible on side A (comma separated)
|
||||
-f FILENAME Save side A to specified file (default: $a_file)
|
||||
-q Print side A as QR code
|
||||
-o Print side A as OPNsense template
|
||||
|
||||
-E ENDPOINT Endpoint address on side B
|
||||
-T TUNNEL_ADDR Tunnel address on side B
|
||||
-N NETWORKS CIDR formatted networks accessible on side B (comma separated)
|
||||
-D DNS DNS servers and suffixes accessible on side B (comma separated)
|
||||
-F FILENAME Save side B to specified file (default: $b_file)
|
||||
-Q Print side B as QR code
|
||||
-O Print side B as OPNsense template
|
||||
|
||||
-p PORT UDP Port (used on both sides, default: $port)
|
||||
-k KEEPALIVE Override PersistentKeepalive (default: $persistent_keepalive)
|
||||
|
||||
-h displays this help text
|
||||
---------------------------------------------------------------------------
|
||||
(C) 2023 wg-creator by bashclub (https://github.com/bashclub)
|
||||
Author: Thorsten Spille <thorsten@spille-edv.de>
|
||||
---------------------------------------------------------------------------
|
||||
EOF
|
||||
exit $1
|
||||
}
|
||||
|
||||
|
||||
while getopts "e:t:n:d:f:qoE:T:N:D:F:QOp:k:h" opt; do
|
||||
case $opt in
|
||||
h) usage 0 ;;
|
||||
e) a_endpoint_address=$OPTARG ;;
|
||||
E) b_endpoint_address=$OPTARG ;;
|
||||
t) a_tunnel_address=$OPTARG ;;
|
||||
T) b_tunnel_address=$OPTARG ;;
|
||||
n) a_networks=$OPTARG ;;
|
||||
N) b_networks=$OPTARG ;;
|
||||
d) a_dns=$OPTARG ;;
|
||||
D) b_dns=$OPTARG ;;
|
||||
f) a_file=$OPTARG ;;
|
||||
F) b_file=$OPTARG ;;
|
||||
q) a_print_qr=1 ;;
|
||||
Q) b_print_qr=1 ;;
|
||||
o) a_print_opn=1 ;;
|
||||
O) b_print_opn=1 ;;
|
||||
p) port=$OPTARG ;;
|
||||
k) persistent_keepalive=$OPTARG ;;
|
||||
esac
|
||||
done
|
||||
shift $((OPTIND-1))
|
||||
|
||||
cat << EOF > $a_file
|
||||
[Interface]
|
||||
PrivateKey = $a_privkey
|
||||
Address = $a_tunnel_address
|
||||
DNS = $b_dns
|
||||
Port = $port
|
||||
|
||||
[Peer]
|
||||
PublicKey = $b_pubkey
|
||||
PresharedKey = $psk
|
||||
AllowedIPs = $(echo $b_tunnel_address | cut -d '/' -f1)/32,$b_networks
|
||||
Endpoint = ${b_endpoint_address}:${port}
|
||||
PersistentKeepalive = $persistent_keepalive
|
||||
EOF
|
||||
|
||||
echo -e "SIDE A\n-----\n"
|
||||
if [ $a_print_qr -gt 0 ]; then
|
||||
qrencode -t ansiutf8 < $a_file
|
||||
elif [ $a_print_opn -gt 0 ]; then
|
||||
echo -e "Paste the following values into your OPNsense Wireguard config\n"
|
||||
echo -e "[Local]\n Public Key:\t\t$a_pubkey\n Private Key:\t\t$a_privkey\n Listen Port:\t\t$port\n Tunnel Address:\t$a_tunnel_address\n\n[Endpoint]\n Public Key:\t\t$b_pubkey\n Shared Secret:\t$psk\n Allowed IPs:\t\t$(echo $b_tunnel_address | cut -d '/' -f1)/32,$b_networks\n Endpoint Address:\t$b_endpoint_address\n Endpoint Port:\t$port\n Keepalive Interval:\t$persistent_keepalive\n"
|
||||
else
|
||||
cat $a_file
|
||||
echo ""
|
||||
fi
|
||||
|
||||
cat << EOF > $b_file
|
||||
[Interface]
|
||||
PrivateKey = $b_privkey
|
||||
Address = $b_tunnel_address
|
||||
DNS = $a_dns
|
||||
Port = $port
|
||||
|
||||
[Peer]
|
||||
PublicKey = $a_pubkey
|
||||
PresharedKey = $psk
|
||||
AllowedIPs = $(echo $a_tunnel_address | cut -d '/' -f1)/32,$a_networks
|
||||
Endpoint = ${a_endpoint_address}:${port}
|
||||
PersistentKeepalive = $persistent_keepalive
|
||||
EOF
|
||||
|
||||
echo -e "SIDE B\n-----\n"
|
||||
if [ $b_print_qr -gt 0 ]; then
|
||||
qrencode -t ansiutf8 < $b_file
|
||||
elif [ $b_print_opn -gt 0 ]; then
|
||||
echo -e "Paste the following values into your OPNsense Wireguard config\n"
|
||||
echo -e "[Local]\n Public Key:\t\t$b_pubkey\n Private Key:\t\t$b_privkey\n Listen Port:\t\t$port\n Tunnel Address:\t$b_tunnel_address\n\n[Endpoint]\n Public Key:\t\t$a_pubkey\n Shared Secret:\t$psk\n Allowed IPs:\t\t$(echo $a_tunnel_address | cut -d '/' -f1)/32,$a_networks\n Endpoint Address:\t$a_endpoint_address\n Endpoint Port:\t$port\n Keepalive Interval:\t$persistent_keepalive\n"
|
||||
else
|
||||
cat $b_file
|
||||
echo ""
|
||||
fi
|
Loading…
Reference in New Issue
Block a user