Ramin VPN kai tsaye tsakanin kwamfutoci ta hanyar NATs na masu samarwa (ba tare da VPS ba, ta amfani da uwar garken STUN da Yandex.disk)

Ci gaba labarai game da yadda na gudanar da tsara hanyar VPN kai tsaye tsakanin kwamfutoci biyu da ke bayan masu samar da NAT. Labarin da ya gabata ya bayyana tsarin tsarin haɗin gwiwa tare da taimakon wani ɓangare na uku - mai shiga tsakani (VPS mai haya wanda ke aiki a matsayin wani abu kamar uwar garken STUN da mai watsa bayanan kumburi don haɗin). A cikin wannan labarin zan gaya muku yadda na gudanar ba tare da VPS ba, amma masu shiga tsakani sun kasance kuma sun kasance uwar garken STUN da Yandex.Disk ...
Ramin VPN kai tsaye tsakanin kwamfutoci ta hanyar samar da NATs (ba tare da VPS ba, ta amfani da uwar garken STUN da Yandex.disk)

Gabatarwar

Bayan karanta maganganun da aka yi a baya, na gane cewa babban mahimmancin aiwatarwa shine amfani da tsaka-tsaki - wani ɓangare na uku (VPS) wanda ya nuna sigogi na yanzu na kumburi, inda kuma yadda za a haɗa. Yin la'akari da shawarwarin don amfani da wannan STUN (wanda akwai da yawa daga cikinsu) don ƙayyade sigogin haɗin kai na yanzu. Da farko, na yanke shawarar yin amfani da TCPDump don duba abubuwan da ke cikin fakiti lokacin da uwar garken STUN ke aiki tare da abokan ciniki kuma sun karɓi abun ciki gaba ɗaya wanda ba za a iya karantawa ba. Googling protocol na ci karo da shi labarin da ke bayyana ƙa'idar. Na gane cewa ba zan iya aiwatar da buƙatun zuwa uwar garken STUN da kaina ba kuma na sanya ra'ayin a cikin "akwatin mai nisa".

Ka'idar

Kwanan nan dole in shigar da uwar garken STUN akan Debian daga kunshin

# apt install stun-server

kuma a cikin dogara na ga kunshin stun-abokin ciniki, amma ko ta yaya ban kula da shi ba. Amma daga baya na tuna game da kunshin stun-abokin ciniki kuma na yanke shawarar gano yadda yake aiki, bayan gogling da bincike a Yandex na samu:

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

A martani na samu:

STUN abokin ciniki 0.97
An buɗe tashar jiragen ruwa 21234 tare da fd 3
An buɗe tashar jiragen ruwa 21235 tare da fd 4
Rufe saƙon stun:
Bukatar Canjin Rubutu: 0

Game da aika saƙon len 28 zuwa 216.93.246.18:3478
Rufe saƙon stun:
Bukatar Canjin Rubutu: 4

Game da aika saƙon len 28 zuwa 216.93.246.18:3478
Rufe saƙon stun:
Bukatar Canjin Rubutu: 2

Game da aika saƙon len 28 zuwa 216.93.246.18:3478
Saƙon da aka karɓa: 92 bytes
MappedAdress = <My IP>: 2885
Adireshin tushe = 216.93.246.18:3478
Canja adireshin = 216.93.246.17:3479
Ba a sani ba: 32800
Sunan uwar garken = Vovida.org 0.98-CPC
Saƙon da aka karɓa na nau'in 257 id=1
Rufe saƙon stun:
Bukatar Canjin Rubutu: 0

Game da aika saƙon len 28 zuwa 216.93.246.17:3478
Rufe saƙon stun:
Bukatar Canjin Rubutu: 4

Game da aika saƙon len 28 zuwa 216.93.246.18:3478
Rufe saƙon stun:
Bukatar Canjin Rubutu: 2

Game da aika saƙon len 28 zuwa 216.93.246.18:3478
Rufe saƙon stun:
Bukatar Canjin Rubutu: 0

Game da aika saƙon len 28 zuwa <My IP>:2885
Saƙon da aka karɓa: 28 bytes
Canji buƙatar = 0
Saƙon da aka karɓa na nau'in 1 id=11
Rufe saƙon stun:
Bukatar Canjin Rubutu: 0

Game da aika saƙon len 28 zuwa 216.93.246.17:3478
Rufe saƙon stun:
Bukatar Canjin Rubutu: 4

Game da aika saƙon len 28 zuwa 216.93.246.18:3478
Rufe saƙon stun:
Bukatar Canjin Rubutu: 2

Game da aika saƙon len 28 zuwa 216.93.246.18:3478
Saƙon da aka karɓa: 92 bytes
MappedAdress = <My IP>: 2885
Adireshin tushe = 216.93.246.17:3479
Canja adireshin = 216.93.246.18:3478
Ba a sani ba: 32800
Sunan uwar garken = Vovida.org 0.98-CPC
Saƙon da aka karɓa na nau'in 257 id=10
Rufe saƙon stun:
Bukatar Canjin Rubutu: 4

Game da aika saƙon len 28 zuwa 216.93.246.18:3478
Rufe saƙon stun:
Bukatar Canjin Rubutu: 2

Game da aika saƙon len 28 zuwa 216.93.246.18:3478
Rufe saƙon stun:
Bukatar Canjin Rubutu: 4

Game da aika saƙon len 28 zuwa 216.93.246.18:3478
Rufe saƙon stun:
Bukatar Canjin Rubutu: 2

Game da aika saƙon len 28 zuwa 216.93.246.18:3478
Rufe saƙon stun:
Bukatar Canjin Rubutu: 4

Game da aika saƙon len 28 zuwa 216.93.246.18:3478
Rufe saƙon stun:
Bukatar Canjin Rubutu: 2

