Ọwara VPN ozugbo n'etiti kọmputa site na ndị na-eweta NAT (na-enweghị VPS, na-eji sava STUN na Yandex.disk)

Nọgide edemede gbasara otu m siri hazie ọwara VPN ozugbo n'etiti kọmputa abụọ dị n'azụ ndị na-enye NAT. Isiokwu gara aga kọwara usoro nke ịhazi njikọ site n'enyemaka nke ndị ọzọ - onye na-emekọrịta ihe (VPS a gbaziri agbaziri na-eme ihe dị ka ihe nkesa STUN na onye na-ebufe data node maka njikọ ahụ). N'isiokwu a, m ga-agwa gị otú m jisiri ike na-enweghị VPS, ma intermediaries nọgidere na ha bụ STUN nkesa na Yandex.Disk ...
Ọwara VPN ozugbo n'etiti kọmputa site na ndị na-eweta NAT (na-enweghị VPS, na-eji sava STUN na Yandex.disk)

Okwu Mmalite

Mgbe m gụchara nkọwa nke post gara aga, achọpụtara m na isi ihe ndọghachi azụ nke mmejuputa atumatu bụ ojiji nke intermediary - nke atọ (VPS) nke gosipụtara paramita dị ugbu a nke ọnụ ọnụ, ebe na otu esi ejikọ. N'ịtụle ndụmọdụ iji STUN a (nke enwere otutu n'ime ha) iji chọpụta paramita njikọ dị ugbu a. Nke mbụ, ekpebiri m iji TCPDump lelee ọdịnaya nke ngwugwu mgbe ihe nkesa STUN na-arụ ọrụ na ndị ahịa wee nweta ọdịnaya a na-apụghị ịgụta ọnụ. N'ịgagharị protocol m zutere akụkọ na-akọwa protocol. Achọpụtara m na enweghị m ike imejuputa arịrịọ maka ihe nkesa STUN n'onwe m ma tinye echiche ahụ na "igbe dị anya".

Akwụkwọ

N'oge na-adịbeghị anya, aghaghị m ịwụnye ihe nkesa STUN na Debian site na ngwugwu

# apt install stun-server

na dabere na m hụrụ ngwugwu stun-client, mana n'ụzọ ụfọdụ anaghị m etinye uche na ya. Ma mgbe e mesịrị, echetara m banyere ngwugwu stun-client wee kpebie ịchọpụta otú o si arụ ọrụ, mgbe m na-achọgharị na Yandex, enwetara m:

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

Na nzaghachi m nwetara:

Ndị ahịa STUN 0.97
Ọdụ ụgbọ mmiri mepere 21234 na fd 3
Ọdụ ụgbọ mmiri mepere 21235 na fd 4
Na-edobe ozi stun:
Arịrịọ mgbanwe mgbanwe: 0

Ihe gbasara izipu ozi len 28 ruo 216.93.246.18:3478
Na-edobe ozi stun:
Arịrịọ mgbanwe mgbanwe: 4

Ihe gbasara izipu ozi len 28 ruo 216.93.246.18:3478
Na-edobe ozi stun:
Arịrịọ mgbanwe mgbanwe: 2

Ihe gbasara izipu ozi len 28 ruo 216.93.246.18:3478
Anatara ozi mkparị: 92 bytes
MappedAddress = <IP m>:2885
Isi okwu = 216.93.246.18:3478
ChangedAdreesị = 216.93.246.17:3479
Njirimara amaghi ama: 32800
Aha Server = Vovida.org 0.98-CPC
Ozi enwetara nke ụdị 257 id=1
Na-edobe ozi stun:
Arịrịọ mgbanwe mgbanwe: 0

Ihe gbasara izipu ozi len 28 ruo 216.93.246.17:3478
Na-edobe ozi stun:
Arịrịọ mgbanwe mgbanwe: 4

Ihe gbasara izipu ozi len 28 ruo 216.93.246.18:3478
Na-edobe ozi stun:
Arịrịọ mgbanwe mgbanwe: 2

Ihe gbasara izipu ozi len 28 ruo 216.93.246.18:3478
Na-edobe ozi stun:
Arịrịọ mgbanwe mgbanwe: 0

