Ke holo nei i kahi kikowaena VPN ma hope o ka NAT o ka mea hoʻolako

He ʻatikala e pili ana i kaʻu hoʻokele ʻana i kahi kikowaena VPN ma hope o ka NAT o kaʻu mea hoʻolako home (me ka ʻole o kahi IP IP keʻokeʻo). E ʻae mai iaʻu e hoʻopaʻa koke: kēlā ʻO ka hana o kēia hoʻokō e pili pono ana i ke ʻano o NAT i hoʻohana ʻia e kāu mea hoʻolako, a me ke alalai.
No laila, pono iaʻu e hoʻopili mai kaʻu kelepona Android i kaʻu kamepiula home, pili nā mea ʻelua i ka Pūnaewele ma o ka mea hoʻolako NATs, a pili pū ke kamepiula ma o kahi router home, ʻo ia hoʻi nā pilina NAT.
ʻO ka hoʻolālā maʻamau e hoʻohana ana i kahi VPS / VDS hoʻolimalima me kahi IP IP keʻokeʻo, a me ka hoʻolimalima ʻana i kahi leka uila IP keʻokeʻo mai kahi mea hoʻolako, ʻaʻole i noʻonoʻo ʻia no nā kumu he nui.
E noʻonoʻo ana ʻike mai nā ʻatikala i hala, i ka hana ʻana i kekahi mau hoʻokolohua me STUN a me NAT o nā mea hoʻolako. Ua hoʻoholo wau e hana i kahi hoʻokolohua liʻiliʻi ma o ka holo ʻana i ke kauoha ma kahi alalai home e holo ana i ka firmware OpenWRT:

$ stun stun.sipnet.ru

loaʻa ka hopena:

ʻO ka mana o ka mea kūʻai aku STUN 0.97
Primary: Kūʻokoʻa palapala ʻāina, Kūʻokoʻa kānana, ʻawaʻawaʻawaʻawa, e lauoho lauoho
ʻO ka waiwai hoʻihoʻi 0x000002

Unuhi huaʻōlelo:
Palapala Kūʻokoʻa - ka palapala ʻāina kūʻokoʻa
Kānana Kūʻokoʻa - kānana kūʻokoʻa
awa kūʻokoʻa - random port
will hairpin - there will be a hairpin
Ke holo nei i kahi kauoha like ma kaʻu PC, loaʻa iaʻu:

ʻO ka mana o ka mea kūʻai aku STUN 0.97
Māmā: Hoʻopaʻa palapala kūʻokoʻa, kānana Port Dependent, port random, will hairpin
ʻO ka waiwai hoʻihoʻi 0x000006

Kānana Pili Pili ʻAwa - kānana hilinaʻi awa
ʻO ka ʻokoʻa o nā hopena o ka hopena kauoha i hōʻike ʻia e hana ana ka mea hoʻokele home i "kona hāʻawi" i ke kaʻina o ka hoʻouna ʻana i nā paʻi mai ka Pūnaewele; ua hōʻike ʻia kēia i ka wā e hoʻokō ai i ke kauoha ma ke kamepiula:

stun stun.sipnet.ru -p 11111 -v

Ua loaʻa iaʻu ka hopena:

...
MappedAddress = XX.1XX.1X4.2XX:4398
...

i kēia manawa, ua wehe ʻia kahi hālāwai UDP no kekahi manawa, inā i kēia manawa e hoʻouna ʻoe i kahi noi UDP (e laʻa: netcat XX.1XX.1X4.2XX 4398 -u), a laila hele mai ka noi i ka mea hoʻokele home, ʻo ia ka hōʻoia ʻia e TCPDump e holo ana ma luna o ia, akā ʻaʻole i hiki ke noi i ke kamepiula - IPtables, e like me ka unuhi ʻōlelo NAT ma ke alalai, hāʻule ia.
Ke holo nei i kahi kikowaena VPN ma hope o ka NAT o ka mea hoʻolako
Akā ʻo ka ʻoiaʻiʻo o ka noi UDP i hala ma ka NAT o ka mea hāʻawi i hāʻawi i ka manaolana no ka kūleʻa. No ka mea aia ka mea alalai ma ko'u mana, ua hoopau au i ka pilikia ma ka hoohuli ana i ke awa UDP/11111 i ke kamepiula:

iptables -t nat -A PREROUTING -i eth1 -p udp -d 10.1XX.2XX.XXX --dport 11111 -j DNAT --to-destination 192.168.X.XXX

No laila, ua hiki iaʻu ke hoʻomaka i kahi kau UDP a loaʻa nā noi mai ka Pūnaewele mai kekahi helu IP. I kēia manawa, ua hoʻomaka wau i ka OpenVPN-server (ua hoʻonohonoho mua ʻia) e hoʻolohe ana i ke awa UDP/11111, hōʻike i ka helu IP waho a me ke awa (XX.1XX.1X4.2XX:4398) ma ke kelepona a hoʻopili maikaʻi ʻia mai ke kelepona i ke kamepiula. Akā i kēia hoʻokō ʻana ua kū mai kahi pilikia: pono ia e mālama i ka hālāwai UDP a hiki i ka mea kūʻai aku OpenVPN pili i ke kikowaena; ʻAʻole wau makemake i ke koho o ka hoʻokuʻu ʻana i ka mea kūʻai aku STUN i kēlā me kēia manawa - ʻaʻole wau makemake e hoʻopau i ka ukana. nā kikowaena STUN.
Ua ʻike pū wau i ke komo ʻana "will hairpin - there will be a hairpin", keia ano

Hiki i ka lauoho lauoho ke komo i kekahi mīkini ma kahi pūnaewele kūloko ma hope o kahi NAT e komo i kahi mīkini ʻē aʻe ma ka pūnaewele hoʻokahi ma ka helu waho o ka mea alalai.

