வழங்குநரின் NATக்குப் பின்னால் VPN சேவையகத்தை இயக்குகிறது

நான் எப்படித் தொடங்கினேன் என்பது பற்றிய ஒரு கட்டுரை VPN சேவையகம் ஹோம் வழங்குநரின் NAT-க்குப் பின்னால் (பொது ஐபி முகவரி இல்லாமல்). நான் இதை இப்போதே தெளிவுபடுத்துகிறேன்: இந்த செயலாக்கத்தின் செயல்திறன் நேரடியாக உங்கள் வழங்குநரால் பயன்படுத்தப்படும் NAT வகை மற்றும் திசைவியைப் பொறுத்தது.
எனவே, என்னுடைய இடத்திலிருந்து தொடர்பு கொள்ள வேண்டிய தேவை எனக்கு இருந்தது. Androidஸ்மார்ட்போனிலிருந்து வீட்டுக் கணினிக்கு, இரண்டு சாதனங்களும் சேவை வழங்குநரின் NAT-கள் மூலம் இணையத்துடன் இணைக்கப்பட்டுள்ளன, மேலும் கணினியானது ஒரு வீட்டு ரௌட்டர் வழியாகவும் இணைக்கப்பட்டுள்ளது, அதுவும் இணைப்புகளை NAT செய்கிறது.
வெள்ளை ஐபி முகவரியுடன் குத்தகைக்கு விடப்பட்ட VPS/VDS ஐப் பயன்படுத்தும் கிளாசிக் திட்டம், அத்துடன் வழங்குநரிடமிருந்து வெள்ளை ஐபி முகவரியை வாடகைக்கு எடுப்பது போன்ற பல காரணங்களுக்காக கருதப்படவில்லை.
கணக்கில் எடுத்துக்கொள்வது கடந்த கட்டுரைகளின் அனுபவம், வழங்குநர்களின் STUNகள் மற்றும் NAT களுடன் பல சோதனைகளை நடத்தியது. ஓபன் டபிள்யூஆர்டி ஃபார்ம்வேரில் இயங்கும் ஹோம் ரூட்டரில் கட்டளையை இயக்குவதன் மூலம் ஒரு சிறிய பரிசோதனை செய்ய முடிவு செய்தேன்:

$ 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 மொழிபெயர்ப்பாளராக, அதை கைவிட்டது.
வழங்குநரின் NATக்குப் பின்னால் VPN சேவையகத்தை இயக்குகிறது
ஆனால் 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 முகவரியிலிருந்தும் கோரிக்கைகளைப் பெறும் திறனை எனக்கு அளித்தது. அந்த நிலையில், நான் ஏவினேன். OpenVPNUDP/11111 போர்ட்டில் இயங்கிக்கொண்டிருந்த, முன்பே கட்டமைக்கப்பட்ட சர்வரில், நான் ஸ்மார்ட்போனில் வெளிப்புற IP முகவரி மற்றும் போர்ட்டை (XX.1XX.1X4.2XX:4398) குறிப்பிட்டு, ஸ்மார்ட்போனிலிருந்து கணினியுடன் வெற்றிகரமாக இணைத்தேன். இருப்பினும், இந்தச் செயல்பாட்டில் ஒரு சிக்கல் ஏற்பட்டது: இணைப்பு நிறுவப்படும் வரை நான் எப்படியாவது UDP அமர்வைத் தக்கவைக்க வேண்டியிருந்தது. OpenVPNகிளையன்டிலிருந்து சேவையகத்திற்கு மாற்றும்போது, ​​ஸ்டன் (STUN) கிளையன்டை அவ்வப்போது தொடங்கும் விருப்பம் எனக்குப் பிடிக்கவில்லை - நான் ஸ்டன் சேவையகங்களைத் தேவையில்லாமல் சுமையேற்ற விரும்பவில்லை.
நானும் பதிவை கவனித்தேன்"ஹேர்பின் இருக்கும் - ஒரு ஹேர்பின் இருக்கும்", இந்த முறை

ஹேர்பின்னிங் ஒரு NATக்குப் பின்னால் உள்ள உள்ளூர் நெட்வொர்க்கில் உள்ள ஒரு இயந்திரத்தை ரூட்டரின் வெளிப்புற முகவரியில் அதே நெட்வொர்க்கில் உள்ள மற்றொரு இயந்திரத்தை அணுக அனுமதிக்கிறது.

