Direct VPN qhov nruab nrab ntawm cov khoos phis tawj los ntawm cov chaw muab NATs (tsis muaj VPS, siv STUN server thiab Yandex.disk)

Tshaj Tawm lus hais txog yuav ua li cas kuv tau tswj hwm los npaj qhov ncaj qha VPN qhov nruab nrab ntawm ob lub khoos phis tawj nyob tom qab NAT cov chaw muab kev pabcuam. Cov kab lus dhau los tau piav qhia txog cov txheej txheem ntawm kev teeb tsa kev sib txuas nrog kev pab los ntawm ib tus neeg thib peb - ​​tus neeg nruab nrab (tus xauj tsev VPS ua ib yam dab tsi zoo li STUN server thiab node cov ntaub ntawv xa mus rau kev sib txuas). Hauv tsab xov xwm no kuv yuav qhia koj li cas kuv tswj tsis tau VPS, tab sis cov neeg nruab nrab tseem nyob thiab lawv yog STUN server thiab Yandex.Disk ...
Direct VPN qhov nruab nrab ntawm cov khoos phis tawj los ntawm cov chaw muab NATs (tsis muaj VPS, siv STUN server thiab Yandex.disk)

Taw qhia

Tom qab nyeem cov lus ntawm cov lus tshaj tawm dhau los, kuv pom tau hais tias qhov teeb meem tseem ceeb ntawm kev siv yog kev siv tus neeg nruab nrab - ib tus neeg thib peb (VPS) uas qhia txog qhov tsis sib xws tam sim no ntawm node, qhov twg thiab yuav txuas li cas. Xav txog cov lus pom zoo kom siv qhov STUN (uas muaj ntau heev) los txiav txim qhov kev sib txuas tam sim no. Ua ntej tshaj plaws, kuv txiav txim siab siv TCPDump los saib cov ntsiab lus ntawm cov pob ntawv thaum STUN server tau ua haujlwm nrog cov neeg siv khoom thiab tau txais cov ntsiab lus tsis tau nyeem. Googling tus txheej txheem kuv tuaj hla tsab xov xwm piav txog tus txheej txheem. Kuv pom tau hais tias kuv tsis tuaj yeem siv qhov kev thov rau STUN server ntawm kuv tus kheej thiab muab lub tswv yim tso rau hauv "lub thawv nyob deb".

Txoj kev xav

Tsis ntev los no kuv yuav tsum tau nruab STUN server ntawm Debian los ntawm pob

# apt install stun-server

thiab nyob rau hauv dependencies kuv pom cov stun-cov neeg siv khoom pob, tab sis cas kuv tsis xyuam xim rau nws. Tab sis tom qab ntawd kuv nco qab txog cov pob khoom siv tsis txaus ntseeg thiab txiav txim siab seb nws ua haujlwm li cas, tom qab googling thiab tshawb hauv Yandex kuv tau txais:

# apt install stun-client
# stun stun.ekiga.net -p 21234 -v

Hauv kev teb kuv tau txais:

STUN tus thov kev pabcuam 0.97
Qhib chaw nres nkoj 21234 nrog fd 3
Qhib chaw nres nkoj 21235 nrog fd 4
Encoding stun message:
Encoding ChangeRequest: 0

Hais txog xa msg ntawm len 28 rau 216.93.246.18: 3478
Encoding stun message:
Encoding ChangeRequest: 4

Hais txog xa msg ntawm len 28 rau 216.93.246.18: 3478
Encoding stun message:
Encoding ChangeRequest: 2

Hais txog xa msg ntawm len 28 rau 216.93.246.18: 3478
Tau txais cov lus tsis txaus siab: 92 bytes
MappedAddress = <Kuv tus IP>: 2885
Qhov chaw nyob = 216.93.246.18: 3478
216.93.246.17:3479
Tsis paub tus cwj pwm: 32800
ServerName = Vovida.org 0.98-CPC
Tau txais cov lus ntawm hom 257 id=1
Encoding stun message:
Encoding ChangeRequest: 0

Hais txog xa msg ntawm len 28 rau 216.93.246.17: 3478
Encoding stun message:
Encoding ChangeRequest: 4

Hais txog xa msg ntawm len 28 rau 216.93.246.18: 3478
Encoding stun message:
Encoding ChangeRequest: 2