Maka izipu ozi nke len 28 na <My IP>:2885
Anatara ozi mkparị: 28 bytes
Arịrịọ Change = 0
Ozi enwetara nke ụdị 1 id=11
Na-edobe ozi stun:
Arịrịọ mgbanwe mgbanwe: 0

Ihe gbasara izipu ozi len 28 ruo 216.93.246.17:3478
Na-edobe ozi stun:
Arịrịọ mgbanwe mgbanwe: 4

Ihe gbasara izipu ozi len 28 ruo 216.93.246.18:3478
Na-edobe ozi stun:
Arịrịọ mgbanwe mgbanwe: 2

Ihe gbasara izipu ozi len 28 ruo 216.93.246.18:3478
Anatara ozi mkparị: 92 bytes
MappedAddress = <IP m>:2885
Isi okwu = 216.93.246.17:3479
ChangedAdreesị = 216.93.246.18:3478
Njirimara amaghi ama: 32800
Aha Server = Vovida.org 0.98-CPC
Ozi enwetara nke ụdị 257 id=10
Na-edobe ozi stun:
Arịrịọ mgbanwe mgbanwe: 4

Ihe gbasara izipu ozi len 28 ruo 216.93.246.18:3478
Na-edobe ozi stun:
Arịrịọ mgbanwe mgbanwe: 2

Ihe gbasara izipu ozi len 28 ruo 216.93.246.18:3478
Na-edobe ozi stun:
Arịrịọ mgbanwe mgbanwe: 4

Ihe gbasara izipu ozi len 28 ruo 216.93.246.18:3478
Na-edobe ozi stun:
Arịrịọ mgbanwe mgbanwe: 2

Ihe gbasara izipu ozi len 28 ruo 216.93.246.18:3478
Na-edobe ozi stun:
Arịrịọ mgbanwe mgbanwe: 4

Ihe gbasara izipu ozi len 28 ruo 216.93.246.18:3478
Na-edobe ozi stun:
Arịrịọ mgbanwe mgbanwe: 2

Ihe gbasara izipu ozi len 28 ruo 216.93.246.18:3478
Na-edobe ozi stun:
Arịrịọ mgbanwe mgbanwe: 4

Ihe gbasara izipu ozi len 28 ruo 216.93.246.18:3478
Na-edobe ozi stun:
Arịrịọ mgbanwe mgbanwe: 2

Ihe gbasara izipu ozi len 28 ruo 216.93.246.18:3478
Na-edobe ozi stun:
Arịrịọ mgbanwe mgbanwe: 4

Ihe gbasara izipu ozi len 28 ruo 216.93.246.18:3478
Na-edobe ozi stun:
Arịrịọ mgbanwe mgbanwe: 2

Ihe gbasara izipu ozi len 28 ruo 216.93.246.18:3478
ule I = 1
ule II = 0
ule III = 0
ule I(2) = 1
nat = 1
mapped IP otu = 1
ntutu isi = 1
ọdụ ụgbọ mmiri = 0
Isi: Maapụ nọọrọ onwe ya, Filter Dependent Port, ọdụ ụgbọ mmiri, ga-akpụ ntutu
Uru nloghachi bụ 0x000006

eriri nwere uru

MappedAddress = <IP m>:2885

naanị ihe ị chọrọ! Ọ gosipụtara ọnọdụ dị ugbu a maka njikọ na ọdụ ụgbọ mmiri UDP mpaghara 21234. Ma nke a bụ nanị ọkara agha ahụ; ajụjụ bilitere banyere otu esi ebufe data a na onye ọbịa dịpụrụ adịpụ ma hazie njikọ VPN. Iji usoro ozi ozi, ma ọ bụ ikekwe Telegram?! Enwere ọtụtụ nhọrọ na ekpebiri m iji Yandex.disk, ebe m nwetara akụkọ banyere ịrụ ọrụ Curl site na WebDav na Yandex.disk. Mgbe m chesịrị echiche banyere mmejuputa atumatu, ewepụtara m atụmatụ a:

  1. Ihe mgbaàmà na ọnụ dị njikere ịmepụta njikọ site na ọnụnọ nke otu faịlụ nwere akara timestamp na Yandex.disk;
  2. Ọ bụrụ na ọnụ ọnụ dị njikere, wee nweta paramita dị ugbu a site na ihe nkesa STUN;
  3. Bulite ntọala ugbu a na Yandex.disk;
  4. Lelee ọnụnọ wee gụọ paramita nke ọnụ ụzọ dịpụrụ adịpụ site na faịlụ na Yandex.disk;
  5. Ịmepụta njikọ na onye ọbịa dịpụrụ adịpụ site na iji OpenVPN.