Ke holo nei i kahi kikowaena VPN ma hope o ka NAT o ka mea hoʻolako
ʻO ka hopena, ua hoʻoponopono wale au i ka pilikia o ka mālama ʻana i kahi kau UDP - ua hoʻomaka wau i ka mea kūʻai aku ma ka kamepiula like me ka server.
Ua hana penei:

  • hoʻokuʻu i ka mea kūʻai aku STUN ma ke awa kūloko 11111
  • ua loaʻa ka pane me ka helu IP waho a me ke awa XX.1XX.1X4.2XX:4398
  • hoʻouna i ka ʻikepili me kahi IP IP waho a me ke awa i ka leka uila (hiki i kekahi lawelawe ʻē aʻe) i hoʻonohonoho ʻia ma ke kelepona
  • hoʻokuʻu i ka kikowaena OpenVPN ma kahi kamepiula e hoʻolohe ana i ke awa UDP/11111
  • hoʻokuʻu i ka mea kūʻai OpenVPN ma ke kamepiula e kuhikuhi ana i ka XX.1XX.1X4.2XX:4398 no ka pilina
  • i kēlā me kēia manawa i hoʻokuʻu i ka mea kūʻai OpenVPN ma ke kelepona e hōʻike ana i ka helu IP a me ke awa (i koʻu hihia ʻaʻole i loli ka IP address) e hoʻopili

Ke holo nei i kahi kikowaena VPN ma hope o ka NAT o ka mea hoʻolako
Ma kēia ala ua hiki iaʻu ke hoʻohui i kaʻu kamepiula mai kaʻu kelepona. Hāʻawi kēia hoʻokō iā ʻoe e hoʻopili i kekahi mea kūʻai OpenVPN.

E aʻo

E lawe ia:

# apt install openvpn stun-client sendemail

Ke kākau nei i ʻelua mau palapala, ʻelua mau faila hoʻonohonoho, a hoʻokumu i nā palapala e pono ai (no ka mea, hana wale ka mea kūʻai aku ma ke kelepona me nā palapala hōʻoia), ua loaʻa iā mākou ka hoʻokō maʻamau o kahi kikowaena OpenVPN.

Palapala nui ma ke kamepiula

# 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

Palapala no ka hoʻouna ʻana i ka ʻikepili ma ka leka uila:

# 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"

waihona hoʻonohonoho kikowaena:

# 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

faila hoʻonohonoho mea kūʻai:

# 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

Ua hana ʻia nā palapala hōʻoia me ka hoʻohana ʻana kēiaʻatikala.
Ke holo nei i ka palapala:

# ./vpn11.sh

Ma ka hana mua ʻana i hiki ke hoʻokō

# chmod +x vpn11.sh

Ma ka ʻaoʻao kelepona

Ma ke kau ʻana i ka palapala noi OpenVPN no ka Android, i ke kope ʻana i ka faila hoʻonohonoho, nā palapala hōʻoia a hoʻonohonoho ʻia, ua like kēia:
Nānā wau i kaʻu leka uila ma kaʻu keleponaKe holo nei i kahi kikowaena VPN ma hope o ka NAT o ka mea hoʻolako
Hoʻoponopono wau i ka helu port ma nā hoʻonohonohoKe holo nei i kahi kikowaena VPN ma hope o ka NAT o ka mea hoʻolako
Hoʻomaka wau i ka mea kūʻai aku a hoʻohuiKe holo nei i kahi kikowaena VPN ma hope o ka NAT o ka mea hoʻolako

ʻOiai e kākau ana i kēia ʻatikala, ua hoʻololi au i ka hoʻonohonoho ʻana mai kaʻu kamepiula i ka Raspberry Pi 3 a hoʻāʻo e holo i ka mea holoʻokoʻa ma kahi modem LTE, akā ʻaʻole i hana! Ka hopena kauoha

# stun stun.ekiga.net -p 11111

ʻO ka mana o ka mea kūʻai aku STUN 0.97
Māmā: Hoʻopaʻa palapala kūʻokoʻa, kānana Port Dependent, port random, will hairpin
ʻO ka waiwai hoʻihoʻi 0x000006

ʻo keʻano Kānana Pili i ke awa ʻaʻole i ʻae i ka ʻōnaehana e hoʻomaka.
Akā ua ʻae ka mea hoʻolako home i ka ʻōnaehana e hoʻomaka ma ka Raspberry Pi 3 me ka pilikia ʻole.
I ka hui pū ʻana me kahi webcam, me VLC no
ka hana ʻana i kahi kahawai RTSP mai kahi webcam

$ 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

a me VLC ma ke kelepona no ka nānā ʻana (stream rtsp://10.2.0.1:8554/), ua lilo ia i ʻōnaehana nānā wikiō mamao maikaʻi, hiki iā ʻoe ke hoʻokomo iā Samba, ke ala hele ma o VPN, kaohi mamao i kāu kamepiula a me ka nui. hou...

hopena

E like me ka hana i hōʻike ʻia, e hoʻonohonoho i kahi kikowaena VPN, hiki iā ʻoe ke hana me ka ʻole o kahi IP IP waho āu e pono ai e uku, e like me ka VPS / VDS hoʻolimalima. Akā, pili nā mea a pau i ka mea hoʻolako. ʻOiaʻiʻo, makemake wau e loaʻa i ka ʻike hou aʻe e pili ana i nā mea hoʻolako like ʻole a me nā ʻano NAT i hoʻohana ʻia, akā ʻo ka hoʻomaka wale nō kēia...
Nā mea hou aku!

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka