ProHoster > Blog > Administrazioa > Zuzeneko VPN tunela ordenagailuen artean hornitzailearen NATen bidez (VPS gabe, STUN zerbitzaria eta Yandex.disk erabiliz)
Zuzeneko VPN tunela ordenagailuen artean hornitzailearen NATen bidez (VPS gabe, STUN zerbitzaria eta Yandex.disk erabiliz)
Extension Artikulua NAT hornitzaileen atzean dauden bi ordenagailuen artean VPN zuzeneko tunel bat antolatzea lortu nuen. Aurreko artikuluak hirugarren baten laguntzarekin konexio bat antolatzeko prozesua deskribatu zuen: bitartekari bat (alokatutako VPS bat STUN zerbitzari gisa eta konexiorako nodo datu-igorle gisa jokatzen duena). Artikulu honetan VPSrik gabe nola kudeatu nuen kontatuko dizuet, baina bitartekariak geratu ziren eta STUN zerbitzaria eta Yandex.Disk ziren...
Sarrera
Aurreko mezuko iruzkinak irakurri ondoren, konturatu nintzen inplementazioaren eragozpen nagusia bitartekari baten erabilera zela - hirugarren bat (VPS) nodoaren egungo parametroak, non eta nola konektatu adierazten zituena. STUN hau erabiltzeko gomendioak kontuan hartuta (horietatik asko daude) uneko konexio-parametroak zehazteko. Lehenik eta behin, TCPDump erabiltzea erabaki nuen STUN zerbitzariak bezeroekin lanean ari zenean paketeen edukia aztertzeko eta guztiz irakurtezina den edukia jasotzen zuenean. Topatu dudan protokoloa Googlen aritzea protokoloa deskribatzen duen artikulua. Konturatu nintzen ezin nuela STUN zerbitzarirako eskaera bat inplementatu nire kabuz eta ideia "urrutiko kutxa" batean jarri.
teoria
Duela gutxi STUN zerbitzaria Debian instalatu behar izan nuen paketetik
# apt install stun-server
eta menpekotasunetan stun-client paketea ikusi nuen, baina nolabait ez nion kasurik egin. Baina geroago stun-client paketeaz gogoratu nintzen eta nola funtzionatzen duen jakitea erabaki nuen, Yandex-en Googlen bilatu eta bilatu ondoren lortu nuen:
STUN bezeroaren bertsioa 0.97
21234 ataka ireki da fd 3-rekin
21235 ataka ireki da fd 4-rekin
Stun mezua kodetzea:
Aldaketa eskaera kodetzea: 0
Len 28-ren mezua bidaltzear 216.93.246.18:3478ra
Stun mezua kodetzea:
Aldaketa eskaera kodetzea: 4
Len 28-ren mezua bidaltzear 216.93.246.18:3478ra
Stun mezua kodetzea:
Aldaketa eskaera kodetzea: 2
Len 28-ren mezua bidaltzear 216.93.246.18:3478ra
Jasotako harridura-mezua: 92 byte
MappedAddress = <Nire IP>:2885
Iturburu helbidea = 216.93.246.18:3478
Helbide aldatua = 216.93.246.17:3479
Atributu ezezaguna: 32800
ServerName = Vovida.org 0.98-CPC
257 id=1 motako mezua jaso da
Stun mezua kodetzea:
Aldaketa eskaera kodetzea: 0
Len 28-ren mezua bidaltzear 216.93.246.17:3478ra
Stun mezua kodetzea:
Aldaketa eskaera kodetzea: 4
Len 28-ren mezua bidaltzear 216.93.246.18:3478ra
Stun mezua kodetzea:
Aldaketa eskaera kodetzea: 2
Len 28-ren mezua bidaltzear 216.93.246.18:3478ra
Stun mezua kodetzea:
Aldaketa eskaera kodetzea: 0
len 28 mezua bidaltzear <Nire IP>:2885
Jasotako harridura-mezua: 28 byte
Aldaketa eskaera = 0
1 id=11 motako mezua jaso da
Stun mezua kodetzea:
Aldaketa eskaera kodetzea: 0
Len 28-ren mezua bidaltzear 216.93.246.17:3478ra
Stun mezua kodetzea:
Aldaketa eskaera kodetzea: 4
Len 28-ren mezua bidaltzear 216.93.246.18:3478ra
Stun mezua kodetzea:
Aldaketa eskaera kodetzea: 2
Len 28-ren mezua bidaltzear 216.93.246.18:3478ra
Jasotako harridura-mezua: 92 byte
MappedAddress = <Nire IP>:2885
Iturburu helbidea = 216.93.246.17:3479
Helbide aldatua = 216.93.246.18:3478
Atributu ezezaguna: 32800
ServerName = Vovida.org 0.98-CPC
257 id=10 motako mezua jaso da
Stun mezua kodetzea:
Aldaketa eskaera kodetzea: 4
Len 28-ren mezua bidaltzear 216.93.246.18:3478ra
Stun mezua kodetzea:
Aldaketa eskaera kodetzea: 2
Len 28-ren mezua bidaltzear 216.93.246.18:3478ra
Stun mezua kodetzea:
Aldaketa eskaera kodetzea: 4
Len 28-ren mezua bidaltzear 216.93.246.18:3478ra
Stun mezua kodetzea:
Aldaketa eskaera kodetzea: 2
Len 28-ren mezua bidaltzear 216.93.246.18:3478ra
Stun mezua kodetzea:
Aldaketa eskaera kodetzea: 4
Len 28-ren mezua bidaltzear 216.93.246.18:3478ra
Stun mezua kodetzea:
Aldaketa eskaera kodetzea: 2
Len 28-ren mezua bidaltzear 216.93.246.18:3478ra
Stun mezua kodetzea:
Aldaketa eskaera kodetzea: 4
Len 28-ren mezua bidaltzear 216.93.246.18:3478ra
Stun mezua kodetzea:
Aldaketa eskaera kodetzea: 2
Len 28-ren mezua bidaltzear 216.93.246.18:3478ra
Stun mezua kodetzea:
Aldaketa eskaera kodetzea: 4
Len 28-ren mezua bidaltzear 216.93.246.18:3478ra
Stun mezua kodetzea:
Aldaketa eskaera kodetzea: 2
Len 28-ren mezua bidaltzear 216.93.246.18:3478ra
proba I = 1
proba II = 0
III proba = 0
proba I(2) = 1
nat = 1 da
mapatutako IP berdina = 1
orra = 1
kontserbako ataka = 0
Lehena: mapa independentea, portuen menpeko iragazkia, ausazko ataka, ilea izango da
Itzultzeko balioa 0x000006 da
Baliodun katea
MappedAddress = <Nire IP>:2885
behar duzuna! UDP tokiko 21234 atakan konexioaren uneko egoera bistaratu zuen. Baina hau borrokaren erdia baino ez da, datu hauek urruneko ostalarira nola transferitu eta VPN konexioa antolatzeko galdera sortu zen. Posta-protokoloa erabiliz, edo agian Telegram?! Aukera asko daude eta Yandex.disk erabiltzea erabaki nuen, aurkitu nuenetik Curl Yandex.disk-ekin WebDav bidez lan egiteari buruzko artikulua. Inplementazioan pentsatu ondoren, eskema hau bururatu zait:
Seinalatu nodoak konexio bat ezartzeko prest daudela Yandex.disk-en denbora-zigilua duen fitxategi zehatz bat egoteagatik;
Nodoak prest badaude, jaso STUN zerbitzaritik uneko parametroak;
Kargatu uneko ezarpenak Yandex.disk-era;
Egiaztatu Yandex.disk-eko fitxategi batetik urruneko nodo baten presentzia eta parametroak irakurri;
OpenVPN erabiliz urruneko ostalari batekin konexioa ezartzea.
Praktika
Pixka bat pentsatu ondoren, azken artikuluaren esperientzia kontuan hartuta, azkar idatzi nuen gidoi bat. beharko dugu:
adierazi saio-hasiera (2. lerroa) eta Yandex.disk (3. lerroa) pasahitza.
zehaztu tunelaren barne IP helbidea (4. lerroa).
egin script-a exekutagarria:
# chmod +x vpn10.sh
exekutatu scripta:
# ./vpn10.sh nZbVGBuX5dtturD
non nZbVGBuX5dtturD sortutako konexio IDa den Hemen
Urruneko nodoan, egin gauza bera, zehaztu tunelaren barne IP helbidea eta konexio IDa.
Scripta aktibatuta dagoenean automatikoki abiarazteko, /etc/ fitxategian dagoen "nohup /<script-aren bidea>/vpn10.sh nZbVGBuX5dtturD > /var/log/vpn10.log 2>/dev/null &" komandoa erabiltzen dut. rc.local
Ondorioa
Script-ak funtzionatzen du, Ubuntu (18.04, 19.10, 20.04) eta Debian 9-n probatua. Beste edozein zerbitzu erabil dezakezu transmisore gisa, baina esperientziagatik Yandex.disk erabili dut.
Esperimentuetan zehar, NAT hornitzaile mota batzuek ez dutela konexiorik ezartzeko aukera ematen aurkitu zen. Batez ere, torrentak blokeatuta dauden operadore mugikorretatik.
Hobetzeko asmoa dut:
Secret.key-ren sorkuntza automatikoa hasten zaren bakoitzean, enkriptatu eta kopiatu Yandex.disk-era urruneko nodo batera transferitzeko (bertsio eguneratua kontuan hartuta)
Interfazeen IP helbideak automatikoki esleitzea
Datuak enkriptatzen Yandex.disk-era kargatu aurretik
Kodearen optimizazioa
Izan dadila IPv6 etxe guztietan!
Eguneratua! Azken fitxategiak eta DEB paketea hemen - yandex.disko