[openwrt] add script to only configure the wireguard vpn
This commit is contained in:
parent
755634facd
commit
04f38ee09b
1 changed files with 63 additions and 0 deletions
63
openwrt-add-wireguard.sh
Executable file
63
openwrt-add-wireguard.sh
Executable file
|
@ -0,0 +1,63 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# Nico Schottelius
|
||||||
|
# 2020-11-19
|
||||||
|
|
||||||
|
if [ $# -lt 4 ]; then
|
||||||
|
echo "$0 ip-address vpn-server ipv6-network [privatekey]"
|
||||||
|
echo " ip-address: where to find the OpenWRT device"
|
||||||
|
echo " vpn-server: where to connect to"
|
||||||
|
echo " vpn-server-pubkey: public key of the server"
|
||||||
|
echo " ipv6-network: which network to use for us (/48 expected)"
|
||||||
|
echo " private-key: specify wireguard key optionally"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
my_ip=$1; shift
|
||||||
|
vpn_endpoint_host=$1; shift
|
||||||
|
vpn_endpoint_pubkey=$1; shift
|
||||||
|
network=$1; shift
|
||||||
|
|
||||||
|
# wireguard
|
||||||
|
if [ $# -eq 1 ]; then
|
||||||
|
private_key=$1; shift
|
||||||
|
else
|
||||||
|
private_key=$(wg genkey)
|
||||||
|
fi
|
||||||
|
|
||||||
|
my_prefix=$(echo $network | sed 's,::/.*,,')
|
||||||
|
my_wireguard_ip=${my_prefix}::42
|
||||||
|
|
||||||
|
public_key=$(echo $private_key | wg pubkey)
|
||||||
|
|
||||||
|
cat <<EOF | ssh -t "root@${my_ip}"
|
||||||
|
set -x
|
||||||
|
|
||||||
|
opkg update
|
||||||
|
|
||||||
|
opkg install wireguard luci-app-wireguard
|
||||||
|
|
||||||
|
# VPN / Wireguard
|
||||||
|
uci set network.wg0=interface
|
||||||
|
uci set network.wg0.proto='wireguard'
|
||||||
|
uci set network.wg0.private_key='${private_key}'
|
||||||
|
uci set network.wg0.listen_port='51820'
|
||||||
|
uci set network.wg0.addresses='${my_wireguard_ip}/64'
|
||||||
|
|
||||||
|
if ! uci get network.@wireguard_wg0[0]; then
|
||||||
|
uci add network wireguard_wg0
|
||||||
|
fi
|
||||||
|
|
||||||
|
uci set network.@wireguard_wg0[0]=wireguard_wg0
|
||||||
|
uci set network.@wireguard_wg0[0].persistent_keepalive='25'
|
||||||
|
uci set network.@wireguard_wg0[0].public_key='${vpn_endpoint_pubkey}'
|
||||||
|
uci set network.@wireguard_wg0[0].description='IPv6VPN.ch by ungleich'
|
||||||
|
uci set network.@wireguard_wg0[0].allowed_ips='::/0'
|
||||||
|
uci set network.@wireguard_wg0[0].endpoint_host='${vpn_endpoint_host}'
|
||||||
|
uci set network.@wireguard_wg0[0].endpoint_port='51820'
|
||||||
|
uci set network.@wireguard_wg0[0].route_allowed_ips='1'
|
||||||
|
|
||||||
|
# commit
|
||||||
|
uci commit
|
||||||
|
reboot
|
||||||
|
|
||||||
|
EOF
|
Loading…
Reference in a new issue