ืืืืจ ืขื ืืื ืืฆืืืชื ืืืคืขืื ืฉืจืช VPN ืืืืืจื ื-NAT ืฉื ืืกืคืง ืืืืชื ืฉืื (ืืื ืืชืืืช IP ืืื ื). ืชื ืื ืืขืฉืืช ืืืื ื ืืื: ืื ืืืืฆืืขืื ืฉื ืืืฉืื ืื ืชืืืืื ืืฉืืจืืช ืืกืื ื-NAT ืืืฉืืฉ ืืช ืืกืคืง ืฉืื, ืืื ืื ืื ืชื.
ืื, ืืืืชื ืฆืจืื ืืืชืืืจ ืืืกืืืจืืคืื ืื ืืจืืืื ืฉืื ืืืืฉื ืืืืชื ืฉืื, ืฉื ื ืืืืฉืืจืื ืืืืืจืื ืืืื ืืจื ื ืืจื NAT ืฉื ืกืคืง, ืื ืืกืฃ ืืืืฉื ืืืืืจ ืืจื ื ืชื ืืืชื, ืฉืื ืืื ืืืืืจ ืืืืืืจื NAT.
ืืชืืื ืืช ืืงืืืกืืช ืืืืฆืขืืช VPS/VDS ืืืฉืืจ ืขื ืืชืืืช IP ืืื ื, ืืื ืื ืืฉืืจืช ืืชืืืช IP ืืื ื ืืกืคืง, ืื ื ืฉืงืื ืืืื ืกืืืืช.
ืืงืืช ืืืฉืืื
$ stun stun.sipnet.ru
ืงืืื ืืช ืืชืืฆืื:
ืืจืกืช ืืงืื STUN 0.97
ืจืืฉื: ืืืคืื ืขืฆืืื, ืืกื ื ืขืฆืืื, ืืฆืืื ืืงืจืืืช, ืืกืืืจ ืจืืฉ
ืขืจื ืืืืจื ืืื 0x000002
ืชืจืืื ืืืืืื:
ืืืคืื ืขืฆืืื - ืืืคืื ืขืฆืืื
Independent Filter - ืคืืืืจ ืขืฆืืื
ืืฆืืื ืืงืจืืืช - ืืฆืืื ืืงืจืืืช
ืืืื ืกืืืช ืจืืฉ - ืชืืื ืกืืืช ืจืืฉ
ืืคืขืืช ืคืงืืื ืืืื ืืืืฉื ืฉืื, ืงืืืืชื:
ืืจืกืช ืืงืื STUN 0.97
ืจืืฉื: ืืืคืื ืขืฆืืื, ืืกื ื ืชืืื ืืฆืืืืช, ืืฆืืื ืืงืจืืืช, ืืกืืืจ ืจืืฉ
ืขืจื ืืืืจื ืืื 0x000006
ืืกื ื ืชืืื ืืฆืืื - ืืกื ื ืชืืื ืืฆืืื
ืืืืื ืืชืืฆืืืช ืคืื ืืคืงืืื ืืฆืืืข ืขื ืื ืฉืื ืชื ืืืืชื ืชืืจื "ืืช ืชืจืืืชื" ืืชืืืื ืืขืืจืช ืื ืืช ืืืืื ืืจื ื; ืืืืจ ืืชืืื ืืื ืฉืืขืช ืืืฆืืข ืืคืงืืื ืืืืฉื:
stun stun.sipnet.ru -p 11111 -v
ืงืืืืชื ืืช ืืชืืฆืื:
...
MappedAddress = XX.1XX.1X4.2XX:4398
...
ืืจืืข ืื, ืืคืขืืช UDP ื ืคืชืื ืืืื ืื, ืื ืืจืืข ืื ืืชื ืฉืืื ืืงืฉืช UDP (ืืืืืื: netcat XX.1XX.1X4.2XX 4398 -u), ืื ืืืงืฉื ืืืืขื ืื ืชื ืืืืชื, ืฉืืื ืืืฉืจ ืขื ืืื TCPDump ืฉืจืฅ ืขืืื, ืื ืืืงืฉื ืื ืืืืขื ืืืืฉื - IPtables, ืืืชืจืื NAT ืขื ืื ืชื, ืืคืื ืืืชื.
ืืื ืขืฆื ืืขืืืื ืฉืืงืฉืช ื-UDP ืขืืจื ืืจื ื-NAT ืฉื ืืกืคืง ื ืชื ื ืชืงืืื ืืืฆืืื. ืืืืืื ืฉืื ืชื ืืืืงื ืืชืืื ืืฉืืคืื ืฉืื, ืคืชืจืชื ืืช ืืืขืื ืขื ืืื ืืคื ืืืช ืืฆืืืช UDP/11111 ืืืืฉื:
iptables -t nat -A PREROUTING -i eth1 -p udp -d 10.1XX.2XX.XXX --dport 11111 -j DNAT --to-destination 192.168.X.XXX
ืื, ืืฆืืืชื ืืืืื ืกืฉื UDP ืืืงืื ืืงืฉืืช ืืืืื ืืจื ื ืืื ืืชืืืช IP. ืืจืืข ืื, ืคืชืืชื ืฉืจืช OpenVPN (ืืืืจ ืฉืืืืจืชื ืืืชื ืืขืืจ) ืืืืื ืืืฆืืืช UDP/11111, ืฆืืื ืชื ืืช ืืชืืืช ื-IP ืืืืฆืื ืืช ืืืืฆืืื (XX.1XX.1X4.2XX:4398) ืืกืืืจืืคืื ืืืชืืืจืชื ืืืฆืืื ืืืกืืืจืืคืื ื ืืืืฉื. ืืื ืืืืฉืื ืื ื ืืฆืจื ืืขืื: ืืื ืฆืืจื ืืืืฉืื ืืฉืืืจ ืขื ืกืฉื UDP ืขื ืฉืืงืื OpenVPN ืืชืืืจ ืืฉืจืช; ืื ืืืืชื ืืช ืืืคืฉืจืืช ืืืคืขืื ืืช ืืงืื STUN ืืขืช ืืขืช - ืื ืจืฆืืชื ืืืืื ืืช ืืขืืืก ืขื ืฉืจืชื STUN.
ืฉืืชื ืื ืื ืืขืจื "
ืกืืืช ืฉืืขืจ ืืืคืฉืจืช ืืืืื ื ืืืช ืืจืฉืช ืืงืืืืช ืืืืืจื NAT โโืืืฉืช ืืืืื ื ืืืจืช ืืืืชื ืจืฉืช ืืืชืืืช ืืืืฆืื ืืช ืฉื ืื ืชื.
ืืชืืฆืื ืืื, ืคืฉืื ืคืชืจืชื ืืช ืืืขืื ืฉื ืฉืืืจื ืขื ืกืฉื UDP โ ืืคืขืืชื ืืช ืืืงืื ืืืืชื ืืืฉื ืขื ืืฉืจืช.
ืื ืขืื ืืื:
- ืืฉืืงื ืืช ืืงืื STUN ืืืฆืืื ืืงืืืืช 11111
- ืงืืืื ืชืืืื ืขื ืืชืืืช IP ืืืฆืื ืืช ืืืฆืืื XX.1XX.1X4.2XX:4398
- ืฉืื ื ืชืื ืื ืขื ืืชืืืช IP ืืืฆืื ืืช ืืืฆืืื ืืืืื (ืื ืฉืืจืืช ืืืจ ืืคืฉืจื) ืืืืืืจืื ืืกืืืจืืคืื
- ืืฉืืงื ืืช ืฉืจืช OpenVPN ืืืืฉื ืฉืืืืื ืืืฆืืืช UDP/11111
- ืืคืขืื ืืช ืืงืื OpenVPN ืืืืฉื ืืืฆืืื XX.1XX.1X4.2XX:4398 ืืืืืืจ
- ืืื ืขืช ืืคืขืื ืืช ืืงืื OpenVPN ืืกืืืจืืคืื ืืืฆืืื ืืช ืืชืืืช ื-IP ืืืืฆืืื (ืืืงืจื ืฉืื ืืชืืืช ื-IP ืื ืืฉืชื ืชื) ืืื ืืืชืืืจ
ืื ืืฆืืืชื ืืืชืืืจ ืืืืฉื ืืืกืืืจืืคืื ืฉืื. ืืืฉืื ืื ืืืคืฉืจ ืื ืืืืจ ืื ืืงืื OpenVPN.
ืขืืกืืง
ืืืื ืขืืื:
# apt install openvpn stun-client sendemail
ืืืืจ ืฉืืชืื ื ืืื ืกืงืจืืคืืื, ืืื ืงืืืฆื ืชืฆืืจื ืืืฆืจื ื ืืช ืืืืฉืืจืื ืืืจืืฉืื (ืืืืืื ืฉืืืงืื ืืกืืืจืืคืื ืขืืื ืจืง ืขื ืืืฉืืจืื), ืงืืืื ื ืืช ืืืืืขื ืืจืืืื ืฉื ืฉืจืช OpenVPN.
ืกืงืจืืคื ืจืืฉื ืืืืฉื
# cat vpn11.sh
#!/bin/bash
until [[ -n "$iftosrv" ]]; do echo "$(date) ะะฟัะตะดะตะปัั ัะตัะตะฒะพะน ะธะฝัะตััะตะนั"; iftosrv=`ip route get 8.8.8.8 | head -n 1 | sed 's|.*dev ||' | awk '{print $1}'`; sleep 5; done
ABSOLUTE_FILENAME=`readlink -f "$0"`
DIR=`dirname "$ABSOLUTE_FILENAME"`
localport=11111
until [[ $a ]]; do
address=`stun stun.sipnet.ru -v -p $localport 2>&1 | grep "MappedAddress" | sort | uniq | head -n 1 | sed 's/:/ /g' | awk '{print $3" "$4}'`
ip=`echo "$address" | awk {'print $1'}`
port=`echo "$address" | awk {'print $2'}`
srv="openvpn --config $DIR/server.conf --port $localport --daemon"
$srv
echo "$(date) ะกะตัะฒะตั ะทะฐะฟััะตะฝ ั ะฒะฝะตัะฝะธะผ ะฐะดัะตัะพะผ $ip:$port"
$DIR/sendemail.sh "OpenVPN-Server" "$ip:$port"
sleep 1
openvpn --config $DIR/client.conf --remote $ip --port $port
echo "$(date) Cะพะตะดะธะฝะตะฝะธะต ะบะปะธะตะฝัะฐ ั ัะตัะฒะตัะพะผ ัะฐะทะพัะฒะฐะฝะพ"
for i in `ps xa | grep "$srv" | grep -v grep | awk '{print $1}'`; do
kill $i && echo "$(date) ะะฐะฒะตััะตะฝ ะฟัะพัะตัั ัะตัะฒะตัะฐ $i ($srv)"
done
echo "ะะดั 15 ัะตะบ"
sleep 15
done
ืกืงืจืืคื ืืฉืืืืช ื ืชืื ืื ืืืื"ื:
# cat sendemail.sh
#!/bin/bash
from="ะั ะบะพะณะพ"
pass="ะะฐัะพะปั"
to="ะะพะผั"
theme="$1"
message="$2"
server="smtp.yandex.ru:587"
sendEmail -o tls=yes -f "$from" -t "$to" -s "$server" -xu "$from" -xp "$pass" -u "$theme" -m "$message"
ืงืืืฅ ืชืฆืืจืช ืืฉืจืช:
# cat server.conf
proto udp
dev tun
ca /home/vpn11-srv/ca.crt
cert /home/vpn11-srv/server.crt
key /home/vpn11-srv/server.key
dh /home/vpn11-srv/dh2048.pem
server 10.2.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
tls-server
tls-auth /home/vpn11-srv/ta.key 0
tls-timeout 60
auth SHA256
cipher AES-256-CBC
client-to-client
keepalive 10 30
comp-lzo
max-clients 10
user nobody
group nogroup
persist-key
persist-tun
log /var/log/vpn11-server.log
verb 3
mute 20
ืงืืืฅ ืชืฆืืจืช ืืืงืื:
# cat client.conf
client
dev tun
proto udp
ca "/home/vpn11-srv/ca.crt"
cert "/home/vpn11-srv/client1.crt"
key "/home/vpn11-srv/client1.key"
tls-client
tls-auth "/home/vpn11-srv/ta.key" 1
auth SHA256
cipher AES-256-CBC
auth-nocache
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
log /var/log/vpn11-clent.log
verb 3
mute 20
ping 10
ping-exit 30
ืืืฉืืจืื ื ืืฆืจื ืืืืฆืขืืช
ืืคืขืืช ืืกืงืจืืคื:
# ./vpn11.sh
ืขื ืืื ืืคืืืชื ืื ืืชื ืืืจืฆื ืชืืืื
# chmod +x vpn11.sh
ืืฆื ืืกืืืจืืคืื
ืขื ืืื ืืชืงื ืช ืืืคืืืงืฆืื OpenVPN ืขืืืจ ืื ืืจืืืืืืืืจ ืืขืชืงืช ืงืืืฅ ืืชืฆืืจื, ืืืืฉืืจืื ืืืืืจืชื, ืื ืืชืืจืจ ืื:
ืื ื ืืืืง ืืช ืืืืื ืฉืื ืืกืืืจืืคืื
ืื ื ืขืืจื ืืช ืืกืคืจ ืืืฆืืื ืืืืืจืืช
ืื ื ืืคืขืื ืืช ืืืงืื ืืืชืืืจ
ืืืื ืืชืืืช ืืืืจ ืื, ืืขืืจืชื ืืช ืืชืฆืืจื ืืืืืฉื ืฉืื ื-Raspberry Pi 3 ืื ืืกืืชื ืืืจืืฅ ืืช ืื ืืขื ืืื ืขื ืืืื LTE, ืืื ืื ืื ืขืื! ืชืืฆืืช ืคืงืืื
# stun stun.ekiga.net -p 11111
ืืจืกืช ืืงืื STUN 0.97
ืจืืฉื: ืืืคืื ืขืฆืืื, ืืกื ื ืชืืื ืืฆืืืืช, ืืฆืืื ืืงืจืืืช, ืืกืืืจ ืจืืฉ
ืขืจื ืืืืจื ืืื 0x000006
ะทะฝะฐัะตะฝะธะต ืืกื ื ืชืืื ืืฆืืื ืื ืืคืฉืจ ืืืขืจืืช ืืืชืืื.
ืืื ืืกืคืง ืืืืชื ืืคืฉืจ ืืืขืจืืช ืืืชืืื ื-Raspberry Pi 3 ืืื ืืขืืืช.
ืืฉืืืื ืขื ืืฆืืืช ืืื ืืจื ื, ืขื VLC ืขืืืจ
ืืฆืืจืช ืืจื RTSP ืืืฆืืืช ืืื ืืจื ื
$ cvlc v4l2:///dev/video0:chroma=h264 :input-slave=alsa://hw:1,0 --sout '#transcode{vcodec=x264,venc=x264{preset=ultrafast,profile=baseline,level=31},vb=2048,fps=12,scale=1,acodec=mpga,ab=128,channels=2,samplerate=44100,scodec=none}:rtp{sdp=rtsp://10.2.0.1:8554/}' --no-sout-all --sout-keep
ื-VLC ืืกืืืจืืคืื ืืฆืคืืื (ืืจื rtsp://10.2.0.1:8554/), ืืชืืจืจ ืฉืื ืืขืจืืช ืืขืงื ืืืืื ืืจืืืง ืืืื, ื ืืชื ืื ืืืชืงืื Samba, ืื ืชื ืชืขืืืจื ืืจื VPN, ืืฉืืื ืืจืืืง ืืืืฉื ืืขืื ืืจืื ืืืชืจ...
ืคืื
ืืคื ืฉืืจืื ืืคืืขื, ืืื ืืืจืื ืฉืจืช VPN, ืืชื ืืืื ืืืกืชืืจ ืืื ืืชืืืช IP ืืืฆืื ืืช ืฉืขืืืจื ืืชื ืฆืจืื ืืฉืื, ืืืืืง ืืื ืขืืืจ VPS/VDS ืฉืืืจ. ืืื ืืื ืชืืื ืืกืคืง. ืืืืื, ืจืฆืืชื ืืงืื ืืืืข ื ืืกืฃ ืขื ืืกืคืงืื ืืืกืืืื ืืฉืื ืื ืฉื NATs ืืฉืืืืฉ, ืืื ืื ืจืง ืืืชืืื...
ืชืืื ืื!
ืืงืืจ: www.habr.com