Hais txog xa msg ntawm len 28 rau 216.93.246.18: 3478
Encoding stun message:
Encoding ChangeRequest: 0

Hais txog xa msg ntawm len 28 rau <Kuv tus IP>: 2885
Tau txais cov lus tsis txaus siab: 28 bytes
ChangeRequest = 0
Tau txais cov lus ntawm hom 1 id=11
Encoding stun message:
Encoding ChangeRequest: 0

Hais txog xa msg ntawm len 28 rau 216.93.246.17: 3478
Encoding stun message:
Encoding ChangeRequest: 4

Hais txog xa msg ntawm len 28 rau 216.93.246.18: 3478
Encoding stun message:
Encoding ChangeRequest: 2

Hais txog xa msg ntawm len 28 rau 216.93.246.18: 3478
Tau txais cov lus tsis txaus siab: 92 bytes
MappedAddress = <Kuv tus IP>: 2885
Qhov chaw nyob = 216.93.246.17: 3479
216.93.246.18:3478
Tsis paub tus cwj pwm: 32800
ServerName = Vovida.org 0.98-CPC
Tau txais cov lus ntawm hom 257 id=10
Encoding stun message:
Encoding ChangeRequest: 4

Hais txog xa msg ntawm len 28 rau 216.93.246.18: 3478
Encoding stun message:
Encoding ChangeRequest: 2

Hais txog xa msg ntawm len 28 rau 216.93.246.18: 3478
Encoding stun message:
Encoding ChangeRequest: 4

Hais txog xa msg ntawm len 28 rau 216.93.246.18: 3478
Encoding stun message:
Encoding ChangeRequest: 2

Hais txog xa msg ntawm len 28 rau 216.93.246.18: 3478
Encoding stun message:
Encoding ChangeRequest: 4

Hais txog xa msg ntawm len 28 rau 216.93.246.18: 3478
Encoding stun message:
Encoding ChangeRequest: 2

Hais txog xa msg ntawm len 28 rau 216.93.246.18: 3478
Encoding stun message:
Encoding ChangeRequest: 4

Hais txog xa msg ntawm len 28 rau 216.93.246.18: 3478
Encoding stun message:
Encoding ChangeRequest: 2

Hais txog xa msg ntawm len 28 rau 216.93.246.18: 3478
Encoding stun message:
Encoding ChangeRequest: 4

Hais txog xa msg ntawm len 28 rau 216.93.246.18: 3478
Encoding stun message:
Encoding ChangeRequest: 2

Hais txog xa msg ntawm len 28 rau 216.93.246.18: 3478
test I = 1
test II = 0
test III = 0
test I(2) = 1
nat = 1
mapped IP tib = 1
plaub = 1
chaw nres nkoj = 0
Qhov Tseem Ceeb: Kev Ua Haujlwm Tsis Txaus Siab, Chaw Nres Nkoj Raws Lim Lim, chaw nres nkoj random, yuav hairpin
Tus nqi rov qab yog 0x000006

Txoj hlua nrog tus nqi

MappedAddress = <Kuv tus IP>: 2885

tsuas yog yam koj xav tau! Nws tau nthuav tawm cov xwm txheej tam sim no rau kev sib txuas ntawm lub zos UDP chaw nres nkoj 21234. Tab sis qhov no tsuas yog ib nrab ntawm kev sib ntaus sib tua; cov lus nug tshwm sim ntawm yuav ua li cas hloov cov ntaub ntawv no mus rau cov chaw taws teeb tswj thiab teeb tsa kev sib txuas VPN. Siv cov txheej txheem xa ntawv, lossis tej zaum Telegram?! Muaj ntau txoj kev xaiv thiab kuv txiav txim siab siv Yandex.disk, txij li thaum kuv tuaj hla tsab xov xwm hais txog kev ua haujlwm Curl ntawm WebDav nrog Yandex.disk. Tom qab xav txog qhov kev siv, kuv tau los nrog cov txheej txheem hauv qab no:

  1. Cov teeb liab uas cov nodes tau npaj los tsim kom muaj kev sib txuas los ntawm qhov muaj cov ntaub ntawv tshwj xeeb nrog lub sijhawm rau Yandex.disk;
  2. Yog tias cov nodes tau npaj txhij, ces tau txais cov kev ntsuas tam sim no los ntawm STUN server;
  3. Upload tam sim no nqis rau Yandex.disk;
  4. Tshawb xyuas lub xub ntiag thiab nyeem cov kev txwv ntawm cov chaw taws teeb ntawm cov ntaub ntawv ntawm Yandex.disk;
  5. Tsim kev sib txuas nrog tus tswv tsev nyob deb siv OpenVPN.

