OpenVPN kupitia SOCKS5: Oanisha Toleo, Usafirishaji na DNS
Mnyororo wa SOCKS hushindwa wakati toleo la proksi, usafirishaji au njia ya DNS hazioani. Oanisha SOCKS5, beba TCP, na uweke mnyororo ndani ya nafasi ya majina moja.
Njia moja ya kutoka kwenye kituo hiki cha kazi ni proksi ya SOCKS, na OpenVPN nyuma yake huripoti muda wa muunganisho kuisha bila maelezo yoyote ya maana. Kivinjari kwenye mashine hiyo hiyo hufanya kazi kupitia proksi hiyo, nywila ni sahihi, na bandari hujibu. Vitu vitatu hutofautiana mara nyingi vya kutosha kuchunguzwa kwanza: toleo la SOCKS ambalo proksi inazungumza, usafirishaji ambao mteja alichagua, na mahali ambapo utatuzi wa majina hufanyika. Thibitisha kila kimoja kabla ya kuamua kuwa ngome ndiyo lawama.
Oanisha Toleo la SOCKS Kabla ya Ngome
OpenVPN ya jumuiya huzungumza SOCKS5 kwa ajili ya socks-proxy. Ielekeze kwenye proksi inayotoa SOCKS4 tu na muunganisho wa TCP hufunguka, kisha hukwama, kwa sababu mteja husubiri jibu la salamu ambayo upande mwingine hauitafsiri kamwe. Kutoka nje, kukwama huko kunaonekana kama bandari iliyochujwa, ndiyo sababu swali la toleo huja kabla ya kanuni yoyote ya ngome. Uchukuaji unaojua SOCKS huamua hilo kwa amri moja.
curl --socks5-hostname 127.0.0.1:9050 gw.lab.example
Ombi lililokamilika huthibitisha mambo mawili kwa wakati mmoja: proksi ilikubali ombi la SOCKS na ikatatua jina. Hakuna mpango wa URL unaohitajika, kwa sababu curl huchukulia mwenyeji tupu kama HTTP, na hiyo inatosha kwa jaribio hili.
Uchukuaji huo pia huondoa hitilafu ambayo kumbukumbu ya mteja huificha. Proksi inaweza kuruhusu kivinjari na bado kukataa lengo la VPN, na hapo kukataa hufanyika kwenye CONNECT, kabla ya uthibitishaji wowote wa VPN. OpenVPN huripoti muda wa kuisha tu, kwa hiyo jibu la proksi yenyewe ndilo ushahidi unaouhitaji.
Usafirishaji Lazima Uwe TCP Pande Zote
SOCKS5 hubeba mtiririko wa TCP hapa, kwa hiyo handaki yenyewe inahitaji proto tcp-client. Profaili iliyowekwa bado kwenye UDP haitafanya kazi kupitia njia hii, kwa sababu mteja hautumii hali ya ushirika ya UDP ya itifaki. Kubadilisha profaili ni mabadiliko ya kweli na si urasimu: upande wa mbali lazima usikilize TCP kwenye bandari hiyo hiyo. Kisha mzigo huwa TCP ndani ya TCP, ambapo sehemu iliyopotea hurudishwa mara mbili na mwendo hupungua, jambo ambalo vikao vya maingiliano huliona zaidi kuliko uhamishaji mkubwa.
proto tcp-client
remote gw.lab.example 8443
socks-proxy 127.0.0.1 9050
Agizo hili huchukua mwenyeji wa proksi, bandari ya hiari na faili ya nywila ya hiari. Ziweke ndani ya profaili yenyewe ili nakala mahali pengine itende sawa.
Funga Mnyororo Wote kwenye Kontena Moja
Kufanya mnyororo kwenye mwenyeji humaanisha kunyakua njia yake chaguo-msingi na kuacha kitatuzi katika hali ambayo hakuna atakayeweza kuieleza baadaye. Nafasi ya majina au kontena huubana badala yake, kwa hiyo mwenyeji hubaki na njia yake wakati hatua ya SOCKS na handaki huishi pamoja. Hakuna kinachoinuka ndani yake bila kifaa cha handaki, haki za kusanidi kifaa hicho, na proksi inayofikika. Huduma ya Compose hupata hilo kwa cap_add: NET_ADMIN na /dev/net/tun iliyopachikwa kwa bind.
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun:/dev/net/tun
Jozi hilo ni jembamba kuliko kuendesha kontena kwa upendeleo kamili, na ndiyo yote ya ufikiaji wa kifaa unaohitajika. Mteja wa Tor au kontena tofauti la proksi linaweza kutoa msikilizaji. Katika hali zote mbili lifunge kwenye loopback, na ulifikie kutoka kwenye nafasi ya majina kupitia mwenyeji badala ya kuweka proksi wazi kwenye mtandao.
Utatuzi wa Majina Ndipo Utengano Unashindwa
Handaki linalobeba pakiti huku likiuliza kitatuzi cha mwenyeji hakikutenga chochote. Mambo mawili hufanya utengano uwe wa kweli: nafasi ya majina ina kitatuzi chake, na maswali yake hupita kupitia proksi au handaki, kamwe si kupitia kiolesura halisi. Tumia majina mawili kwa jaribio: moja ambalo lipo tu nyuma ya handaki, na moja la umma linalopaswa kufuata njia hiyo hiyo.
docker compose exec vpn cat /etc/resolv.conf
docker compose exec vpn getent hosts internal.lab.example
Kama jina la upande wa mbali linatatuliwa na la umma halitatuliwi, mnyororo unachagua na haujavunjika, na tofauti hiyo inakuambia kila swali lilichukua njia gani. Kama yote mawili yanatatuliwa kutoka kwa mwenyeji lakini hakuna linalotatuliwa ndani ya kontena, kontena bado linakopa kitatuzi cha mwenyeji. Andika faili ya kitatuzi uliyoipata, kwa sababu hiyo ndiyo mpangilio unaopaswa kubadilishwa.
Thibitisha Kila Hatua kwa Mpangilio
Orodha ni fupi. Ombi la SOCKS5 hupata jibu, handaki hufikia msikilizaji wake kupitia proksi, na pakiti zinazotoka kwenye nafasi ya majina hubeba anwani ambayo upande wa mbali unatarajia. Thibitisha kila moja kwa wakati mmoja badala ya kuongeza usanidi zaidi. Mteja anaposema ameunganishwa na hakuna kinachosogea, kukatika karibu kila mara huwa katika ukweli wa pili au wa tatu.
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
Andika mchanganyiko uliofanya kazi: toleo la SOCKS, usafirishaji, kitatuzi na mipangilio ya nafasi ya majina. Kutatua mnyororo huu mara ya pili kutoka kumbukumbu hugharimu zaidi kuliko noti. Weka ukweli huo manne kwenye tiketi na si kwenye uzi wa gumzo.
Mnyororo unaoripoti umeunganishwa na haupitishi chochote kwa kawaida umeshindwa kwenye hatua ambayo bado hujaithibitisha. Jaribu hatua hiyo kabla ya kuongeza tabaka lingine.