ProHoster > ΠΠ»ΠΎΠ³ > Pagdumala > Direkta nga VPN tunnel tali sa mga kompyuter pinaagi sa provider NATs (walay VPS, gamit ang STUN server ug Yandex.disk)
Direkta nga VPN tunnel tali sa mga kompyuter pinaagi sa provider NATs (walay VPS, gamit ang STUN server ug Yandex.disk)
Pagpadayon mga artikulo bahin sa kung giunsa nako pagdumala ang usa ka direkta nga tunel sa VPN taliwala sa duha nga mga kompyuter nga nahimutang sa luyo sa mga taghatag sa NAT. Gihubit sa miaging artikulo ang proseso sa pag-organisar sa usa ka koneksyon sa tabang sa usa ka ikatulo nga partido - usa ka tigpataliwala (usa ka giabangan nga VPS nga naglihok ingon usa ka butang sama sa usa ka server sa STUN ug usa ka transmitter sa data sa node alang sa koneksyon). Niini nga artikulo isulti ko kanimo kung giunsa nako pagdumala nga wala ang VPS, apan ang mga tigpataliwala nagpabilin ug sila ang STUN server ug Yandex.Disk...
Pasiuna
Human mabasa ang mga komento sa miaging post, akong naamgohan nga ang nag-unang disbentaha sa pagpatuman mao ang paggamit sa usa ka tigpataliwala - usa ka ikatulo nga partido (VPS) nga nagpakita sa kasamtangan nga mga parameter sa node, diin ug unsaon pagkonektar. Gikonsiderar ang mga rekomendasyon sa paggamit niini nga STUN (nga adunay daghan) aron mahibal-an ang karon nga mga parameter sa koneksyon. Una sa tanan, nakahukom ko nga gamiton ang TCPDump aron tan-awon ang mga sulod sa mga pakete sa dihang ang STUN server nagtrabaho uban sa mga kliyente ug nakadawat sa hingpit nga dili mabasa nga sulod. Nag-googling sa protocol nga akong nakit-an artikulo nga naghulagway sa protocol. Nakaamgo ko nga dili nako mapatuman ang usa ka hangyo sa STUN server sa akong kaugalingon ug ibutang ang ideya sa usa ka "layo nga kahon".
Teorya
Bag-ohay lang kinahanglan kong i-install ang STUN server sa Debian gikan sa package
# apt install stun-server
ug sa mga dependency nakita nako ang stun-client nga pakete, apan sa usa ka paagi wala nako kini tagda. Apan sa ulahi akong nahinumduman ang bahin sa stun-client package ug nakahukom nga mahibal-an kung giunsa kini molihok, pagkahuman sa pag-googling ug pagpangita sa Yandex nakuha nako:
STUN nga bersyon sa kliyente 0.97
Giablihan ang port 21234 nga adunay fd 3
Giablihan ang port 21235 nga adunay fd 4
Pag-encode sa stun nga mensahe:
Encoding ChangeRequest: 0
Hapit na magpadala msg ni len 28 sa 216.93.246.18:3478
Pag-encode sa stun nga mensahe:
Encoding ChangeRequest: 4
Hapit na magpadala msg ni len 28 sa 216.93.246.18:3478
Pag-encode sa stun nga mensahe:
Encoding ChangeRequest: 2
Hapit na magpadala msg ni len 28 sa 216.93.246.18:3478
Nakadawat stun message: 92 bytes
MappedAddress = <My IP>:2885
SourceAddress = 216.93.246.18:3478
Giusab ngaAddress = 216.93.246.17:3479
Wala mailhi nga hiyas: 32800
ServerName = Vovida.org 0.98-CPC
Nakadawat nga mensahe sa tipo 257 id=1
Pag-encode sa stun nga mensahe:
Encoding ChangeRequest: 0
Hapit na magpadala msg ni len 28 sa 216.93.246.17:3478
Pag-encode sa stun nga mensahe:
Encoding ChangeRequest: 4
Hapit na magpadala msg ni len 28 sa 216.93.246.18:3478
Pag-encode sa stun nga mensahe:
Encoding ChangeRequest: 2
Hapit na magpadala msg ni len 28 sa 216.93.246.18:3478
Pag-encode sa stun nga mensahe:
Encoding ChangeRequest: 0
Hapit na ipadala ang msg ni len 28 sa <My IP>:2885
Nakadawat stun message: 28 bytes
ChangeRequest = 0
Nakadawat nga mensahe sa tipo 1 id=11
Pag-encode sa stun nga mensahe:
Encoding ChangeRequest: 0
Hapit na magpadala msg ni len 28 sa 216.93.246.17:3478
Pag-encode sa stun nga mensahe:
Encoding ChangeRequest: 4
Hapit na magpadala msg ni len 28 sa 216.93.246.18:3478
Pag-encode sa stun nga mensahe:
Encoding ChangeRequest: 2
Hapit na magpadala msg ni len 28 sa 216.93.246.18:3478
Nakadawat stun message: 92 bytes
MappedAddress = <My IP>:2885
SourceAddress = 216.93.246.17:3479
Giusab ngaAddress = 216.93.246.18:3478
Wala mailhi nga hiyas: 32800
ServerName = Vovida.org 0.98-CPC
Nakadawat nga mensahe sa tipo 257 id=10
Pag-encode sa stun nga mensahe:
Encoding ChangeRequest: 4
Hapit na magpadala msg ni len 28 sa 216.93.246.18:3478
Pag-encode sa stun nga mensahe:
Encoding ChangeRequest: 2
Hapit na magpadala msg ni len 28 sa 216.93.246.18:3478
Pag-encode sa stun nga mensahe:
Encoding ChangeRequest: 4
Hapit na magpadala msg ni len 28 sa 216.93.246.18:3478
Pag-encode sa stun nga mensahe:
Encoding ChangeRequest: 2
Hapit na magpadala msg ni len 28 sa 216.93.246.18:3478
Pag-encode sa stun nga mensahe:
Encoding ChangeRequest: 4
Hapit na magpadala msg ni len 28 sa 216.93.246.18:3478
Pag-encode sa stun nga mensahe:
Encoding ChangeRequest: 2
Hapit na magpadala msg ni len 28 sa 216.93.246.18:3478
Pag-encode sa stun nga mensahe:
Encoding ChangeRequest: 4
Hapit na magpadala msg ni len 28 sa 216.93.246.18:3478
Pag-encode sa stun nga mensahe:
Encoding ChangeRequest: 2
Hapit na magpadala msg ni len 28 sa 216.93.246.18:3478
Pag-encode sa stun nga mensahe:
Encoding ChangeRequest: 4
Hapit na magpadala msg ni len 28 sa 216.93.246.18:3478
Pag-encode sa stun nga mensahe:
Encoding ChangeRequest: 2
Hapit na magpadala msg ni len 28 sa 216.93.246.18:3478
pagsulay I = 1
pagsulay II = 0
pagsulay III = 0
pagsulay I(2) = 1
kay nat = 1
gimapa nga IP parehas = 1
pislit sa buhok = 1
preserbar nga pantalan = 0
Primary: Independent Mapping, Port Dependent Filter, random port, mag-hairpin
Ang kantidad sa pagbalik mao ang 0x000006
String nga adunay bili
MappedAddress = <My IP>:2885
basta unsa imong kinahanglan! Gipakita niini ang kasamtangan nga status alang sa koneksyon sa lokal nga UDP port 21234. Apan kini katunga lamang sa gubat, ang pangutana mitungha kung unsaon pagbalhin niini nga data ngadto sa hilit nga host ug pag-organisar sa koneksyon sa VPN. Gigamit ang mail protocol, o tingali Telegram?! Adunay daghang mga kapilian ug nakahukom ko nga gamiton ang Yandex.disk, sukad nga akong nakit-an artikulo bahin sa pagtrabaho sa Curl pinaagi sa WebDav sa Yandex.disk. Human sa paghunahuna mahitungod sa pagpatuman, miabut ko sa mosunod nga laraw:
Signal nga ang mga node andam na sa pag-establisar og koneksyon pinaagi sa presensya sa usa ka piho nga file nga adunay timestamp sa Yandex.disk;
Kung ang mga node andam na, unya makadawat sa kasamtangan nga mga parameter gikan sa STUN server;
Pag-upload sa kasamtangan nga mga setting sa Yandex.disk;
Susiha ang presensya ug basaha ang mga parameter sa usa ka hilit nga node gikan sa usa ka file sa Yandex.disk;
Pagtukod og koneksyon sa usa ka hilit nga host gamit ang OpenVPN.
Pagpraktis
Human sa gamay nga paghunahuna, nga gikonsiderar ang kasinatian sa miaging artikulo, dali akong nagsulat ug script. Kinahanglan namon:
Kopyaha sa clipboard ug idikit sa editor, pananglitan:
# nano vpn10.sh
ipakita ang login (ika-2 nga linya) ug password alang sa Yandex.disk (ika-3 nga linya).
ipiho ang internal nga IP address sa tunnel (ika-upat nga linya).
himoa nga ma-executable ang script:
# chmod +x vpn10.sh
pagdagan ang script:
# ./vpn10.sh nZbVGBuX5dtturD
diin ang nZbVGBuX5dtturD mao ang connection ID nga namugna dinhi
Sa hilit nga node, buhata ang parehas, ipiho ang katugbang nga internal nga IP address sa tunnel ug koneksyon ID.
Aron ma-autorun ang script kung gi-on, gigamit nako ang command "nohup /<path to the script>/vpn10.sh nZbVGBuX5dtturD > /var/log/vpn10.log 2>/dev/null &" nga anaa sa file /etc/ rc.lokal
konklusyon
Ang script nagtrabaho, gisulayan sa Ubuntu (18.04, 19.10, 20.04) ug Debian 9. Mahimo nimong gamiton ang bisan unsang serbisyo ingon usa ka transmitter, apan alang sa kasinatian gigamit nako ang Yandex.disk.
Atol sa mga eksperimento, nadiskobrehan nga ang pipila ka mga matang sa NAT providers wala magtugot sa pagtukod og koneksyon. Nag-una gikan sa mga mobile operator diin ang mga sapa gibabagan.
Nagplano ko nga mouswag sa termino sa:
Awtomatikong henerasyon sa secret.key sa matag higayon nga magsugod ka, pag-encrypt ug pagkopya sa Yandex.disk alang sa pagbalhin sa usa ka hilit nga node (Gikonsiderar ang gi-update nga bersyon)
Awtomatikong pagtudlo sa mga IP address sa mga interface
Pag-encrypt sa datos sa dili pa i-upload sa Yandex.disk
Pag-optimize sa code
Himoa nga adunay IPv6 sa matag balay!
Gibag-o! Pinakabag-o nga mga file ug DEB package dinhi - yandex.disk