Xyaum ua haujlwm

Tom qab xav me ntsis, coj mus rau hauv tus account qhov kev paub ntawm tsab xov xwm kawg, kuv sau ntawv sai sai. Peb yuav xav tau:

# apt install openvpn stun-client curl 

Tsab ntawv nws tus kheej:

thawj version

# 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

Rau tsab ntawv ua haujlwm koj xav tau:

  1. Luam rau cov ntawv teev cia thiab muab tso rau hauv editor, piv txwv li:
    # nano vpn8.sh 
  2. qhia tus username thiab password rau Yandex.disk.
  3. hauv daim teb "—ifconfig 10.45.54.(1 lossis 2) 255.255.255.252" qhia qhov chaw nyob IP sab hauv ntawm lub interface
  4. tsim secret.key hais kom ua:
    # openvpn --genkey --secret secret.key 
  5. ua kom tsab ntawv executable:
    # chmod +x vpn8.sh
  6. khiav tsab ntawv:
    # ./vpn8.sh nZbVGBuX5dtturD

    qhov twg nZbVGBuX5dtturD yog qhov kev sib txuas ID generated S, SѓS,

Ntawm cov chaw taws teeb, ua txhua yam zoo ib yam tsuas yog tsim secret.key thiab kev sib txuas ID, lawv yuav tsum zoo ib yam.

Hloov tshiab version (lub sij hawm yuav tsum tau synchronized rau kev ua haujlwm raug):

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

Rau tsab ntawv ua haujlwm koj xav tau:

  1. Luam rau cov ntawv teev cia thiab muab tso rau hauv editor, piv txwv li:
    # nano vpn10.sh 
  2. qhia tus ID nkag mus ( kab thib 2) thiab lo lus zais rau Yandex.disk ( kab thib 3).
  3. qhia qhov chaw nyob IP sab hauv ntawm lub qhov (4th kab).
  4. ua kom tsab ntawv executable:
    # chmod +x vpn10.sh
  5. khiav tsab ntawv:
    # ./vpn10.sh nZbVGBuX5dtturD

    qhov twg nZbVGBuX5dtturD yog qhov kev sib txuas ID generated S, SѓS,

Ntawm cov chaw taws teeb tswj, ua tib yam, qhia qhov sib thooj IP chaw nyob ntawm lub qhov thiab kev sib txuas ID.

Txhawm rau autorun tsab ntawv thaum qhib, kuv siv cov lus txib "nohup / <path rau tsab ntawv>/vpn10.sh nZbVGBuX5dtturD > /var/log/vpn10.log 2>/dev/null &" muaj nyob rau hauv cov ntaub ntawv /etc/ rc.loj

xaus

Tsab ntawv ua haujlwm, sim ntawm Ubuntu (18.04, 19.10, 20.04) thiab Debian 9. Koj tuaj yeem siv lwm yam kev pabcuam ua tus xa xov, tab sis rau kev paub kuv siv Yandex.disk.
Thaum lub sijhawm sim, nws tau pom tias qee hom NAT cov chaw muab kev pabcuam tsis tso cai tsim kev sib txuas. Feem ntau los ntawm cov neeg siv xov tooj ntawm tes qhov twg torrents raug thaiv.

Kuv npaj yuav txhim kho nyob rau hauv cov nqe lus ntawm:

  • Tsis siv neeg tiam ntawm secret.key txhua zaus koj pib, encrypt thiab luam rau Yandex.disk rau kev hloov mus rau ib qho chaw taws teeb (Ua rau hauv tus account hauv qhov hloov tshiab)
  • Tsis siv neeg muab IP chaw nyob ntawm interfaces
  • Encrypting cov ntaub ntawv ua ntej uploading rau Yandex.disk
  • Code optimization

Cia muaj IPv6 hauv txhua lub tsev!

Hloov tshiab! Cov ntaub ntawv tseeb thiab DEB pob ntawm no - yandex.disk

Tau qhov twg los: www.hab.com

Ntxiv ib saib