เจเฉฐเจเจพ เจฆเจฟเจจ!
เจเจธ เจฒเฉเจ เจตเจฟเฉฑเจ เจฎเฉเจ เจคเฉเจนเจพเจจเฉเฉฐ เจฆเฉฑเจธเจฃเจพ เจเจพเจนเฉเฉฐเจฆเจพ เจนเจพเจ เจเจฟ เจฎเฉเจ เจเจฟเจตเฉเจ เจฒเจพเจเฉ เจเฉเจคเจพ (
เจเฉฑเจ เจเฉเจจเฉเจเจธเจผเจจ เจธเจฅเจพเจชเจค เจเจฐเจจ เจตเจฟเฉฑเจ เจเจ เจเจฆเจฎ เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเฉ เจนเจจ:
- เจเฉฑเจ เจจเฉเจก เจธเจผเฉเจฐเฉ เจเจฐเจจเจพ เจ เจคเฉ เจฐเจฟเจฎเฉเจ เจจเฉเจก เจฆเฉ เจคเจฟเจเจฐ เจนเฉเจฃ เจฆเฉ เจเจกเฉเจ เจเจฐเจจเฉ;
- เจฌเจพเจนเจฐเฉ IP เจเจกเจฐเฉเฉฑเจธ เจ เจคเฉ UDP เจชเฉเจฐเจ เจฆเจพ เจชเจคเจพ เจฒเจเจพเจเจฃเจพ;
- เจเฉฑเจ เจฌเจพเจนเจฐเฉ IP เจเจกเจฐเฉเฉฑเจธ เจ เจคเฉ UDP เจชเฉเจฐเจ เจจเฉเฉฐ เจเฉฑเจ เจฐเจฟเจฎเฉเจ เจนเฉเจธเจ เจตเจฟเฉฑเจ เจคเจฌเจฆเฉเจฒ เจเจฐเจจเจพ;
- เจฐเจฟเจฎเฉเจ เจนเฉเจธเจ เจคเฉเจ เจเฉฑเจ เจฌเจพเจนเจฐเฉ IP เจเจกเจฐเฉเฉฑเจธ เจ เจคเฉ UDP เจชเฉเจฐเจ เจชเฉเจฐเจพเจชเจค เจเจฐเจจเจพ;
- เจเฉฑเจ IPIP เจธเฉเจฐเฉฐเจ เจฆเจพ เจธเฉฐเจเจ เจจ;
- เจเฉเจจเฉเจเจธเจผเจจ เจจเจฟเจเจฐเจพเจจเฉ;
- เจเฉเจเจฐ เจเฉเจจเฉเจเจธเจผเจจ เจเจคเจฎ เจนเฉ เจเจพเจเจฆเจพ เจนเฉ, เจคเจพเจ IPIP เจธเฉเจฐเฉฐเจ เจจเฉเฉฐ เจฎเจฟเจเจพเจเฅค
เจฎเฉเจ เจฒเฉฐเจฌเฉ เจธเจฎเฉเจ เจฒเจ เจธเฉเจเจฟเจ เจ เจคเฉ เจ เจเฉ เจตเฉ เจธเฉเจเจฆเจพ เจนเจพเจ เจเจฟ เจจเฉเจกเจพเจ เจตเจฟเจเจเจพเจฐ เจกเฉเจเจพ เจฆเจพ เจเจฆเจพเจจ-เจชเฉเจฐเจฆเจพเจจ เจเจฐเจจ เจฒเจ เจเฉ เจตเจฐเจคเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉ, เจเจธ เจธเจฎเฉเจ เจฎเฉเจฐเฉ เจฒเจ เจธเจญ เจคเฉเจ เจธเจฐเจฒ เจ เจคเฉ เจธเจญ เจคเฉเจ เจคเฉเจเจผ Yandex.disk เจฆเฉเจเจฐเจพ เจเฉฐเจฎ เจเจฐ เจฐเจฟเจนเจพ เจนเฉ.
- เจธเจญ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ, เจเจธเจฆเจพ เจเจชเจฏเฉเจ เจเจฐเจจเจพ เจเจธเจพเจจ เจนเฉ - เจคเฉเจนเจพเจจเฉเฉฐ 3 เจเจพเจฐเจตเจพเจเจเจ เจฆเฉ เจฒเฉเฉ เจนเฉ: เจฌเจฃเจพเจ, เจชเฉเฉเจนเฉ, เจฎเจฟเจเจพเจ. เจเจฐเจฒ เจจเจพเจฒ เจเจน เจนเฉ:
เจฌเจฃเจพเจ:curl -s -X MKCOL --user "$usename:$password" https://webdav.yandex.ru/$folder
เจชเฉเฉเจนเฉ:
curl -s --user "$usename:$password" -X PROPFIND -H "Depth: 1" https://webdav.yandex.ru/$folder
เจฎเจฟเจเจพเจ:
curl -s -X DELETE --user "$usename:$password" https://webdav.yandex.ru/$folder
- เจฆเฉเจเจพ, เจเจธ เจจเฉเฉฐ เจเฉฐเจธเจเจพเจฒ เจเจฐเจจเจพ เจเจธเจพเจจ เจนเฉ:
apt install curl
เจฌเจพเจนเจฐเฉ IP เจเจกเจฐเฉเฉฑเจธ เจ เจคเฉ UDP เจชเฉเจฐเจ เจฆเจพ เจชเจคเจพ เจฒเจเจพเจเจฃ เจฒเจ, stun-client เจเจฎเจพเจเจก เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเฉ:
stun stun.sipnet.ru -v -p $1 2>&1 | grep "MappedAddress"
เจเจฎเจพเจเจก เจจเจพเจฒ เจเฉฐเจธเจเจพเจฒเฉเจธเจผเจจ:
apt install stun-client
เจเฉฑเจ เจธเฉเจฐเฉฐเจ เจจเฉเฉฐ เจธเฉฐเจเจ เจฟเจค เจเจฐเจจ เจฒเจ, iproute2 เจชเฉเจเฉเจ เจคเฉเจ เจฎเจฟเจเจฐเฉ OS เจเฉเจฒ เจตเจฐเจคเฉ เจเจพเจเจฆเฉ เจนเจจเฅค เจฎเฉเจเฉเจฆ เจนเฉ
- FOU เจฎเฉเจกเฉเจเจฒ เจฒเฉเจก เจเจฐเฉ:
modprobe fou
- เจธเจฅเจพเจจเจ เจชเฉเจฐเจ เจจเฉเฉฐ เจธเฉเจฃเฉ:
ip fou add port $localport ipproto 4
- เจเฉฑเจ เจธเฉเจฐเฉฐเจ เจฌเจฃเจพเจ:
ip link add name fou$name type ipip remote $remoteip local $localip encap fou encap-sport $localport encap-dport $remoteport
- เจธเฉเจฐเฉฐเจ เจเฉฐเจเจฐเจซเฉเจธ เจจเฉเฉฐ เจตเจงเจพเจ:
ip link set up dev fou$name
- เจธเฉเจฐเฉฐเจ เจฆเฉ เจ เฉฐเจฆเจฐเฉเจจเฉ เจธเจฅเจพเจจเจ เจ เจคเฉ เจ เฉฐเจฆเจฐเฉเจจเฉ เจฐเจฟเจฎเฉเจ IP เจชเจคเฉ เจจเจฟเจฐเจงเจพเจฐเจค เจเจฐเฉ:
ip addr add $intIP peer $peerip dev fou$name
เจเฉฑเจ เจธเฉเจฐเฉฐเจ เจฎเจฟเจเจพเจ:
ip link del dev fou$name
ip fou del port $localport
เจธเฉเจฐเฉฐเจ เจธเจฅเจฟเจคเฉ เจฆเฉ เจจเจฟเจเจฐเจพเจจเฉ เจธเจฎเฉเจ-เจธเจฎเฉเจ 'เจคเฉ เจเจฎเจพเจเจก เจจเจพเจฒ เจฐเจฟเจฎเฉเจ เจจเฉเจก เจเจจเจฒ เจฆเฉ เจ เฉฐเจฆเจฐเฉเจจเฉ IP เจเจกเจฐเฉเฉฑเจธ เจจเฉเฉฐ เจชเจฟเฉฐเจ เจเจฐเจเฉ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ:
ping -c 1 $peerip -s 0
เจเฉเจจเจฒ เจจเฉเฉฐ เจฌเจฃเจพเจ เจฐเฉฑเจเจฃ เจฒเจ เจธเจฎเฉเจ-เจธเจฎเฉเจ 'เจคเฉ เจชเจฟเฉฐเจ เจฆเฉ เจฒเฉเฉ เจนเฉเฉฐเจฆเฉ เจนเฉ, เจจเจนเฉเจ เจคเจพเจ, เจเจฆเฉเจ เจธเฉเจฐเฉฐเจ เจจเจฟเจธเจผเจเจฟเจฐเจฟเจ เจนเฉเฉฐเจฆเฉ เจนเฉ, เจคเจพเจ เจฐเจพเจเจเจฐเจพเจ 'เจคเฉ NAT เจเฉเจฌเจฒเจพเจ เจจเฉเฉฐ เจธเจพเจซเจผ เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉ เจ เจคเฉ เจซเจฟเจฐ เจเจจเฉเจเจธเจผเจจ เจเฉเฉฑเจ เจเจพเจตเฉเจเจพเฅค
เจเฉเจเจฐ เจชเจฟเฉฐเจ เจเจพเจเจฌ เจนเฉ เจเจพเจเจฆเฉ เจนเฉ, เจคเจพเจ IPIP เจธเฉเจฐเฉฐเจ เจฎเจฟเจเจพ เจฆเจฟเฉฑเจคเฉ เจเจพเจเจฆเฉ เจนเฉ เจ เจคเฉ เจฐเจฟเจฎเฉเจ เจนเฉเจธเจ เจคเฉเจ เจคเจฟเจเจฐเฉ เจฆเฉ เจเจกเฉเจ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉเฅค
เจธเจเฉเจฐเจฟเจชเจ เจเฉเจฆ:
#!/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
เจตเฉเจฐเฉเจเจฌเจฒ เจเจชเจญเฉเจเฉ, เจชเจพเจธเจตเจฐเจก ะธ เจซเฉเจฒเจกเจฐ เจจเฉเฉฐ เจฆเฉเจจเฉ เจชเจพเจธเฉ 'เจคเฉ เจเฉฑเจเฉ เจนเฉ เจนเฉเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ, เจชเจฐ intip - เจตเฉฑเจเจฐเจพ, เจเจฆเจพเจนเจฐเจจ เจฒเจ: 10.0.0.1 เจ เจคเฉ 10.0.0.2เฅค เจจเฉเจกเจพเจ 'เจคเฉ เจธเจฎเจพเจ เจธเจฎเจเจพเจฒเฉ เจนเฉเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉเฅค เจคเฉเจธเฉเจ เจเจธ เจคเจฐเฉเจนเจพเจ เจธเจเฉเจฐเจฟเจชเจ เจเจฒเจพ เจธเจเจฆเฉ เจนเฉ:
nohup script.sh &
เจฎเฉเจ เจเจธ เจคเฉฑเจฅ เจตเฉฑเจฒ เจคเฉเจนเจพเจกเจพ เจงเจฟเจเจจ เจเจฟเฉฑเจเจฃเจพ เจเจพเจนเจพเจเจเจพ เจเจฟ IPIP เจธเฉเจฐเฉฐเจ เจเจธ เจคเฉฑเจฅ เจฆเฉ เจฆเฉเจฐเจฟเจธเจผเจเฉเจเฉเจฃ เจคเฉเจ เจ
เจธเฉเจฐเฉฑเจเจฟเจ
เจค เจนเฉ เจเจฟ เจเฉเจฐเฉเจซเจฟเจ เจเจจเจเฉเจฐเจฟเจชเจเจก เจจเจนเฉเจ เจนเฉ, เจชเจฐ เจเจธ เจจเฉเฉฐ IPsec เจเจตเจฐ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเจธเจพเจจเฉ เจจเจพเจฒ เจนเฉฑเจฒ เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉ.
เจฎเฉเจ เจเจธ เจธเจเฉเจฐเจฟเจชเจ เจฆเฉ เจตเจฐเจคเฉเจ เจชเจฟเจเจฒเฉ เจเจ เจนเจซเจผเจคเจฟเจเจ เจคเฉเจ เจเฉฑเจ เจตเจฐเจ เจชเฉเจธเฉ เจจเจพเจฒ เจเฉเฉเจจ เจฒเจ เจเจฐ เจฐเจฟเจนเจพ เจนเจพเจ เจ เจคเฉ เจฎเฉเจจเฉเฉฐ เจเฉเจ เจธเจฎเฉฑเจธเจฟเจ เจจเจนเฉเจ เจเจ เจนเฉเฅค เจเจธเจจเฉเฉฐ เจธเฉเจ เจเจฐเจจ เจ เจคเฉ เจเจธเจจเฉเฉฐ เจญเฉเฉฑเจฒเจฃ เจฆเฉ เจฎเจพเจฎเจฒเฉ เจตเจฟเฉฑเจ เจธเฉเจตเจฟเจงเจพเจเจจเจเฅค
เจธเจผเจพเจเจฆ เจคเฉเจนเจพเจกเฉ เจเฉเจฒ เจเจฟเฉฑเจชเจฃเฉเจเจ เจ เจคเฉ เจธเฉเจเจพเจ เจนเฉเจฃเจเฉ, เจฎเฉเจจเฉเฉฐ เจธเฉเจฃ เจเฉ เจเฉเจธเจผเฉ เจนเฉเจตเฉเจเฉ.
เจคเฉเจนเจพเจกเฉ เจงเจฟเจเจจ เจฒเจ เจงเฉฐเจจเจตเจพเจฆ!
เจธเจฐเฉเจค: www.habr.com