Mee ihe

Mgbe m chechara ntakịrị, na-eburu n'uche ahụmahụ nke isiokwu ikpeazụ, edere m edemede ngwa ngwa. Anyị ga-achọ:

# apt install openvpn stun-client curl 

Edemede n'onwe ya:

ụdị mbụ

# 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

Ka edemede ahụ rụọ ọrụ, ịchọrọ:

  1. Detuo na klipbọọdụ wee mado n'ime ndezi, dịka ọmụmaatụ:
    # nano vpn8.sh 
  2. ezipụta aha njirimara na paswọọdụ maka Yandex.disk.
  3. n'ọhịa "-ifconfig 10.45.54.(1 ma ọ bụ 2) 255.255.255.252" ezipụta adreesị IP ime nke interface.
  4. mepụta nzuzo.igodo iwu:
    # openvpn --genkey --secret secret.key 
  5. mee ka script ahụ nwee ike ịrụ ọrụ:
    # chmod +x vpn8.sh
  6. mee script:
    # ./vpn8.sh nZbVGBuX5dtturD

    ebe nZbVGBuX5dtturD bụ NJ njikọ emepụtara ebe a

N'elu oghere dịpụrụ adịpụ, mee ihe niile ma e wezụga maka ịmepụta secret.key na njikọ njikọ, ha ga-abụrịrị otu.

Ụdị emelitere (oge ga-ejikọrịrị maka ịrụ ọrụ ziri ezi):

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

Ka edemede ahụ rụọ ọrụ, ịchọrọ:

  1. Detuo na klipbọọdụ wee mado n'ime ndezi, dịka ọmụmaatụ:
    # nano vpn10.sh 
  2. gosi nbanye (ahịrị nke abụọ) na paswọọdụ maka Yandex.disk (ahịrị nke atọ).
  3. ezipụta adreesị IP ime nke ọwara (akara nke anọ).
  4. mee ka script ahụ nwee ike ịrụ ọrụ:
    # chmod +x vpn10.sh
  5. mee script:
    # ./vpn10.sh nZbVGBuX5dtturD

    ebe nZbVGBuX5dtturD bụ NJ njikọ emepụtara ebe a

N'ime oghere dịpụrụ adịpụ, mee otu ihe ahụ, kọwaa adreesị IP nke ọwara na njikọ njikọ kwekọrọ.

Iji megharịa edemede ahụ mgbe agbanyere, m na-eji iwu "nohup / <ụzọ na edemede>/vpn10.sh nZbVGBuX5dtturD> /var/log/vpn10.log 2>/dev/null &" dị na faịlụ /etc/ rc. mpaghara

nkwubi

Ederede na-arụ ọrụ, nwalere na Ubuntu (18.04, 19.10, 20.04) na Debian 9. Ị nwere ike iji ọrụ ọ bụla ọzọ dị ka onye na-ebufe, ma maka ahụmahụ m na-eji Yandex.disk.
N'oge nnwale ahụ, achọpụtara na ụfọdụ ụdị ndị na-enye NAT anaghị ekwe ka ịmepụta njikọ. Ọ kachasị site na ndị na-ahụ maka mkpanaka ebe a na-egbochi iyi.

A na m eme atụmatụ imeziwanye n'ihe gbasara:

  • Ọgbọ secret.key akpaaka oge ọ bụla ịmalite, zoo ma detuo ya na Yandex.disk maka ịnyefe n'ime oghere dịpụrụ adịpụ (na-eburu n'uche na ụdị emelitere)
  • Akpaaka ọrụ nke adreesị IP nke interfaces
  • Izochi data tupu ebugote na Yandex.disk
  • Nkwalite koodu

Ka enwere IPv6 n'ụlọ ọ bụla!

Emelitere! Faịlụ kacha ọhụrụ na ngwugwu DEB ebe a - yandex.disk

isi: www.habr.com

Tinye a comment