×עש׀֌ך×××
×ק×××
× ×Öž× ××××¢× ×¢× ×× ××Ö·×עךק×× ××¢× ×€×× ×× ×€×š×עך××קע ×€ÖŒ×֞ס××, ××× ×××× ××¢××¢× ×Ö·× ×× ××××€ÖŒ× ×©×עך×× × ×€×× ×× ×××€ÖŒ××Ö·××¢× ×××ש×Ö·× ××× ×× × ××Š× ×€×× ×Ö· ×× ×עך×××××¢×š× - ×Ö· ×ך×× ×€ÖŒ×ַך××× (VPS) ×××֞ס ××Öž× ××¢××××× ×× ×§×š×Ö·× × ×€ÖŒ×ַך×Ö·××¢×עךס ×€×× ×× × ×Öž××¢, ××× ××× ××× ×Š× ×€×ַך××× ××. ××Ö·×ך×Ö·××× ×× ×š×¢×§×Ö·××Ö·× ×××ש×Ö·× × ×Š× × ××Š× ××¢× STUN (
××¢×֞ך××¢
×ע׊×× ×¡ ××× ××× ×Š× ×× ×¡××Ö·×××š× STUN סעך××עך ××××£ ××¢×××Ö·× ×€Ö¿×× ××¢× ×€ÖŒ×¢×§×
# apt install stun-server
××× ××× ×× ×××€ÖŒ×¢× ××Ö·× ×¡×× ××× ××¢××¢× ×× ×¡××Ö·×-ק×××¢× × ×€ÖŒ×¢×§×, ×Öž×עך ע׀עס ××× ××× × ××©× ××ַ׊×Öž×× ××€×עךק××Ö·×ק××Ö·× ×Š× ×¢×¡. ×Öž×עך ש׀֌ע×עך ××× ××¢××¢× ×§× ×××¢×× ××¢× ×¡××Ö·×-ק×××¢× × ×€ÖŒ×¢×§× ××× ××ַש××Öž×¡× ×Š× ×š×¢××¢× ×¢× ×××ס ××× ×¢×¡ ×ַך××¢×, × ×Öž× ××Öž××××× × ××× ×××× ××× ××Ö·× ×עקס ××× ××Ö·×:
# apt install stun-client
# stun stun.ekiga.net -p 21234 -v
××× ×¢× ×׀עך ××× ××× ××ק×××¢×:
STUN ק×××¢× × ××עךס××¢ 0.97
××¢×¢×€× × ×€ÖŒ×Öž×š× 21234 ××× fd 3
××¢×¢×€× × ×€ÖŒ×Öž×š× 21235 ××× fd 4
ק×Öž××ך×× × ×¡××Ö·× ×Öž× ××Öž×:
ק×Öž××ך×× × ××××©× ×š×¢×§××עס×: 0×××¢×× ×Š× ×©××§× ×Ö· ×Öž× ××Öž× ×€×× LEN 28 ×Š× 216.93.246.18:3478
ק×Öž××ך×× × ×¡××Ö·× ×Öž× ××Öž×:
ק×Öž××ך×× × ××××©× ×š×¢×§××עס×: 4×××¢×× ×Š× ×©××§× ×Ö· ×Öž× ××Öž× ×€×× LEN 28 ×Š× 216.93.246.18:3478
ק×Öž××ך×× × ×¡××Ö·× ×Öž× ××Öž×:
ק×Öž××ך×× × ××××©× ×š×¢×§××עס×: 2×××¢×× ×Š× ×©××§× ×Ö· ×Öž× ××Öž× ×€×× LEN 28 ×Š× 216.93.246.18:3478
××ק×××¢× ×¡××Ö·× ×Öž× ××Öž×: 92 ×××עס
××ַ׀֌ע××Ö·×ךעסס = <×××Ö·× IP>:2885
×ק×ך ×Ö·×ךעס = 216.93.246.18:3478
×ש××× ×××©× ×Ö·×ךעס = 216.93.246.17:3479
×××××ַק×Ö·× × ×Ö·×ך×××××: 32800
סעך×××ךעך × ×Öž××¢× = Vovida.org 0.98-CPC
××ק×××¢× ×Öž× ××Öž× ×€×× ×××€ÖŒ 257 ש××Ö·× = 1
ק×Öž××ך×× × ×¡××Ö·× ×Öž× ××Öž×:
ק×Öž××ך×× × ××××©× ×š×¢×§××עס×: 0×××¢×× ×Š× ×©××§× ×Ö· ×Öž× ××Öž× ×€×× LEN 28 ×Š× 216.93.246.17:3478
ק×Öž××ך×× × ×¡××Ö·× ×Öž× ××Öž×:
ק×Öž××ך×× × ××××©× ×š×¢×§××עס×: 4×××¢×× ×Š× ×©××§× ×Ö· ×Öž× ××Öž× ×€×× LEN 28 ×Š× 216.93.246.18:3478
ק×Öž××ך×× × ×¡××Ö·× ×Öž× ××Öž×:
ק×Öž××ך×× × ××××©× ×š×¢×§××עס×: 2×××¢×× ×Š× ×©××§× ×Ö· ×Öž× ××Öž× ×€×× LEN 28 ×Š× 216.93.246.18:3478
ק×Öž××ך×× × ×¡××Ö·× ×Öž× ××Öž×:
ק×Öž××ך×× × ××××©× ×š×¢×§××עס×: 0×××¢×× ×Š× ×©××§× ×Ö· ×Öž× ××Öž× ×€×× len 28 ×Š× <×××Ö·× IP>:2885
××ק×××¢× ×¡××Ö·× ×Öž× ××Öž×: 28 ×××עס
ChangeRequest = 0
××ק×××¢× ×Öž× ××Öž× ×€×× ×××€ÖŒ 1 ש××Ö·× = 11
ק×Öž××ך×× × ×¡××Ö·× ×Öž× ××Öž×:
ק×Öž××ך×× × ××××©× ×š×¢×§××עס×: 0×××¢×× ×Š× ×©××§× ×Ö· ×Öž× ××Öž× ×€×× LEN 28 ×Š× 216.93.246.17:3478
ק×Öž××ך×× × ×¡××Ö·× ×Öž× ××Öž×:
ק×Öž××ך×× × ××××©× ×š×¢×§××עס×: 4×××¢×× ×Š× ×©××§× ×Ö· ×Öž× ××Öž× ×€×× LEN 28 ×Š× 216.93.246.18:3478
ק×Öž××ך×× × ×¡××Ö·× ×Öž× ××Öž×:
ק×Öž××ך×× × ××××©× ×š×¢×§××עס×: 2×××¢×× ×Š× ×©××§× ×Ö· ×Öž× ××Öž× ×€×× LEN 28 ×Š× 216.93.246.18:3478
××ק×××¢× ×¡××Ö·× ×Öž× ××Öž×: 92 ×××עס
××ַ׀֌ע××Ö·×ךעסס = <×××Ö·× IP>:2885
×ק×ך ×Ö·×ךעס = 216.93.246.17:3479
×ש××× ×××©× ×Ö·×ךעס = 216.93.246.18:3478
×××××ַק×Ö·× × ×Ö·×ך×××××: 32800
סעך×××ךעך × ×Öž××¢× = Vovida.org 0.98-CPC
××ק×××¢× ×Öž× ××Öž× ×€×× ×××€ÖŒ 257 ש××Ö·× = 10
ק×Öž××ך×× × ×¡××Ö·× ×Öž× ××Öž×:
ק×Öž××ך×× × ××××©× ×š×¢×§××עס×: 4×××¢×× ×Š× ×©××§× ×Ö· ×Öž× ××Öž× ×€×× LEN 28 ×Š× 216.93.246.18:3478
ק×Öž××ך×× × ×¡××Ö·× ×Öž× ××Öž×:
ק×Öž××ך×× × ××××©× ×š×¢×§××עס×: 2×××¢×× ×Š× ×©××§× ×Ö· ×Öž× ××Öž× ×€×× LEN 28 ×Š× 216.93.246.18:3478
ק×Öž××ך×× × ×¡××Ö·× ×Öž× ××Öž×:
ק×Öž××ך×× × ××××©× ×š×¢×§××עס×: 4×××¢×× ×Š× ×©××§× ×Ö· ×Öž× ××Öž× ×€×× LEN 28 ×Š× 216.93.246.18:3478
ק×Öž××ך×× × ×¡××Ö·× ×Öž× ××Öž×:
ק×Öž××ך×× × ××××©× ×š×¢×§××עס×: 2×××¢×× ×Š× ×©××§× ×Ö· ×Öž× ××Öž× ×€×× LEN 28 ×Š× 216.93.246.18:3478
ק×Öž××ך×× × ×¡××Ö·× ×Öž× ××Öž×:
ק×Öž××ך×× × ××××©× ×š×¢×§××עס×: 4×××¢×× ×Š× ×©××§× ×Ö· ×Öž× ××Öž× ×€×× LEN 28 ×Š× 216.93.246.18:3478
ק×Öž××ך×× × ×¡××Ö·× ×Öž× ××Öž×:
ק×Öž××ך×× × ××××©× ×š×¢×§××עס×: 2×××¢×× ×Š× ×©××§× ×Ö· ×Öž× ××Öž× ×€×× LEN 28 ×Š× 216.93.246.18:3478
ק×Öž××ך×× × ×¡××Ö·× ×Öž× ××Öž×:
ק×Öž××ך×× × ××××©× ×š×¢×§××עס×: 4×××¢×× ×Š× ×©××§× ×Ö· ×Öž× ××Öž× ×€×× LEN 28 ×Š× 216.93.246.18:3478
ק×Öž××ך×× × ×¡××Ö·× ×Öž× ××Öž×:
ק×Öž××ך×× × ××××©× ×š×¢×§××עס×: 2×××¢×× ×Š× ×©××§× ×Ö· ×Öž× ××Öž× ×€×× LEN 28 ×Š× 216.93.246.18:3478
ק×Öž××ך×× × ×¡××Ö·× ×Öž× ××Öž×:
ק×Öž××ך×× × ××××©× ×š×¢×§××עס×: 4×××¢×× ×Š× ×©××§× ×Ö· ×Öž× ××Öž× ×€×× LEN 28 ×Š× 216.93.246.18:3478
ק×Öž××ך×× × ×¡××Ö·× ×Öž× ××Öž×:
ק×Öž××ך×× × ××××©× ×š×¢×§××עס×: 2×××¢×× ×Š× ×©××§× ×Ö· ×Öž× ××Öž× ×€×× LEN 28 ×Š× 216.93.246.18:3478
׀֌ך××××š× ××× = 1
׀֌ך××××š× ×× = 0
׀֌ך××××š× III = 0
׀֌ך××××š× ××× (×§×¡× ××קס) = ×§×¡× ××קס
××× × ×Ö·× = 1
××Ö·×€ÖŒ× IP ××¢×××קעך = 1
××֞ך ש׀֌××קע = 1
׀֌ךעסעך××עך ×€ÖŒ×Öž×š× = 0
עךש××ק: ××××Öž×€ÖŒ××¢× ××ק ××Ö·×€ÖŒ×× ×, ×€ÖŒ×Öž×š× ×Öž×€×¢× ××ק ×€Ö¿×××ך×ך, ×ך×Ö·×€ - ×€ÖŒ×֞ך×, ××Ö·×ך׀֌××
׊×ך×קק×××¢× ×××¢×š× ××× 0x000006
ש×ך××§× ××× ××עך×
××ַ׀֌ע××Ö·×ךעסס = <×××Ö·× IP>:2885
×€ÖŒ×× ×§× ×××֞ס ××ך ××ַך׀ֿ×! עס ××¢××××× ×× ×§×š×Ö·× × ×¡××Ö·××ס ×€Ö¿×ַך ×× ×§×©×š ××××£ ××××¢ ×××€ÖŒ ×€ÖŒ×Öž×š× 21234. ×Öž×עך ××֞ס ××× ××××× ××Ö·×× ×× ×©××Ö·××, ×× ×§×©×× ××× ××××€×עש××× ×¢× ××× ×Š× ×ַך××עך׀××š× ×× ××Ö·×× ×Š× ×× ××××Ö·× ××Ö·××¢××֞ס ××× ×֞ך××Ö·× ××××š× ×Ö· ×××€ÖŒ× ×§×©×š. × ××Š× ×× ×€ÖŒ×Öž×¡× ×€ÖŒ×š×Öž××֞ק×Öž×, ×Öž×עך ××Öž×עך ××¢××¢×ך×Ö·×?! עס ××¢× ×¢× ×€×××¢ ×֞׀֌׊×עס ××× ××× ××ַש××Öž×¡× ×Š× × ××Š× Yandex.disk ××× × ××× ×עק×××¢× ×ַך××עך
- ס××× ×Ö·× ×Ö·× × ×Öž××× ××¢× ×¢× ×ך××× ×Š× ×€×ַך××××× ×Ö· קשך ×××š× ××¢× ×××Ö·×××Ö·× ×€×× ×Ö· ס׀֌ע׊××€×ש ×עקע ××× ×Ö· ×××עס××Ö·××€ÖŒ ××××£ Yandex.disk;
- ×××× ×× × ×Öž××× ××¢× ×¢× ×ך×××, ××ַק×××¢× ×§×š×Ö·× × ×€ÖŒ×ַך×Ö·××¢×עךס ×€×× ×× STUN סעך××עך;
- ׊××€Ö¿×¢××קעך קך×Ö·× × ×¡×¢×××× ×ס ×Š× Yandex.disk;
- ק×Öž× ×ך×Öž×××š× ××¢× ×××Ö·×××Ö·× ××× ××××¢× ×¢× ×€ÖŒ×ַך×Ö·××¢×עךס ×€×× ×Ö· ××××Ö·× × ×Öž××¢ ×€Ö¿×× ×Ö· ×עקע ××××£ Yandex.disk;
- ×€×ַך××××× ×Ö· קשך ××× ×Ö· ××××Ö·× ××Ö·××¢××֞ס × ××Š× OpenVPN.
×€×ך
× ×Öž× ×Ö· ×××¡× ×ך××××, ××¢× ×××¢× ××× ×ש××× ×× ×עך׀×ַך×× × ×€×× ×× ×ע׊××¢ ×ַך××ק×, ××× ×עש×××× × ×עשך××× ×Ö· שך××€×. ××ך ×××¢×× ××ַך׀ֿ×:
# apt install openvpn stun-client curl
×עך שך××€× ×××××:
×֞ך×××× ×¢× ××עךס××¢
# cat vpn8.sh
#!/bin/bash
######################## ÐаЎаеЌ ÑвеÑМПй ÑекÑÑ ###
WARN='33[37;1;41m' #
END='33[0m' #
RED='33[0;31m' # ${RED} #
GREEN='33[0;32m' # ${GREEN} #
#################################################
####################### ÐÑПвеÑÑеЌ МалОÑОе МеПбÑ
ПЎÑЌОÑ
пÑОлПжеМОй #########################################################
al="echo readlink dirname grep awk md5sum shuf nc curl sleep openvpn cat stun"
ch=0
for i in $al; do which $i > /dev/null || echo -e "${WARN}ÐÐ»Ñ ÑабПÑÑ ÐœÐµÐŸÐ±Ñ
ПЎОЌ $i ${END}"; which $i > /dev/null || ch=1; done
if (( $ch > 0 )); then echo -e "${WARN}Ðй, ПÑÑÑÑÑÑвÑÑÑ ÐœÐµÐŸÐ±Ñ
ПЎОЌÑе ÐŽÐ»Ñ ÐºÐŸÑÑекÑМПй ÑабПÑÑ Ð¿ÑОлПжеМОÑ${END}"; exit; fi
#######################################################################################################################
if [[ $1 == '' ]]; then echo -e "${WARN}ÐвеЎОÑе ОЎеМÑОÑОкаÑÐŸÑ ÑÐŸÐµÐŽÐžÐœÐµÐœÐžÑ (лÑбПе ÑМОкалÑМПе ÑлПвП, ЎПлжМП бÑÑÑ ÐŸÐŽÐžÐœÐ°ÐºÐŸÐ²ÐŸÐµ Ñ ÐŽÐ²ÑÑ
ÑÑПÑПМ!) ${END} t
${GREEN}ÐÐ»Ñ Ð·Ð°Ð¿ÑÑка в авÑПЌаÑОÑеÑкПЌ ÑежОЌе пÑО вклÑÑеМОО кПЌпÑÑÑеÑа ЌПжМП пÑПпОÑаÑÑ Ð² /etc/rc.local ÑÑÑÐŸÐºÑ nohup /<пÑÑÑ Ðº ÑайлÑ>/vpn8.sh > /var/log/vpn8.log 2>/dev/hull & ${END}"; exit; fi
ABSOLUTE_FILENAME=`readlink -f "$0"` # пПлМÑй пÑÑÑ ÐŽÐŸ ÑкÑОпÑа
DIR=`dirname "$ABSOLUTE_FILENAME"` # каÑалПг в кПÑПÑПЌ Ð»ÐµÐ¶ÐžÑ ÑкÑОпÑ
############################### ÐÑПвеÑка МалОÑÐžÑ ÑекÑеÑМПгП клÑÑа ##################################
key="$DIR/secret.key"
if [ ! -f "$key" ]; then
echo -e "${WARN}СекÑеÑÐœÑй клÑÑ VPN-ÑÐŸÐµÐŽÐžÐœÐµÐœÐžÑ ÐœÐµ МайЎеМ, ÐŽÐ»Ñ Ð³ÐµÐœÐµÑаÑОО клÑÑа вÑпПлМОÑе:
openvpn --genkey --secret secret.key ÐМОЌаМОе: клÑÑ ÐžÑпПлÑзÑеÑÑÑ ÐŽÐ»Ñ Ð°Ð²ÑПÑОзаÑОО О ЎПлжеМ
бÑÑÑ ÐŸÐŽÐžÐœÐ°ÐºÐŸÐ²ÑÐŒ Ñ ÐŽÐ²ÑÑ
ÑÑПÑПМ!!!${END}
# ls -l secret.key
-rw------- 1 root root 637 ÐœÐŸÑ 27 11:12 secret.key
# chmod 600 secret.key";
exit;
fi
########################################################################################################################
ABSOLUTE_FILENAME=`readlink -f "$0"` # пПлМÑй пÑÑÑ ÐŽÐŸ ÑкÑОпÑа
DIR=`dirname "$ABSOLUTE_FILENAME"` # каÑалПг в кПÑПÑПЌ Ð»ÐµÐ¶ÐžÑ ÑкÑОпÑ
name=$(uname -n | md5sum | awk '{print $1}')
vpn=$(echo $1 | md5sum | awk '{print $1}')
stun="stun.ekiga.net" # STUN ÑеÑвеÑ
username="Yandex" # ÐПгОМ ÐŸÑ Ð¯ÐœÐŽÐµÐºÑ.ЎОÑка
password="Password" # ÐаÑÐŸÐ»Ñ ÐŸÑ Ð¯ÐœÐŽÐµÐºÑ.ЎОÑка
localport=`shuf -i 20000-65000 -n 1` # геМеÑаÑÐžÑ Ð»ÐŸÐºÐ°Ð»ÑМПгП пПÑÑа
echo "$(date) Ð¡ÐŸÐ·ÐŽÐ°Ñ Ð¿Ð°Ð¿ÐºÑ ÐœÐ° ЯМЎекÑ.ЎОÑке"
curl -X MKCOL --user "${username}:${password}" https://webdav.yandex.ru/vpn-$vpn
echo "$(date) ÐÑОÑÐ°Ñ Ð¿Ð°Ð¿ÐºÑ ÐŸÑ Ð²ÑÑкПгП ÐŒÑÑПÑа"
for i in `curl --silent --user "$username:$password" -X PROPFIND -H "Depth: 1" https://webdav.yandex.ru/vpn-$vpn/ | sed 's/></n/g' | grep "d:displayname" | sed 's/d:displayname//g' | sed 's/>//g' | sed 's/<//' | sed 's////g' | grep -v $(date +%Y-%m-%d-%H-%M)`; do
echo "$(date) Delete: $i"
curl -X DELETE --user "${username}:${password}" https://webdav.yandex.ru/vpn-$vpn/$i
done
until [ $c ];do
until [[ $b ]]; do
echo "$(date) ÐÑПвеÑÑÑ Ð¿Ð°Ð¿ÐºÑ"
date=`date +%Y-%m-%d-%H-%M`
mydata=`curl --silent --user "${username}:${password}" -X PROPFIND -H "Depth: 1" https://webdav.yandex.ru/vpn-$vpn/ | sed 's/></>n</g' | grep $name | grep $date | grep "d:displayname"`
if [[ -z $mydata ]]; then
echo "$(date) Ѐайл гПÑПвМПÑÑО ÑПзЎаМ"
echo "$date" > "/tmp/$date-$name-ready.txt"
curl -T "/tmp/$date-$name-ready.txt" --user "$username:$password" https://webdav.yandex.ru/vpn-$vpn/$date-$name-ready.txt
else
echo "$(date) Ѐайл гПÑПвМПÑÑО Ñже ÑÑÑеÑÑвÑÐµÑ - $date"
fi
remote=`curl --silent --user "${username}:${password}" -X PROPFIND -H "Depth: 1" https://webdav.yandex.ru/vpn-$vpn/ | sed 's/></>n</g' | grep -v $name | grep $date | grep "d:displayname"`
if [[ -z $remote ]]; then
echo -e "$(date) ${RED} УЎалеММÑй Ñзел Ме гПÑПв ${END}"
echo "$(date) ÐÐŽÑ"
sleep 20
else
echo -e "$(date) ${GREEN} УЎалеММÑй Ñзел гПÑПв ${END}"
b=1
a=''
fi
done
until [ $a ]; do
echo "$(date) ÐПЎклÑÑеМОе О пПлÑÑеМОе ЎаММÑÑ
ÐŸÑ STUN ÑеÑвеÑа: $stun"
mydata=`stun $stun -p $localport -v 2>&1 | grep MappedAddress | sort | uniq`
echo -e "$(date) ${GREEN}ÐПО ЎаММÑе ÑПеЎОМеМОÑ: $mydata${END}"
echo "$mydata" > "$DIR/mydata"
echo "$(date) ÐагÑÑзка ЎаММÑÑ
Ма ЯМЎекÑ.ЎОÑк"
curl -T "$DIR/mydata" --user "$username:$password" https://webdav.yandex.ru/vpn-$vpn/$name.txt
echo "$(date) ÐПлÑÑеМОе Ñайла ЎаММÑÑ
ÑЎалеММПгП Ñзла"
filename=$(curl --silent --user "${username}:${password}" -X PROPFIND -H "Depth: 1" https://webdav.yandex.ru/vpn-$vpn/ | sed 's/></n/g' | grep "d:displayname>" | grep "txt" | grep -v "$name" | grep -v "ready" | sed 's|.*d:displayname>||' | sed 's/</ /g' | awk '{print $1}')
echo "$(date) ЧÑеМОе Ñайла ЎаММÑÑ
ÑЎалеММПгП Ñзла: $filename"
address=$(curl --silent --user "$username:$password" https://webdav.yandex.ru/vpn-$vpn/$filename | sort | uniq | head -n1 | sed 's/:/ /g')
echo "$(date) ÐпÑеЎелеМОе IP-аЎÑеÑа О пПÑÑа"
ip=$(echo "$address" | awk '{print $3}')
port=$(echo "$address" | awk '{print $4}')
if [[ -n "$ip" && -n "$port" ]]; then
echo -e "$(date) ${GREEN} СПеЎОМеМОе $ip $port ${END}"
openvpn --remote $ip --rport $port --lport $localport
--proto udp --dev tap --float --auth-nocache --verb 3 --mute 20
--ifconfig 10.45.54.2 255.255.255.252
--secret "$DIR/secret.key"
--auth SHA256 --cipher AES-256-CBC
--ncp-disable --ping 10 --ping-exit 30
--comp-lzo yes
echo -e "$(date) ${WARN} СПеЎОМеМОе ÑазПÑваМП${END}"
a=1
b=''
else
a=1
b=''
fi
done
done
×€Ö¿×ַך ×× ×©×š××€× ×Š× ×ַך××¢×× ××ך ××ַך׀ֿ×:
- ק×Öž×€ÖŒ× ×Š× ×§×××€ÖŒ××Öž×š× ××× ×€ÖŒ×Ö·×€ÖŒ ××× ×š×¢××ַק××֞ך, ××ש×:
# nano vpn8.sh
- ס׀֌ע׊××€×׊××š× ×× × ×××¢× ××× ×€ÖŒ×ַך×Öž× ×€Ö¿×ַך Yandex.disk.
- ××× ××¢× ×€×¢×× "-ifconfig 10.45.54.(1 ×Öž×עך 2) 255.255.255.252" ס׀֌ע׊××€×׊××š× ×× ×× ×¢×š××¢× IP ×Ö·×ךעס ×€×× ×× ×Š×××× ×
- ש×Ö·×€Ö¿× ×¡××.ש×××¡× ××Ö·×€Ö¿×¢×:
# openvpn --genkey --secret secret.key
- ××Ö·×× ×× ×©×š××€× ×¢×§×¡×ַק××××Ö·××Ö·×:
# chmod +x vpn8.sh
- ××××€× ×× ×©×š××€×:
# ./vpn8.sh nZbVGBuX5dtturD
××× nZbVGBuX5dtturD ××× ×× ×××©×¢× ×¢×š××××Ö·× ×§×©×š ש××Ö·×
××Öž
××××£ ×× ××××Ö·× × ×Öž××¢, ××Öž× ×Ö·××¥ ×× ××¢×××¢ ×Ö·×××¥ ×€Ö¿×ַך ×××©×¢× ×¢×š××××× × secret.key ××× ×§×©×š ש××Ö·×, ××× ×××× ×××× ××××¢× ×ק×Ö·×.
×עך×××Ö·× ×××§× ××עךס××¢ (׊××× ×××× ×××× ×¡×× ×קך×Ö·× ×××× ×€Ö¿×ַך ך××××ק ×֞׀֌עך×ַ׊××¢):
cat vpn10.sh
#!/bin/bash
stuns="stun.sipnet.ru stun.ekiga.net" # СпОÑПк STUN ÑеÑвеÑПв ÑеÑез пÑПбел
username=" Login " # ÐПгОМ ÐŸÑ Ð¯ÐœÐŽÐµÐºÑ.ЎОÑка
password=" Password " # ÐаÑÐŸÐ»Ñ ÐŸÑ Ð¯ÐœÐŽÐµÐºÑ.ЎОÑка
intip="10.23.22.1" # IP-аЎÑÐµÑ Ð²ÐœÑÑÑеММегП ОМÑеÑÑейÑа
WARN='33[37;1;41m'
END='33[0m'
RED='33[0;31m'
GREEN='33[0;32m'
al="ip echo readlink dirname grep awk md5sum openssl sha256sum shuf curl sleep openvpn cat stun"
ch=0
for i in $al; do which $i > /dev/null || echo -e "${WARN}ÐÐ»Ñ ÑабПÑÑ ÐœÐµÐŸÐ±Ñ
ПЎОЌ $i ${END}"; which $i > /dev/null || ch=1; done
if (( $ch > 0 )); then echo -e "${WARN}Ðй, ПÑÑÑÑÑÑвÑÑÑ ÐœÐµÐŸÐ±Ñ
ПЎОЌÑе ÐŽÐ»Ñ ÐºÐŸÑÑекÑМПй ÑабПÑÑ Ð¿ÑОлПжеМОÑ${END}"; exit; fi
if [[ $1 == '' ]];
then
echo -e "${WARN}ÐвеЎОÑе ОЎеМÑОÑОкаÑÐŸÑ ÑÐŸÐµÐŽÐžÐœÐµÐœÐžÑ (лÑбПе ÑМОкалÑМПе ÑлПвП, ЎПлжМП бÑÑÑ ÐŸÐŽÐžÐœÐ°ÐºÐŸÐ²ÐŸÐµ Ñ ÐŽÐ²ÑÑ
ÑÑПÑПМ!) ${END} t
${GREEN}ÐÐ»Ñ Ð·Ð°Ð¿ÑÑка в авÑПЌаÑОÑеÑкПЌ ÑежОЌе пÑО вклÑÑеМОО кПЌпÑÑÑеÑа ЌПжМП пÑПпОÑаÑÑ Ð² /etc/rc.local ÑÑÑÐŸÐºÑ nohup /<пÑÑÑ Ðº ÑайлÑ>/vpn10.sh > /var/log/vpn10.log 2>/dev/hull & ${END}"
exit
fi
ABSOLUTE_FILENAME=`readlink -f "$0"` # пПлМÑй пÑÑÑ ÐŽÐŸ ÑкÑОпÑа
DIR=`dirname "$ABSOLUTE_FILENAME"` # каÑалПг в кПÑПÑПЌ Ð»ÐµÐ¶ÐžÑ ÑкÑОпÑ
key="$DIR/secret.key"
until [[ -n "$iftosrv" ]]
do
echo "$(date) ÐпÑеЎелÑÑ ÑеÑевПй ОМÑеÑÑейÑ"; iftosrv=`ip route get 8.8.8.8 | head -n 1 | sed 's|.*dev ||' | awk '{print $1}'`
sleep 5
done
timedatectl
name=$(uname -n | md5sum | awk '{print $1}')
vpn=$(echo $1 | md5sum | awk '{print $1}')
echo "$(date) Ð¡ÐŸÐ·ÐŽÐ°Ñ Ð¿Ð°Ð¿ÐºÑ ÐœÐ° ЯМЎекÑ.ЎОÑке"
curl -X MKCOL --user "${username}:${password}" https://webdav.yandex.ru/vpn-$vpn
echo "$(date) ID Ма ЎОÑке: $vpn"
until [ $c ];do
echo "$(date) ÐÑОÑÐ°Ñ Ð¿Ð°Ð¿ÐºÑ ÐŸÑ Ð²ÑÑкПгП ÐŒÑÑПÑа"
for i in `curl --silent --user "$username:$password" -X PROPFIND -H "Depth: 1" https://webdav.yandex.ru/vpn-$vpn/ | sed 's/></n/g' | grep "d:displayname" | sed 's/d:displayname//g' | sed 's/>//g' | sed 's/<//' | sed 's////g' | grep -v $(date +%Y-%m-%d-%H-%M)`
do
echo -e "$(date)${RED} УЎалÑÑ ÑÑаÑÑй Ñайл: $i${END}"
curl -X DELETE --user "${username}:${password}" https://webdav.yandex.ru/vpn-$vpn/$i
done
echo "$(date) ID Ма ЎОÑке: $vpn"
openvpn --genkey --secret "$key"
passwd=`echo "$vpn-tt" | sha256sum | awk '{print $1}'`
openssl AES-256-CBC -e -in "$key" -out "$DIR/file.enc" -k "$passwd" -base64
curl -T "$DIR/file.enc" --user "$username:$password" https://webdav.yandex.ru/vpn-$vpn/key.enc
rm "$DIR"/file.enc
echo -e "$(date) ${GREEN}Ѐаза 1 - ÐПлÑÑеМОе гПÑПвМПÑÑО ÑЎалеММПгП Ñзла${END}"
go=3
localport=`shuf -i 20000-65000 -n 1` # геМеÑаÑÐžÑ Ð»ÐŸÐºÐ°Ð»ÑМПгП пПÑÑа
start=''
remote=''
timeout1=''
nextcheck=''
timestart=''
until [[ $b ]]
do
echo "$(date) ÐÑПвеÑÑÑ Ð¿Ð°Ð¿ÐºÑ"
date=`date +%s`
timeout1=60
echo "$(date) СПзЎаМОе Ñайла гПÑПвМПÑÑО $date"
echo "$date" > "/tmp/ready-$date-$name.txt"
curl -T "/tmp/ready-$date-$name.txt" --user "$username:$password" https://webdav.yandex.ru/vpn-$vpn/ready-$name.txt
readyfile=`curl --silent --user "${username}:${password}" -X PROPFIND -H "Depth: 1" https://webdav.yandex.ru/vpn-$vpn/ | sed 's/></>n</g' | grep -v $name | grep "ready" | grep "d:displayname" | sed 's/<d:displayname>//g' | sed 's/</d:displayname>//g'`
if [[ -z $readyfile ]]
then
echo -e "$(date) ${RED} УЎалеММÑй Ñзел Ме гПÑПв ${END}"
echo "$(date) ÐÐŽÑ 60 ÑекÑМЎ"
sleep $timeout1
else
remote=$(curl --silent --user "$username:$password" https://webdav.yandex.ru/vpn-$vpn/$readyfile)
echo -e "$(date) ${GREEN} УЎалеММÑй Ñзел гПÑПв ${END}"
start=`curl --silent --user "${username}:${password}" -X PROPFIND -H "Depth: 1" https://webdav.yandex.ru/vpn-$vpn/ | sed 's/></>n</g' | grep "start" | grep "d:displayname" | sed 's/-/ /g' | awk '{print $2}'`
if [[ -z $start ]]
then
let nextcheck=$timeout1-$date+$remote
let timestart=$date+$timeout1-$nextcheck
go=$nextcheck
echo "$timestart" > "/tmp/start-$date-$name.txt"
curl -T "/tmp/start-$date-$name.txt" --user "$username:$password" https://webdav.yandex.ru/vpn-$vpn/start-$date-$name.txt
else
echo "$(date) Ð¶ÐŽÑ $go ÑекÑМЎ"
sleep $go
b=1
a=''
fi
fi
done
echo -e "$(date) ${GREEN}Ѐаза 2 - ÐбЌеМ ЎаММÑЌО О ÑÑÑаМПвка ÑПеЎОМеМОÑ${END}"
mydata=''
filename=''
address=''
myip=''
ip=''
port=''
ex=0
until [ $a ]; do
until [[ -n "$mydata" ]]; do
k=`echo "$stuns" | wc -w`
x=1
z=`shuf -i 1-$k -n 1`
for st in $stuns; do
if [[ $x == $z ]]; then
stun=$st;
fi;
(( x++ ));
done
echo "$(date) ÐПЎклÑÑеМОе О пПлÑÑеМОе ЎаММÑÑ
ÐŸÑ STUN ÑеÑвеÑа: $stun"
sleep 5 && for pid in $(ps xa | grep "stun "$stun" 1 -p "$localport" -v" | grep -v grep | awk '{print $1}'); do kill $pid; done &
mydata=`stun "$stun" 1 -p "$localport" -v 2>&1 | grep "MappedAddress" | sort | uniq`
done
echo -e "$(date) ${GREEN}ÐПО ЎаММÑе ÑПеЎОМеМОÑ: $mydata${END}"
echo "$(date) ÐагÑÑзка ЎаММÑÑ
Ма ЯМЎекÑ.ЎОÑк"
echo "$mydata" > "$DIR/mydata"
echo "IntIP $intip" >> "$DIR/mydata"
curl -T "$DIR/mydata" --user "$username:$password" https://webdav.yandex.ru/vpn-$vpn/$name-ipport.txt
rm "$DIR/mydata"
sleep 5
echo "$(date) ÐПлÑÑеМОе Ñайла ЎаММÑÑ
ÑЎалеММПгП Ñзла"
filename=$(curl --silent --user "${username}:${password}" -X PROPFIND -H "Depth: 1" https://webdav.yandex.ru/vpn-$vpn/ | sed 's/></n/g' | grep "d:displayname>" | grep "ipport" | grep -v "$name" | sed 's|.*d:displayname>||' | sed 's/</ /g' | awk '{print $1}')
if [[ -n "$filename" ]]
then
echo "$(date) ЧÑеМОе Ñайла ЎаММÑÑ
ÑЎалеММПгП Ñзла: $filename"
address=$(curl --silent --user "$username:$password" https://webdav.yandex.ru/vpn-$vpn/$filename | grep "MappedAddress" | head -n1 | sed 's/:/ /g')
intip2=$(curl --silent --user "$username:$password" https://webdav.yandex.ru/vpn-$vpn/$filename | grep "IntIP" | head -n1 | awk '{print $2}')
echo "$(date) ÐпÑеЎелеМОе IP-аЎÑеÑа О пПÑÑа: $address $sesid2 $tunid2"
ip=$(echo "$address" | awk '{print $3}')
port=$(echo "$address" | awk '{print $4}')
myip=`ip route get "$ip" | head -n 1 | sed 's|.*src ||' | awk '{print $1}'`
if [[ -n "$ip" && -n "$port" && -n "$myip" && -n "$localport" ]];
then
echo -e "$(date) ${GREEN} СПеЎОМеМОе $ip $port ${END}"
echo -e "`date` ${GREEN} $myip:$localport -> $ip:$port ${END}"
curl --silent --user "$username:$password" https://webdav.yandex.ru/vpn-$vpn/key.enc > "$DIR/secret.enc"
openssl AES-256-CBC -d -in "$DIR/secret.enc" -out "$key" -k "$passwd" -base64
chmod 600 "$key"
rm "$DIR/secret.enc"
openvpn --remote $ip --rport $port --lport $localport
--proto udp --dev tun --float --auth-nocache --verb 3 --mute 20
--ifconfig "$intip" "$intip2"
--secret "$key"
--auth SHA256 --cipher AES-256-CBC
--ncp-disable --ping 10 --ping-exit 20
--comp-lzo yes
a=1
b=''
fi
else
if (( $ex >= 5 ))
then
echo "$(date) СбÑПÑ"
a=1
b=''
fi
(( ex++ ))
sleep 5
fi
done
done
×€Ö¿×ַך ×× ×©×š××€× ×Š× ×ַך××¢×× ××ך ××ַך׀ֿ×:
- ק×Öž×€ÖŒ× ×Š× ×§×××€ÖŒ××Öž×š× ××× ×€ÖŒ×Ö·×€ÖŒ ××× ×š×¢××ַק××֞ך, ××ש×:
# nano vpn10.sh
- ×Öž× ××××Ö·×× ×× ××Öž××× (2 ש×ך×) ××× ×€ÖŒ×ַך×Öž× ×€Ö¿×ַך Yandex.disk (3 ש×ך×).
- ס׀֌ע׊××€×׊××š× ×× ×× ×¢×š××¢× IP ×Ö·×ךעס ×€×× ××¢× ××× ×¢× (4 ש×ך×).
- ××Ö·×× ×× ×©×š××€× ×¢×§×¡×ַק××××Ö·××Ö·×:
# chmod +x vpn10.sh
- ××××€× ×× ×©×š××€×:
# ./vpn10.sh nZbVGBuX5dtturD
××× nZbVGBuX5dtturD ××× ×× ×××©×¢× ×¢×š××××Ö·× ×§×©×š ש××Ö·×
××Öž
××××£ ×× ××××Ö·× × ×Öž××¢, ××Öž× ×× ××¢×××¢, ס׀֌ע׊××€×׊××š× ×× ×§×֞ך×ַס׀֌×Ö·× ××× × ×× ×¢×š××¢× IP ×Ö·×ךעס ×€×× ××¢× ××× ×¢× ××× ×× ×§×©×š ש××Ö·×.
×Š× ×Ö·×××֞ך×× ××¢× ×©×š××€× ×××¢× ×¢×¡ ××× ×××ס××¢×ך××× ××××£, ××× × ××Š× ×× ××Ö·×€Ö¿×¢× "nohup /<path to the script>/vpn10.sh nZbVGBuX5dtturD > /var/log/vpn10.log 2>/dev/null &" ק×Ö·× ×××× × ××× ×עך ×עקע /etc/ rc.local
ס×Öž×£
×עך שך××€× ×ַך××¢×, ×עס××¢× ××××£ ×××× ×× (18.04, 19.10, 20.04) ××× ××¢×××Ö·× 9. ××ך ×§×¢× ×¢× × ××Š× ×§××× ×× ×עךע ××× ×¡× ××× ×Ö· ×ך×Ö·× ×¡×××עך, ×Öž×עך ×€Ö¿×ַך ×עך׀×ַך×× × ××× ××¢××××× × Yandex.disk.
×עש×ַס ×× ×קס׀֌עך×Ö·××Ö·× ×¥, עס ××× ××¢×××¢× ××סק×Ö·×××¢×š× ×Ö·× ×¢×××¢××¢ ×××׀֌ס ×€×× NAT ׀֌ך×Ö·××××××¢×š× ××Öž× × ×× ××Öž×× ×ך×× ×× ×Ö· קשך. ×עך ××××€ÖŒ× ×€Ö¿×× ×š×ךע××××ק ×֞׀֌עך××××¢×š× ××× ××Öž×š×š×¢× ×¥ ××¢× ×¢× ××€×עש××¢××.
××× ×€ÖŒ××Ö·× ×Š× ×€Ö¿×ַך××¢×¡×¢×š× ××× ×עך××× ×¢× ×€××:
- ×Öž××Ö·××Ö·××ק ×××©×¢× ×¢×š××ש×Ö·× ×€×× secret.key ××¢×עך ××Öž× ××ך ×Öž× ××××, ×× ×§×š××€ÖŒ× ××× × ×Öž×××Ö·×× ×Š× Yandex.disk ×€Ö¿×ַך ×ַך××עך׀××š× ×Š× ×Ö· ××××Ö·× × ×Öž××¢ (××¢× ×××¢× ××× ×ש××× ××× ×עך ×עך×××Ö·× ×××§× ××עךס××¢)
- ×Öž××Ö·××Ö·××ק ×ַס××× ××Ö·× × ×€×× IP ×Ö·×ךעסעס ×€×× ×× ×עך׀××ס××
- ×¢× ×§×š××€ÖŒ××× × ××Ö·×× ××××עך ××€ÖŒ××Öž×Ö·××× × ×Š× Yandex.disk
- ק×Öž× ×Ö·×€ÖŒ××Ö·××Ö·×××ש×Ö·×
××Öž×× ×¢×¡ ×××× IPv6 ××× ××¢×עך ××××!
×עך×××Ö·× ××ק×! ×ע׊××¢ ×עקעס ××× DEB ×€ÖŒ×¢×§× ××Öž -
×ק×ך: www.habr.com