Nyob zoo!
Hauv tsab xov xwm no kuv xav qhia koj seb kuv siv li cas (
Tsim kom muaj kev sib txuas muaj ob peb kauj ruam:
- Pib lub node thiab tos rau cov chaw taws teeb tswj kom npaj tau;
- Txiav txim siab qhov chaw nyob IP sab nraud thiab UDP chaw nres nkoj;
- Hloov chaw nyob IP sab nraud thiab UDP chaw nres nkoj mus rau ib lub chaw nyob deb;
- Tau txais qhov chaw nyob IP sab nraud thiab UDP chaw nres nkoj los ntawm tus tswv tsev nyob deb;
- Lub koom haum ntawm ib qho IPIP qhov;
- Kev soj ntsuam kev sib txuas;
- Yog tias qhov kev twb kev txuas ploj lawm, tshem tawm IPIP qhov.
Kuv xav tau ntev thiab tseem xav tias dab tsi tuaj yeem siv los pauv cov ntaub ntawv ntawm cov nodes, qhov yooj yim tshaj plaws thiab ceev tshaj plaws rau kuv tam sim no yog ua haujlwm los ntawm Yandex.disk.
- Ua ntej, nws yog ib qho yooj yim mus use - koj xav tau 3 yam: tsim, nyeem, rho tawm. Nrog curl, qhov no yog:
Tsim:curl -s -X MKCOL --user "$usename:$password" https://webdav.yandex.ru/$folder
Nyeem:
curl -s --user "$usename:$password" -X PROPFIND -H "Depth: 1" https://webdav.yandex.ru/$folder
Rho tawm:
curl -s -X DELETE --user "$usename:$password" https://webdav.yandex.ru/$folder
- Secondly, nws yog ib qho yooj yim rau nruab:
apt install curl
Txhawm rau txiav txim siab qhov chaw nyob IP sab nraud thiab UDP chaw nres nkoj, siv cov lus txib stun-client:
stun stun.sipnet.ru -v -p $1 2>&1 | grep "MappedAddress"
Installation nrog hais kom ua:
apt install stun-client
Txhawm rau npaj lub qhov, tus qauv OS cov cuab yeej los ntawm iproute2 pob yog siv. Muaj
- thauj khoom FOU module:
modprobe fou
- mloog qhov chaw nres nkoj hauv zos:
ip fou add port $localport ipproto 4
- tsim ib qhov tunnel:
ip link add name fou$name type ipip remote $remoteip local $localip encap fou encap-sport $localport encap-dport $remoteport
- tsa lub qhov interface:
ip link set up dev fou$name
- Muab cov chaw nyob hauv zos thiab sab hauv IP chaw nyob ntawm lub qhov:
ip addr add $intIP peer $peerip dev fou$name
Rho tawm ib qhov tunnel:
ip link del dev fou$name
ip fou del port $localport
Lub xeev tunnel raug saib xyuas los ntawm ntu ntu pinging qhov chaw nyob IP sab hauv ntawm qhov chaw taws teeb ntawm qhov chaw nrog cov lus txib:
ping -c 1 $peerip -s 0
Lub sijhawm ping yog qhov xav tau tshwj xeeb los tswj cov channel, txwv tsis pub, thaum lub qhov av tsis ua haujlwm, NAT cov ntxhuav ntawm cov routers yuav raug tshem tawm thiab tom qab ntawd qhov kev sib txuas yuav tawg.
Yog tias ping ploj lawm, tom qab ntawd IPIP qhov raug tshem tawm thiab tos kev npaj los ntawm tus tswv tsev nyob deb.
Tsab ntawv nws tus kheej:
#!/bin/bash
username="[email protected]"
password="password"
folder="vpnid"
intip="10.0.0.1"
localport=`shuf -i 10000-65000 -n 1`
cid=`shuf -i 10000-99999 -n 1`
tid=`shuf -i 10-99 -n 1`
function yaread {
curl -s --user "$1:$2" -X PROPFIND -H "Depth: 1" https://webdav.yandex.ru/$3 | sed 's/></>n</g' | grep "displayname" | sed 's/<d:displayname>//g' | sed 's/</d:displayname>//g' | grep -v $3 | grep -v $4 | sort -r
}
function yacreate {
curl -s -X MKCOL --user "$1:$2" https://webdav.yandex.ru/$3
}
function yadelete {
curl -s -X DELETE --user "$1:$2" https://webdav.yandex.ru/$3
}
function myipport {
stun stun.sipnet.ru -v -p $1 2>&1 | grep "MappedAddress" | sort | uniq | awk '{print $3}' | head -n1
}
function tunnel-up {
modprobe fou
ip fou add port $4 ipproto 4
ip link add name fou$7 type ipip remote $1 local $3 encap fou encap-sport $4 encap-dport $2
ip link set up dev fou$7
ip addr add $6 peer $5 dev fou$7
}
function tunnel-check {
sleep 10
pings=0
until [[ $pings == 4 ]]; do
if ping -c 1 $1 -s 0 &>/dev/null;
then echo -n .; n=0
else echo -n !; ((pings++))
fi
sleep 15
done
}
function tunnel-down {
ip link del dev fou$1
ip fou del port $2
}
trap 'echo -e "nDisconnecting..." && yadelete $username $password $folder; tunnel-down $tunnelid $localport; echo "IPIP tunnel disconnected!"; exit 1' 1 2 3 8 9 14 15
until [[ -n $end ]]; do
yacreate $username $password $folder
until [[ -n $ip ]]; do
mydate=`date +%s`
timeout="60"
list=`yaread $username $password $folder $cid | head -n1`
yacreate $username $password $folder/$mydate:$cid
for l in $list; do
if [ `echo $l | sed 's/:/ /g' | awk {'print $1'}` -ge $(($mydate-65)) ]; then
#echo $list
myipport=`myipport $localport`
yacreate $username $password $folder/$mydate:$cid:$myipport:$intip:$tid
timeout=$(( $timeout + `echo $l | sed 's/:/ /g' | awk {'print $1'}` - $mydate + 3 ))
ip=`echo $l | sed 's/:/ /g' | awk '{print $3}'`
port=`echo $l | sed 's/:/ /g' | awk '{print $4}'`
peerip=`echo $l | sed 's/:/ /g' | awk '{print $5}'`
peerid=`echo $l | sed 's/:/ /g' | awk '{print $6}'`
if [[ -n $peerid ]]; then tunnelid=$(($peerid*$tid)); fi
fi
done
if ( [[ -z "$ip" ]] && [ "$timeout" -gt 0 ] ) ; then
echo -n "!"
sleep $timeout
fi
done
localip=`ip route get $ip | head -n1 | sed 's|.*src ||' | cut -d' ' -f1`
tunnel-up $ip $port $localip $localport $peerip $intip $tunnelid
tunnel-check $peerip
tunnel-down $tunnelid $localport
yadelete $username $password $folder
unset ip port myipport
done
exit 0
Hloov pauv username, lo lus zais ΠΈ nplaub tshev yuav tsum yog tib yam ntawm ob sab, tab sis intip - txawv, piv txwv li: 10.0.0.1 thiab 10.0.0.2. Lub sijhawm ntawm cov nodes yuav tsum tau synchronized. Koj tuaj yeem khiav cov ntawv zoo li no:
nohup script.sh &
Kuv xav kos koj cov xim rau qhov tseeb tias IPIP qhov tsis muaj kev nyab xeeb los ntawm qhov pom ntawm qhov tseeb tias kev khiav tsheb tsis yog encrypted, tab sis qhov no tuaj yeem daws tau yooj yim siv IPsec dhau.
Kuv tau siv tsab ntawv no los txuas rau lub PC ua haujlwm tau ntau lub lis piam tam sim no thiab tsis tau pom muaj teeb meem. Yooj yim rau kev teeb tsa thiab tsis nco qab nws.
Tej zaum koj yuav muaj cov lus qhia thiab cov lus qhia, Kuv yuav zoo siab los mloog.
Ua tsaug rau koj txoj kev paub!
Tau qhov twg los: www.hab.com