āĻĻāĻŋāĻ¨ āĻāĻžāĻ˛ āĻ¸āĻŽāĻ¯āĻŧ!
āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§ āĻāĻŽāĻŋ āĻāĻĒāĻ¨āĻžāĻā§ āĻŦāĻ˛āĻ¤ā§ āĻāĻžāĻ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻŽāĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻ°ā§āĻāĻŋ (
āĻāĻāĻāĻŋ āĻ¸āĻāĻ¯ā§āĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ā§ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻ§āĻžāĻĒ āĻ°āĻ¯āĻŧā§āĻā§:
- āĻāĻāĻāĻŋ āĻ¨ā§āĻĄ āĻļā§āĻ°ā§ āĻāĻ°āĻž āĻāĻŦāĻ āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¨ā§āĻĄ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻšāĻāĻ¯āĻŧāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻĒā§āĻā§āĻˇāĻž āĻāĻ°āĻž;
- āĻŦāĻžāĻšā§āĻ¯āĻŋāĻ IP āĻ āĻŋāĻāĻžāĻ¨āĻž āĻāĻŦāĻ UDP āĻĒā§āĻ°ā§āĻ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ;
- āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻšā§āĻ¸ā§āĻā§ āĻāĻāĻāĻŋ āĻŦāĻšāĻŋāĻ°āĻžāĻāĻ¤ IP āĻ āĻŋāĻāĻžāĻ¨āĻž āĻāĻŦāĻ UDP āĻĒā§āĻ°ā§āĻ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻž;
- āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻšā§āĻ¸ā§āĻ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻŦāĻšāĻŋāĻ°āĻžāĻāĻ¤ āĻāĻāĻĒāĻŋ āĻ āĻŋāĻāĻžāĻ¨āĻž āĻāĻŦāĻ UDP āĻĒā§āĻ°ā§āĻ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻāĻ°āĻž;
- āĻāĻāĻāĻŋ āĻāĻāĻĒāĻŋāĻāĻāĻĒāĻŋ āĻāĻžāĻ¨ā§āĻ˛ā§āĻ° āĻ¸āĻāĻāĻ āĻ¨;
- āĻ¸āĻāĻ¯ā§āĻ āĻĒāĻ°ā§āĻ¯āĻŦā§āĻā§āĻˇāĻŖ;
- āĻ¸āĻāĻ¯ā§āĻ āĻšāĻžāĻ°āĻŋāĻ¯āĻŧā§ āĻā§āĻ˛ā§, 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
āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻ¸āĻš āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¨ā§āĻĄ āĻāĻžāĻ¨ā§āĻ˛ā§āĻ° āĻ āĻā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§āĻŖ āĻāĻāĻĒāĻŋ āĻ āĻŋāĻāĻžāĻ¨āĻžāĻāĻŋ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧāĻā§āĻ°āĻŽā§ āĻĒāĻŋāĻ āĻāĻ°ā§ āĻāĻžāĻ¨ā§āĻ˛ā§āĻ° āĻ āĻŦāĻ¸ā§āĻĨāĻž āĻĒāĻ°ā§āĻ¯āĻŦā§āĻā§āĻˇāĻŖ āĻāĻ°āĻž āĻšāĻ¯āĻŧ:
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 &
āĻāĻŽāĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻĻā§āĻˇā§āĻāĻŋ āĻāĻāĻ°ā§āĻˇāĻŖ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ āĻ¯ā§ āĻāĻāĻĒāĻŋāĻāĻāĻĒāĻŋ āĻāĻžāĻ¨ā§āĻ˛āĻāĻŋ āĻā§āĻ°ā§āĻ¯āĻžāĻĢāĻŋāĻ āĻāĻ¨āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĻ¨āĻŋ āĻāĻŽāĻ¨ āĻĻā§āĻˇā§āĻāĻŋāĻā§āĻŖ āĻĨā§āĻā§ āĻ
āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻ, āĻ¤āĻŦā§ āĻāĻāĻŋ āĻāĻāĻĒāĻŋāĻ¸ā§āĻ āĻāĻāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¸āĻšāĻā§āĻ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§
āĻāĻŽāĻŋ āĻāĻāĻ¨ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻ āĻ¸āĻĒā§āĻ¤āĻžāĻš āĻ§āĻ°ā§ āĻāĻāĻāĻŋ āĻāĻžāĻā§āĻ° āĻĒāĻŋāĻ¸āĻŋāĻ¤ā§ āĻ¸āĻāĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻāĻ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻāĻŋ āĻāĻŦāĻ āĻā§āĻ¨ā§ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ˛āĻā§āĻˇā§āĻ¯ āĻāĻ°āĻŋāĻ¨āĻŋāĨ¤ āĻāĻāĻŋ āĻ¸ā§āĻ āĻāĻ°āĻž āĻāĻŦāĻ āĻāĻāĻŋ āĻā§āĻ˛ā§ āĻ¯āĻžāĻāĻ¯āĻŧāĻžāĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻāĨ¤
āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻāĻĒāĻ¨āĻžāĻ° āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻāĻŦāĻ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĨāĻžāĻāĻŦā§, āĻāĻŽāĻŋ āĻļā§āĻ¨āĻ¤ā§ āĻā§āĻļāĻŋ āĻšāĻŦāĨ¤
āĻāĻĒāĻ¨āĻžāĻ° āĻŽāĻ¨ā§āĻ¯ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¨āĻžāĻā§ āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ!
āĻāĻ¤ā§āĻ¸: www.habr.com