1
0
Fork 0
mirror of https://github.com/iiab/iiab.git synced 2025-02-13 11:42:08 +00:00
iiab/roles/openvpn/templates/iiab-vpn

93 lines
2.3 KiB
Text
Raw Normal View History

2018-04-29 06:20:53 +00:00
#!/bin/bash
2017-05-27 18:09:50 +00:00
# script to manage openvpn
2018-04-29 06:20:53 +00:00
if [ ! -f "/etc/openvpn/iiab-vpn.conf" ]; then
2018-04-29 06:20:53 +00:00
VPNCONFIG='party-line.conf'
2018-04-29 06:34:11 +00:00
VPNIP={{ openvpn_server_virtual_ip }}
2017-05-27 18:09:50 +00:00
else
2018-04-29 06:20:53 +00:00
# expect the sourced file to set the above variables
source /etc/openvpn/iiab-vpn.conf
2017-05-27 18:09:50 +00:00
fi
# we'd like the user of this script to have root privilege
if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root" 1>&2
exit 1
fi
case $1 in
2018-04-29 06:20:53 +00:00
"stop" | "no" | "off")
killall openvpn
exit 0
;;
"status")
pid=`ps -e|grep openvpn`
if [ -z "$pid" ]; then
2018-04-29 06:34:11 +00:00
echo "The OpenVPN process is not running"
2018-04-29 06:20:53 +00:00
else
2018-04-29 06:34:11 +00:00
echo "OpenVPN is running with id $pid"
2018-04-29 06:20:53 +00:00
ip=`ifconfig tun | gawk '(/netmask /) {print( $2);}'`
echo "Local vpn tunnel address is $ip"
fi
exit 0
;;
2017-05-27 18:09:50 +00:00
esac
2018-04-29 06:40:33 +00:00
# we'd like for password authentication to be turned off
2017-05-27 18:09:50 +00:00
grep -e^PasswordAuthentication.*[Yy]es /etc/ssh/sshd_config
PASSWORDS_ENABLED=$?
if [ $PASSWORDS_ENABLED -eq 0 ];then
2018-04-29 06:20:53 +00:00
case $1 in
"test" | "unsafe") ;;
*)
2018-04-29 06:34:11 +00:00
echo "OpenVPN is only safe when public/private keys are used"
2018-04-29 06:20:53 +00:00
echo " And when passwords are turned off in /etc/ssh/sshd_conf"
exit 1
esac
2017-05-27 18:09:50 +00:00
fi
# openvpn config file directory
dir=/etc/openvpn
if [ $# -eq 0 ]; then
2018-04-29 06:20:53 +00:00
cmd="test"
2017-05-27 18:09:50 +00:00
else
2018-04-29 06:20:53 +00:00
cmd=$1
2017-05-27 18:09:50 +00:00
fi
case $cmd in
2018-04-29 06:20:53 +00:00
"test" | "unsafe" )
# load TUN/TAP kernel module
modprobe tun
2017-05-27 18:09:50 +00:00
2018-04-29 06:20:53 +00:00
# make sure the wan is functioning
# 8.8.8.8 is one of google's dns servers
ping -c 3 -i 3 8.8.8.8
if [ $? -ne 0 ]; then
echo "internet is not available, tunnel not possible"
exit 1
fi
2017-05-27 18:09:50 +00:00
2018-04-29 06:20:53 +00:00
# check the vpn tunnel
ping -c 5 -i 5 "$VPNIP"
# a zero return means the tunnel is up
if [ $? -ne "0" ]; then
echo "Stopping any openvpn instance"
killall openvpn
sleep 10
2018-04-29 06:34:11 +00:00
echo "Starting OpenVPN and waiting 10 seconds for daemon to become ready"
2018-04-29 06:20:53 +00:00
openvpn --cd $dir --daemon --config $VPNCONFIG
fi
sleep 10
echo "Testing VPN connection"
ping -c 4 -i 4 "$VPNIP"
if [ $? -eq 0 ]; then
echo "vpn tunnel established"
else
echo "vpn connection failed"
fi
2018-04-29 06:34:11 +00:00
2018-04-29 06:20:53 +00:00
;;
2017-05-27 18:09:50 +00:00
esac