You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
2.4 KiB
63 lines
2.4 KiB
4 years ago
|
#!/bin/bash
|
||
|
IP=127.0.0.1 # Server IP
|
||
|
P=1194 # Server Port
|
||
|
OVPN_SERVER='10.80.0.0/16' # VPN Network
|
||
|
|
||
|
#vpn_data=/var/lib/swarmlab/openvpn/openvpn-services/ # Dir to save data ** this must exist **
|
||
|
vpn_data=$PWD/openvpn-services/
|
||
|
if [ ! -d $vpn_data ]; then
|
||
|
mkdir -p $vpn_data
|
||
|
fi
|
||
|
|
||
|
NAME=swarmlab-vpn-services # name of docker service
|
||
|
DOCKERnetwork=swarmlab-vpn-services-network # docker network
|
||
|
docker=registry.vlabs.uniwa.gr:5080/myownvpn # docker image
|
||
|
|
||
|
docker stop $NAME #stop container
|
||
|
sleep 1
|
||
|
docker container rm $NAME #rm container
|
||
|
|
||
|
# rm config files
|
||
|
rm -f $vpn_data/openvpn.conf.*.bak
|
||
|
rm -f $vpn_data/openvpn.conf
|
||
|
rm -f $vpn_data/ovpn_env.sh.*.bak
|
||
|
rm -f $vpn_data/ovpn_env.sh
|
||
|
|
||
|
# create network
|
||
|
sleep 1
|
||
|
docker network create --attachable=true --driver=bridge --subnet=172.50.0.0/16 --gateway=172.50.0.1 $DOCKERnetwork
|
||
|
|
||
|
#run container see ovpn_genconfig
|
||
|
docker run --net=none -it -v $vpn_data:/etc/openvpn -p 1194:1194 --rm $docker ovpn_genconfig -u udp://$IP:1194 \
|
||
|
-N -d -c -p "route 172.50.20.0 255.255.255.0" -e "topology subnet" -s $OVPN_SERVER
|
||
|
|
||
|
# create pki see ovpn_initpki
|
||
|
docker run --net=none -v $vpn_data:/etc/openvpn --rm -it $docker ovpn_initpki
|
||
|
|
||
|
# see ovpn_copy_server_files
|
||
|
#docker run --net=none -v $vpn_data:/etc/openvpn --rm $docker ovpn_copy_server_files
|
||
|
|
||
|
#create vpn see --cap-add=NET_ADMIN
|
||
|
sleep 1
|
||
|
docker run --detach --name $NAME -v $vpn_data:/etc/openvpn --net=$DOCKERnetwork --ip=172.50.0.2 -p $P:1194/udp --cap-add=NET_ADMIN $docker
|
||
|
|
||
|
sudo sysctl -w net.ipv4.ip_forward=1
|
||
|
|
||
|
#show created
|
||
|
docker ps
|
||
|
|
||
|
echo -e "\nEnter the full path of the directory you want to copy the .ovpn files to: "
|
||
|
read path
|
||
|
for USERNAME in master worker_1 worker_2 worker_3 worker_4
|
||
|
do
|
||
|
|
||
|
docker run -v $vpn_data:/etc/openvpn --rm -it $docker easyrsa build-client-full $USERNAME nopass
|
||
|
docker run -v $vpn_data:/etc/openvpn --log-driver=none --rm $docker ovpn_getclient $USERNAME > $USERNAME.ovpn
|
||
|
|
||
|
tail -n +8 $USERNAME.ovpn > temp && cat temp > $USERNAME.ovpn
|
||
|
cat $USERNAME.ovpn > temp && cat extra_lines > $USERNAME.ovpn && cat temp >> $USERNAME.ovpn
|
||
|
|
||
|
mv $USERNAME.ovpn $path
|
||
|
|
||
|
done
|