මගේ නිවසේ සැපයුම්කරුගේ (සුදු IP ලිපිනයක් නොමැතිව) NAT පිටුපස VPN සේවාදායකයක් ධාවනය කිරීමට මා සමත් වූ ආකාරය පිළිබඳ ලිපියක්. මට වහාම වෙන් කරවා ගැනීමට ඉඩ දෙන්න: ඒ මෙම ක්රියාත්මක කිරීමේ ක්රියාකාරිත්වය කෙලින්ම රඳා පවතින්නේ ඔබේ සැපයුම්කරු විසින් භාවිතා කරන NAT වර්ගය මෙන්ම රවුටරය මතය.
එබැවින්, මට මගේ ඇන්ඩ්රොයිඩ් ස්මාර්ට් ජංගම දුරකතනයෙන් මගේ නිවසේ පරිගණකයට සම්බන්ධ වීමට අවශ්ය විය, උපාංග දෙකම NAT සපයන්නා හරහා අන්තර්ජාලයට සම්බන්ධ කර ඇත, තවද පරිගණකය ගෘහස්ථ රවුටරයක් හරහා සම්බන්ධ කර ඇති අතර එය NAT සම්බන්ධතා ද ඇත.
සුදු IP ලිපිනයක් සහිත ලීසිං VPS/VDS භාවිතා කරන සම්භාව්ය යෝජනා ක්රමය මෙන්ම සැපයුම්කරුවෙකුගෙන් සුදු IP ලිපිනයක් කුලියට ගැනීම හේතු කිහිපයක් නිසා සලකා බැලුවේ නැත.
සැලකිල්ලට ගනිමින්
$ stun stun.sipnet.ru
ප්රතිඵලය ලැබුණි:
STUN සේවාදායක අනුවාදය 0.97
මූලික: ස්වාධීන සිතියම්කරණය, ස්වාධීන පෙරහන, සසම්භාවී වරාය, හිසකෙස් සවි කරනු ඇත
ප්රතිලාභ අගය වේ 0x000002
වාචික පරිවර්තනය:
ස්වාධීන සිතියම්කරණය - ස්වාධීන සිතියම්කරණය
ස්වාධීන පෙරහන - ස්වාධීන පෙරහන
අහඹු වරාය - අහඹු වරාය
හිසකෙස් සවි කරනු ඇත - කෙස් කළඹක් ඇත
මගේ පරිගණකයේ සමාන විධානයක් ක්රියාත්මක කරමින්, මට ලැබුණේ:
STUN සේවාදායක අනුවාදය 0.97
මූලික: ස්වාධීන සිතියම්ගත කිරීම, වරාය රඳා පවතින පෙරහන, අහඹු වරාය, හිසකෙස් සවි කරනු ඇත
ප්රතිලාභ අගය වේ 0x000006
වරාය රඳා පවතින පෙරහන - වරාය මත යැපෙන පෙරහන
විධාන ප්රතිදානයේ ප්රතිඵලවල වෙනස පෙන්නුම් කළේ නිවසේ රවුටරය අන්තර්ජාලයෙන් පැකට් සම්ප්රේෂණය කිරීමේ ක්රියාවලියට “එහි දායකත්වය” ලබා දෙන බවයි; පරිගණකයේ විධානය ක්රියාත්මක කිරීමේදී මෙය ප්රකාශ විය:
stun stun.sipnet.ru -p 11111 -v
මම ප්රතිඵලය ලබා ගනිමින් සිටියේ:
...
සිතියම්ගත ලිපිනය = 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 ලිපිනයකින් අන්තර්ජාලයෙන් ඉල්ලීම් ලබා ගැනීමට හැකි විය. මේ මොහොතේ, මම UDP/11111 වරායට සවන් දෙමින් OpenVPN-server දියත් කළෙමි, ස්මාර්ට් ජංගම දුරකතනයේ බාහිර IP ලිපිනය සහ වරාය (XX.1XX.1X4.2XX: 4398) සඳහන් කර ස්මාර්ට් ජංගම දුරකතනයෙන් සාර්ථකව සම්බන්ධ විය. පරිගණකය. නමුත් මෙම ක්රියාත්මක කිරීමේදී ගැටළුවක් මතු විය: OpenVPN සේවාදායකයා සේවාදායකයට සම්බන්ධ වන තෙක් UDP සැසිය කෙසේ හෝ පවත්වා ගැනීම අවශ්ය විය; STUN සේවාදායකයා වරින් වර දියත් කිරීමේ විකල්පයට මම කැමති නැත - මට බර නාස්ති කිරීමට අවශ්ය නොවීය. STUN සේවාදායකයන්.
මම ඇතුල්වීම ද දුටුවෙමි"
Hairpinning මඟින් NAT එකක් පිටුපස ඇති දේශීය ජාලයක එක් යන්ත්රයක් රවුටරයේ බාහිර ලිපිනයෙන් එම ජාලයේ ඇති තවත් යන්ත්රයක් වෙත ප්රවේශ වීමට ඉඩ සලසයි.
ප්රතිඵලයක් වශයෙන්, මම UDP සැසියක් පවත්වාගෙන යාමේ ගැටලුව සරලව විසඳා ගත්තෙමි - මම සේවාදායකයා සමඟ එකම පරිගණකයේ සේවාදායකයා දියත් කළෙමි.
එය මෙසේ ක්රියා කළේය.
- දේශීය වරාය 11111 මත STUN සේවාදායකයා දියත් කළේය
- බාහිර IP ලිපිනයක් සහ වරාය XX.1XX.1X4.2XX:4398 සමඟ ප්රතිචාරයක් ලැබිණි
- ස්මාට් ජංගම දුරකතනයේ වින්යාස කර ඇති ඊමේල් (වෙනත් ඕනෑම සේවාවක් හැකි) වෙත බාහිර IP ලිපිනයක් සහ පෝට් සහිත දත්ත යවා ඇත
- UDP/11111 වරායට සවන් දෙන පරිගණකයක OpenVPN සේවාදායකය දියත් කරන ලදී
- සම්බන්ධතාවය සඳහා XX.1XX.1X4.2XX:4398 සඳහන් කරමින් OpenVPN සේවාලාභියා පරිගණකයේ දියත් කරන ලදී.
- සම්බන්ධ වීමට IP ලිපිනය සහ වරාය (මගේ නඩුවේ IP ලිපිනය වෙනස් වී නැත) සඳහන් කරමින් ඕනෑම වේලාවක OpenVPN සේවාදායකයා ස්මාර්ට් ජංගම දුරකතනයේ දියත් කරන ලදී.
මේ ආකාරයෙන් මගේ ස්මාර්ට් ජංගම දුරකතනයෙන් මගේ පරිගණකයට සම්බන්ධ වීමට මට හැකි විය. මෙම ක්රියාත්මක කිරීම ඔබට ඕනෑම 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
ස්මාර්ට් ෆෝන් පැත්තෙන්
යෙදුම ස්ථාපනය කිරීමෙන් Android සඳහා 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/), එය හොඳ දුරස්ථ වීඩියෝ නිරීක්ෂණ පද්ධතියක් බවට පත් විය, ඔබට සම්බා ස්ථාපනය කළ හැකිය, VPN හරහා මාර්ග තදබදය, දුරස්ථව ඔබේ පරිගණකය පාලනය කළ හැකිය සහ බොහෝ දේ තව...
නිගමනය
ප්රායෝගිකව පෙන්වා දී ඇති පරිදි, VPN සේවාදායකයක් සංවිධානය කිරීම සඳහා, ඔබට ගෙවිය යුතු බාහිර IP ලිපිනයක් නොමැතිව කළ හැකිය, කුලියට ගත් VPS / VDS සඳහා මෙන්. නමුත් ඒ සියල්ල සපයන්නා මත රඳා පවතී. ඇත්ත වශයෙන්ම, මට විවිධ සපයන්නන් සහ භාවිතා කරන NAT වර්ග පිළිබඳ වැඩිදුර තොරතුරු ලබා ගැනීමට අවශ්ය විය, නමුත් මෙය ආරම්භය පමණි...
Спасибо!
මූලාශ්රය: www.habr.com