வழங்குநரின் NATக்குப் பின்னால் VPN சேவையகத்தை இயக்குகிறது
இதன் விளைவாக, யுடிபி அமர்வை பராமரிப்பதில் உள்ள சிக்கலை நான் வெறுமனே தீர்த்தேன் - சேவையகத்துடன் அதே கணினியில் கிளையண்டைத் தொடங்கினேன்.
இது இப்படி வேலை செய்தது:

  • உள்ளூர் போர்ட் 11111 இல் STUN கிளையண்டை அறிமுகப்படுத்தியது
  • வெளிப்புற ஐபி முகவரி மற்றும் போர்ட் XX.1XX.1X4.2XX:4398 உடன் பதில் கிடைத்தது
  • ஸ்மார்ட்போனில் உள்ளமைக்கப்பட்ட மின்னஞ்சலுக்கு வெளிப்புற ஐபி முகவரி மற்றும் போர்ட்டுடன் தரவு அனுப்பப்பட்டது (வேறு எந்த சேவையும் சாத்தியம்).
  • தொடங்கப்பட்டது OpenVPN- UDP/11111 போர்ட்டில் கேட்கும் கணினியில் உள்ள ஒரு சர்வர்
  • தொடங்கப்பட்டது OpenVPNஒரு கணினியில் உள்ள கிளையன்ட், இணைப்புக்காக XX.1XX.1X4.2XX:4398 என்ற முகவரியைக் குறிப்பிடுகிறது.
  • எந்த நேரத்திலும் தொடங்கப்பட்டது OpenVPNஇணைப்பிற்கான IP முகவரி மற்றும் போர்ட்டைக் கொண்ட ஒரு ஸ்மார்ட்போனில் உள்ள கிளையன்ட் (என் விஷயத்தில், IP முகவரி மாறவில்லை).

வழங்குநரின் NATக்குப் பின்னால் VPN சேவையகத்தை இயக்குகிறது
இந்த வழியில், எனது ஸ்மார்ட்போனிலிருந்து என் கணினியுடன் என்னால் இணைய முடிந்தது. இந்தச் செயலாக்கம், யாரையும் இணைக்க உங்களை அனுமதிக்கிறது. 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 செய்ய Android, உள்ளமைவு கோப்பு, சான்றிதழ்களை நகலெடுத்து அதை உள்ளமைத்த பிறகு, இது இப்படி மாறியது:
எனது ஸ்மார்ட்போனில் எனது மின்னஞ்சலைச் சரிபார்க்கிறேன்வழங்குநரின் NATக்குப் பின்னால் VPN சேவையகத்தை இயக்குகிறது
அமைப்புகளில் போர்ட் எண்ணைத் திருத்துகிறேன்வழங்குநரின் NATக்குப் பின்னால் VPN சேவையகத்தை இயக்குகிறது
நான் கிளையண்டை துவக்கி இணைக்கிறேன்வழங்குநரின் NATக்குப் பின்னால் VPN சேவையகத்தை இயக்குகிறது

இந்தக் கட்டுரையை எழுதும் போது, ​​எனது கணினியிலிருந்து Raspberry Pi 3க்கு உள்ளமைவை மாற்றி, LTE மோடமில் முழுவதையும் இயக்க முயற்சித்தேன், ஆனால் அது வேலை செய்யவில்லை! கட்டளை முடிவு

# stun stun.ekiga.net -p 11111

STUN கிளையன்ட் பதிப்பு 0.97
முதன்மை: சுயாதீன மேப்பிங், போர்ட் சார்ந்த வடிகட்டி, ரேண்டம் போர்ட், ஹேர்பின் செய்யும்
வருவாய் மதிப்பு 0x000006

அதாவது போர்ட் சார்ந்த வடிகட்டி அமைப்பை தொடங்க அனுமதிக்கவில்லை.
ஆனால் வீட்டு வழங்குநர் எந்த பிரச்சனையும் இல்லாமல் ராஸ்பெர்ரி பை 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 சர்வரை அமைக்க முடியும். VPS/VDSஆனால், அது அனைத்தும் சேவை வழங்குநரைப் பொறுத்தது. நிச்சயமாக, வெவ்வேறு சேவை வழங்குநர்கள் மற்றும் அவர்கள் பயன்படுத்தும் NAT-களின் வகைகள் பற்றி நான் மேலும் தகவல்களைப் பெற விரும்புகிறேன், ஆனால் இது வெறும் ஆரம்பம் தான்...
உங்கள் கவனத்திற்கு நன்றி!

ஆதாரம்: www.habr.com

DDoS பாதுகாப்பு, VPS VDS சர்வர்கள் கொண்ட தளங்களுக்கு நம்பகமான ஹோஸ்டிங் வாங்கவும் 🔥 DDoS பாதுகாப்புடன் கூடிய நம்பகமான இணையதள ஹோஸ்டிங், VPS, VDS சர்வர்களை வாங்குங்கள் | ProHoster