เชถเซเชญ เชฆเชฟเชตเชธ!
เช เชฒเซเชเชฎเชพเช เชนเซเช เชคเชฎเชจเซ เชเชฃเชพเชตเชตเชพ เชฎเชพเชเชเซ เชเซเช เชเซ เชฎเซเช เชเซเชตเซ เชฐเซเชคเซ เช
เชฎเชฒ เชเชฐเซเชฏเซ (
เชเชจเซเชเซเชถเชจเชจเซ เชธเซเชฅเชพเชชเชจเชพเชฎเชพเช เชเชฃเชพ เชชเชเชฒเชพเชเช เชถเชพเชฎเซเชฒ เชเซ:
- เชจเซเชก เชถเชฐเซ เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซเช เช เชจเซ เชฐเซเชฎเซเช เชจเซเชก เชคเซเชฏเชพเชฐ เชฅเชตเชพเชจเซ เชฐเชพเชน เชเซเช เชฐเชนเซเชฏเชพ เชเซเช;
- เชฌเชพเชนเซเชฏ 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
เชเชฒเซ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชจเชพเชฎ, เชชเชพเชธเชตเชฐเซเชก ะธ เชซเซเชฒเซเชกเชฐ เชฌเชเชจเซ เชฌเชพเชเซเช เชธเชฎเชพเชจ เชนเซเชตเซเช เชเซเชเช, เชชเชฐเชเชคเซ เชเซเช - เช เชฒเช, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ: 10.0.0.1 เช เชจเซ 10.0.0.2. เชจเซเชกเซเชธ เชชเชฐเชจเซ เชธเชฎเชฏ เชธเชฟเชเชเซเชฐเชจเชพเชเช เชนเซเชตเซ เชเชตเชถเซเชฏเช เชเซ. เชคเชฎเซ เช เชฐเซเชคเซ เชธเซเชเซเชฐเชฟเชชเซเช เชเชฒเชพเชตเซ เชถเชเซ เชเซ:
nohup script.sh &
เชนเซเช เชคเชฎเชพเชฐเซเช เชงเซเชฏเชพเชจ เช เชนเชเซเชเชค เชคเชฐเชซ เชฆเซเชฐเชตเชพ เชฎเชพเชเชเซ เชเซเช เชเซ IPIP เชเชจเชฒ เชเซเชฐเชพเชซเชฟเช เชเชจเซเชเซเชฐเชฟเชชเซเชเซเชก เชจเชฅเซ เชคเซ เชนเชเซเชเชคเชจเชพ เชฆเซเชทเซเชเชฟเชเซเชฃเชฅเซ เช
เชธเซเชฐเชเซเชทเชฟเชค เชเซ, เชชเชฐเชเชคเซ IPsec เชเชตเชฐเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เช เชธเชฐเชณเชคเชพเชฅเซ เชเชเซเชฒเซ เชถเชเชพเชฏ เชเซ.
เชนเซเช เช เชธเซเชเซเชฐเชฟเชชเซเชเชจเซ เชเชชเชฏเซเช เชเชฃเชพ เช เช เชตเชพเชกเชฟเชฏเชพเชฅเซ เชตเชฐเซเช เชชเซเชธเซ เชธเชพเชฅเซ เชเชจเซเชเซเช เชเชฐเชตเชพ เชฎเชพเชเซ เชเชฐเซ เชฐเชนเซเชฏเซ เชเซเช เช เชจเซ เชฎเชจเซ เชเซเช เชธเชฎเชธเซเชฏเชพ เชเซเชตเชพ เชฎเชณเซ เชจเชฅเซ. เชคเซเชจเซ เชธเซเช เชเชฐเชตเชพ เช เชจเซ เชญเซเชฒเซ เชเชตเชพเชจเซ เชฆเซเชฐเชทเซเชเชฟเช เช เชจเซเชเซเชณ.
เชเชฆเชพเช เชคเชฎเชพเชฐเซ เชชเชพเชธเซ เชเชฟเชชเซเชชเชฃเซเช เช เชจเซ เชธเซเชเชจเซ เชนเชถเซ, เชฎเชจเซ เชธเชพเชเชญเชณเชตเชพเชฎเชพเช เชเชจเชเชฆ เชฅเชถเซ.
เชคเชฎเชพเชฐเซเช เชงเซเชฏเชพเชจ เชฌเชฆเชฒ เชเชญเชพเชฐ!
เชธเซเชฐเซเชธ: www.habr.com