Game da aika saƙon len 28 zuwa 216.93.246.18:3478
Rufe saƙon stun:
Bukatar Canjin Rubutu: 4

Game da aika saƙon len 28 zuwa 216.93.246.18:3478
Rufe saƙon stun:
Bukatar Canjin Rubutu: 2

Game da aika saƙon len 28 zuwa 216.93.246.18:3478
Rufe saƙon stun:
Bukatar Canjin Rubutu: 4

Game da aika saƙon len 28 zuwa 216.93.246.18:3478
Rufe saƙon stun:
Bukatar Canjin Rubutu: 2

Game da aika saƙon len 28 zuwa 216.93.246.18:3478
gwajin I = 1
gwaji II = 0
gwaji III = 0
gwajin I(2) = 1
ina = 1
IP guda = 1
gashin gashi = 1
tashar ajiya = 0
Firamare: Taswirar Mai zaman kanta, Tace Dogara ta Port, tashar jiragen ruwa bazuwar, za ta yi gashi
Darajar dawowa shine 0x000006

Iri mai ƙima

MappedAdress = <My IP>: 2885

kawai abin da kuke bukata! Ya nuna halin yanzu don haɗin kai a kan tashar UDP na gida 21234. Amma wannan shine kawai rabin yakin; tambayar ta taso game da yadda za a canja wurin wannan bayanai zuwa mai watsa shiri mai nisa da kuma tsara haɗin VPN. Yin amfani da tsarin imel, ko watakila Telegram?! Akwai zaɓuɓɓuka da yawa kuma na yanke shawarar yin amfani da Yandex.disk, tunda na gamu labarin game da aiki Curl ta WebDav tare da Yandex.disk. Bayan tunanin aiwatarwa, sai na fito da tsarin kamar haka:

  1. Alamar cewa nodes suna shirye don kafa haɗin gwiwa ta kasancewar takamaiman fayil tare da tambarin lokaci akan Yandex.disk;
  2. Idan nodes sun shirya, to, karbi sigogi na yanzu daga uwar garken STUN;
  3. Loda saitunan yanzu zuwa Yandex.disk;
  4. Bincika kasancewar kuma karanta sigogi na kumburin nesa daga fayil akan Yandex.disk;
  5. Ƙirƙirar haɗi tare da mai watsa shiri mai nisa ta amfani da OpenVPN.

Yi aiki

Bayan yin tunani kadan, la'akari da kwarewar labarin karshe, na yi sauri na rubuta rubutun. Za mu buƙaci:

# apt install openvpn stun-client curl 

Rubutun kansa:

sigar asali

# 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

Don rubutun ya yi aiki kuna buƙatar:

  1. Kwafi zuwa allo kuma manna cikin edita, misali:
    # nano vpn8.sh 
  2. saka sunan mai amfani da kalmar sirri don Yandex.disk.
  3. a cikin filin "-ifconfig 10.45.54.(1 ko 2) 255.255.255.252" ƙayyade adireshin IP na ciki na dubawa
  4. halitta sirri.key umarni:
    # openvpn --genkey --secret secret.key 
  5. sanya rubutun aiwatarwa:
    # chmod +x vpn8.sh
  6. gudanar da rubutun:
    # ./vpn8.sh nZbVGBuX5dtturD

    inda nZbVGBuX5dtturD shine ID ɗin haɗin da aka samar a nan

A kan kullin nesa, yi komai iri ɗaya sai dai ƙirƙirar sirrin.key da ID na haɗi, dole ne su kasance iri ɗaya.

Sigar da aka sabunta (dole ne a daidaita lokaci don aiki daidai):

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

Don rubutun ya yi aiki kuna buƙatar:

  1. Kwafi zuwa allo kuma manna cikin edita, misali:
    # nano vpn10.sh 
  2. nuna login (layi na biyu) da kalmar sirri don Yandex.disk (layi na 2).
  3. saka adireshin IP na ciki na rami (layi na 4).
  4. sanya rubutun aiwatarwa:
    # chmod +x vpn10.sh
  5. gudanar da rubutun:
    # ./vpn10.sh nZbVGBuX5dtturD

    inda nZbVGBuX5dtturD shine ID ɗin haɗin da aka samar a nan

A kan kullin nesa, yi daidai, saka adireshin IP na ciki mai dacewa na rami da ID na haɗi.

Don sarrafa rubutun lokacin kunnawa, Ina amfani da umarnin "nohup /<hanya zuwa rubutun>/vpn10.sh nZbVGBuX5dtturD> /var/log/vpn10.log 2>/dev/null &" da ke cikin fayil ɗin /etc/ rc.local

ƙarshe

Rubutun yana aiki, an gwada shi akan Ubuntu (18.04, 19.10, 20.04) da Debian 9. Kuna iya amfani da kowane sabis azaman mai watsawa, amma don gogewa na yi amfani da Yandex.disk.
A lokacin gwaje-gwajen, an gano cewa wasu nau'ikan masu samar da NAT ba sa ba da izinin kafa haɗin gwiwa. Musamman daga masu aikin wayar hannu inda aka toshe rafuka.

Ina shirin ingantawa ta fuskar:

  • Ƙirƙirar secret.key ta atomatik duk lokacin da ka fara, ɓoyewa da kwafi zuwa Yandex.disk don canja wurin kundi mai nisa (Yi la'akari da sigar da aka sabunta)
  • Aiwatar ta atomatik na adiresoshin IP na musaya
  • Rufe bayanan kafin loda zuwa Yandex.disk
  • Haɓaka lambar

Bari a sami IPv6 a kowane gida!

An sabunta! Sabbin fayiloli da fakitin DEB nan - yandex.disk

source: www.habr.com

Add a comment