ืืืืข ืฆืืื ืคืื ืืึธื!
ืืื ืืขื ืึทืจืืืงื ืืื ืืืืื ืฆื ืืึธืื ืืืจ ืืื ืืื ืืืคึผืืึทืืขื ืึทื (
ืคืึทืจืืืืื ืึท ืงืฉืจ ืืืฉืืืื ืคืื ืขืืืขืืข ืกืืขืคึผืก:
- ืกืืึทืจืืื ื ืึท ื ืึธืืข ืืื ืืืืจืื ืคึฟืึทืจ ืื ืืืืึทื ื ืึธืืข ืฆื ืืืื ืืจืืื;
- ืืืืขืจืืึทื ืื ื ืื ืคืื ืืจืืืกื ืืืง IP ืึทืืจืขืก ืืื ืืืคึผ ืคึผืึธืจื;
- ืืจืึทื ืกืคืขืจืื ื ืึท ืคืื ืืจืืืกื ืืืง 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 stun.sipnet.ru -v -p $1 2>&1 | grep "MappedAddress"
ืืึทื ืืึธื ืืืจืื ื ืืื ืืึทืคึฟืขื:
apt install stun-client
ืฆื ืึธืจืืึทื ืืืืจื ืึท ืืื ืขื, ื ืึธืจืืึทื ืึทืก ืืืฉืืจืื ืคืื ืื iproute2 ืคึผืขืงื ืืขื ืขื ืืขื ืืฆื. ืขืงืืืกืืืจื
- ืืึธืื ืื 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