Mid ka mid ah waddooyinka baxa ee shaqadan waa wakiil SOCKS, oo OpenVPN ee ka dambeeya wuxuu soo sheegaa waqti dhammaad xiriir isagoo aan lahayn faahfaahin faa'iido leh. Browser-ka isla mashiinka wuxuu ku shaqeeyaa wakiilkaas, aqoonsiga waa sax oo dekedda way jawaabtaa. Saddex arrimood ayaa si ku filan u kala duwan in marka hore la baaro: nooca SOCKS ee wakiilku ku hadlo, gaadiidka uu macmiilku doortay iyo meesha xallinta magaca ka dhacdo. Xaqiiji mid kasta ka hor inta aadan dambiga saarin derbiga dabka.

Iswaafaji nooca SOCKS ka hor derbiga dabka

OpenVPN beelet ahaan wuxuu ku hadlaa SOCKS5 ee socks-proxy. U jeedi wakiil bixiya SOCKS4 oo keliya, xiriirka TCP wuu furmaa kadibna wuu istaagaa, sababtoo ah macmiilku wuxuu sugayaa jawaab salam uu dhinaca kale waligiis aan falanqayn. Dibadda, istaaggani wuxuu u eg yahay deked la shaandheeyay si sax ah, taasina waa sababta su'aasha nooca ay ka hor timaaddo qaanuun kasta oo derbiga dabka. Hal soo jiidasho oo SOCKS garanaya ayaa tan ku xallisa hal amar.

curl --socks5-hostname 127.0.0.1:9050 gw.lab.example

Codsi dhamaystiran wuxuu isku mar caddeeyaa laba arrimood: wakiilku wuu aqbalay codsiga SOCKS oo wuxuu xalliyay magaca. Looma baahna qaab URL, sababtoo ah curl wuxuu u arkaa martigeliyaha qaawan sida HTTP, taasina way ku filan tahay imtixaankan.

Soo jiidashadaas waxay kaloo meesha ka saartaa cilladda ay qariyaan diiwaanka macmiilka. Wakiilku wuu u oggolaan karaa browser-ka oo wali diidi karaa meesha VPN, markaas diidmadu waxay dhacdaa CONNECT, ka hor aqoonsi kasta oo VPN. OpenVPN wuxuu soo sheegaa waqti dhammaad oo keliya, sidaas darteed jawaabta wakiilka laftiisu waa caddaynta aad u baahan tahay.

Gaadiidku waa inuu TCP noqdaa labada dhinac

SOCKS5 wuxuu halkan qaadaa qulqul TCP, sidaas darteed tunnel-ka laftiisu wuxuu u baahan yahay proto tcp-client. Profayl weli UDP ku habboon kuma shaqeyn doono waddadan, sababtoo ah macmiilku ma isticmaalo habka xiriirka UDP ee borotokoolka. Beddelka profaylku waa isbeddel dhab ah ee ma aha qaab-dhismeed: dhinaca fog waa inuu TCP ku dhagaysto isla dekedda. Kadib culaysku wuxuu noqdaa TCP gudaha TCP, halkaas oo qaybta lumay laba jeer dib loo diro oo xawaaruhu hoos u dhaco, taas oo fadhiyada isdhexgalka ay ka dareemaan wax badan marka loo eego wareejin weyn.

proto tcp-client
remote gw.lab.example 8443
socks-proxy 127.0.0.1 9050

Amarku wuxuu qaataa martigeliyaha wakiilka, deked ikhtiyaari ah iyo fayl aqoonsi ikhtiyaari ah. Ku dheji profaylka laftiisa si nuqul meel kale u dhaqmo si isku mid ah.

Ku xir silsiladda oo dhan hal weel

Silsiladda martigeliyaha ku samaynta waxay ka dhigan tahay qaadashada waddadiisa caadiga ah iyo ka tagista xalliyaha xaalad aan cidna dambe sharraxayn karin. Meel magacyo ama weel ayaa xaddida taas beddelkeeda, sidaas darteed martigeliyuhu wuxuu hayaa waddadiisa halka tallaabada SOCKS iyo tunnel-ku ay wada noolaadaan. Gudaha waxba ma koro iyada oo aan lahayn qalab tunnel, xuquuqo lagu habbeeyo qalabkaas iyo wakiil la gaari karo. Adeegga Compose wuxuu tan ku helaa cap_add: NET_ADMIN iyo /dev/net/tun oo bind lagu rakibay.

cap_add:
  - NET_ADMIN
devices:
  - /dev/net/tun:/dev/net/tun

Lammaanahani way ka cidhiidhi san yahay in weelka lagu shaqaysiiyo isagoo leh xuquuq buuxda, waana dhammaan gelitaanka qalabka loo baahan yahay. Macmiil Tor ama weel wakiil oo gaar ah ayaa bixin kara dhagaystaha. Labada xaaladba ku xir loopback, kadibna ka gaar meel magacyada iyada oo loo marayo martigeliyaha halkii aad wakiilka u bandhigi lahayd shabakadda.

Xallinta magaca waa halka go'doonku ku guuldarraysto

Tunnel-ka qaada baakadaha laakiin wali weydiiya xalliyaha martigeliyaha waxba ma go'doomin. Laba arrimood ayaa go'doonka ka dhigaya mid dhab ah: meesha magacyadu waxay leedahay xalliye u gaar ah, oo weydiimihiisu waxay maraan wakiilka ama tunnel-ka, waligood kama maraan interface jirka ah. Isticmaal laba magac imtixaanka: mid ku jira oo keliya gadaasha tunnel-ka, iyo mid dadweyne oo ay tahay inuu raaco isla waddadaas.

docker compose exec vpn cat /etc/resolv.conf
docker compose exec vpn getent hosts internal.lab.example

Haddii magaca fog la xalliyo oo midka dadweynaha aan la xallin, silsiladdu waa mid dooratay oo ma aha mid jabtay, farqiguna wuxuu kuu sheegaa waddada ay weydiin kastaa qaadatay. Haddii labaduba martigeliyaha laga xalliyo laakiin midna gudaha weelka laga xallin, weelku wali wuxuu amaahsanayaa xalliyaha martigeliyaha. Qor faylka xalliyaha aad heshay, sababtoo ah waa taas habaynta u baahan in la beddelo.

Caddee tallaabo kasta si kala horreysan

Liistadu way gaaban tahay. Codsiga SOCKS5 wuxuu helaa jawaab, tunnel-ku wuxuu gaaraa dhagaystahiisa isagoo maraya wakiilka, baakadaha ka baxa meesha magacyaduna waxay qaadaan cinwaanka dhinaca fog uu filayo. Xaqiiji mid mid halkii aad ku dari lahayd habayn dheeraad ah. Marka macmiilku yiraahdo waa xiran yahay oo waxba ma dhaqaaqo, jabku had iyo jeer wuxuu ku jiraa xaqiiqada labaad ama saddexaad.

curl --socks5-hostname 127.0.0.1:9050 gw.lab.example
docker compose exec vpn ip route get 203.0.113.10
docker compose exec vpn getent hosts internal.lab.example

Qor isku-dhafka shaqeeyay: nooca SOCKS, gaadiidka, xalliyaha iyo habaynta meesha magacyada. In silsiladdan mar labaad xusuus laga xalliyo wax ka qaalisan qoraalka. Hay hufnaantaas afarta ah tigidhka, ma aha wada-hadalka.

Silsilad sheegta in la xiray oo aan waxba gudbin, badanaa waxay ku guuldarraystay tallaabada aadan wali caddayn. Tijaabi tallaabadaas ka hor inta aadan ku darin lakab kale.

Maqaallo la xiriira