Kuwasha mteja wa OpenVPN wa tunnel kamili kwenye mashine unayofikia kwa SSH kunaweza kukata kikao ndani ya sekunde moja, na mashine haifanyi kosa lolote. Tunnel haibadilishi jinsi pakiti zinavyofika kwenye seva; inabadilisha jinsi majibu yanavyotoka. Mara njia ya chaguo-msingi inapoelekeza tun0, jibu kwa mteja wako wa SSH linaingia kwenye mtandao wa mtoa huduma, ambao hauna njia ya kurudi kwenye anwani yako. Muunganisho unalegaa, jaribio lifuatalo linapitwa na muda, na daemon inaendelea kusikiliza kwenye mlango 22 muda wote.

Soma jedwali la uelekezaji kabla ya kusoma kumbukumbu ya VPN. Kumbukumbu itasema tunnel ilipanda, na iko sahihi. Swali ni kiolesura kipi kinachopokea kila jibu, na hiyo ni utafutaji wa kila pakiti kwenye jedwali ambalo tunnel imeandika upya hivi punde.

Kwa nini jibu linatoka kwa mlango usiofaa

Pakiti zinazoingia bado zinafika kwenye kiolesura halisi, kwa sababu mteja wa VPN hawezi kubadilisha jinsi intaneti inavyofika kwenye anwani ya umma ya seva yako. Majibu ni uamuzi tofauti: kwa kila pakiti kerneli inatafuta lengwa, na baada ya --redirect-gateway ingizo la chaguo-msingi linasema tunnel. Toka la mtoa huduma linaona lengwa asilolihudumia na linatupa pakiti.

Ulinzi wa OpenVPN wenyewe hufunika lengwa moja haswa. Mwongozo wa 2.6 unaeleza --redirect-gateway kama mfululizo: unaongeza njia ya mwenyeji kwa peer wa VPN kupitia lango lililotumika kabla ya tunnel, ili trafiki iliyosimbwa isiweze kurudi ndani yake yenyewe, kisha kubadilisha njia ya chaguo-msingi. Njia hiyo ya mwenyeji ni ya peer pekee. Mteja wako wa SSH ni anwani nyingine ya intaneti tu na hapati msamaha wowote.

Kosa moja la kiambishi awali linafaa kuondolewa mapema. ip route add -net 0.0.0.0 gw 10.8.0.1 dev tun0 bila urefu linalingana na anwani moja 0.0.0.0, si intaneti; lazima liwe 0.0.0.0/0. Na ikiwa kuchukua chaguo-msingi kunavunja usafiri wa tunnel yenyewe, ongeza ncha ya mwisho kama njia ya mwenyeji kupitia kiolesura halisi, ukitumia anwani halisi ya mtoa huduma.

Pin anwani ya mteja wako wa SSH kwa rekebisho la haraka

Rekebisho la haraka zaidi ni njia ya mwenyeji kwa anwani ya mteja wako kupitia lango ambalo seva ilitumia kabla ya tunnel kuwepo. Kwa upande wako, tafuta anwani ambayo seva itaona, kisha soma jedwali la seva ili ujue lango la zamani:

curl -s https://ifconfig.co
ip route

Kwenye seva, ongeza msamaha kabla mteja hajaanza. Anwani hapa ni vishikilizi; umbo ndilo la muhimu:

sudo ip route add 80.128.240.55 via 192.168.178.1

Hili ni rekebisho lililotumika katika kisa kilichoripotiwa, na linafanya kazi mara moja. Pia ni dhaifu kwa njia mbili zinazoweza kutarajiwa: njia hutoweka wakati wa kuwasha upya, na inakuwa mbaya mara ISP yako inapokupa anwani nyingine. Ichukulie kama hatua ya dharura na uifanye ya kudumu kwa makusudi, kupitia kitengo cha mtandao au ndoano ya dispatcher, au ukubali kwamba ni ya muda na uandike njia ya kurejesha.

Zuia mteja kuchukua njia ya chaguo-msingi

Chaguo safi zaidi ni kuzuia tunnel isibadilishe njia ya chaguo-msingi kabisa. route-nopull, ikitumika na --client au --pull, inakubali chaguo zilizosukumwa isipokuwa njia, block-outside-dns na chaguo za mtindo wa DHCP kama seva za DNS, kwa hivyo unaongeza tu viambishi unavyohitaji. Chombo chembamba zaidi ni kichujio cha kuvuta, ambacho hutupa maagizo moja yenye matatizo na kubakiza mengine:

route-nopull
pull-filter ignore "redirect-gateway"

Tumia kimoja au kingine, si vyote viwili, na uwe wazi kuhusu kinachobadilika. Bila njia ya chaguo-msingi kupitia tunnel, seva haivinjari intaneti kupitia mtoa huduma tena; inafikia tu kile ulichoelekeza waziwazi. Ikiwa tunnel kamili ilikuwa lengo lote la usanidi, hii ni switch isiyofaa na njia ya mwenyeji iliyo juu ndiyo sahihi.

Gawanya njia ya kurudi kwa chanzo au kwa muunganisho

Wakati anwani inayoingia ni thabiti, kanuni ya chanzo huweka majibu ndani ya mashine bila kugusa njia za tunnel yenyewe. Ipe anwani ya kiolesura halisi jedwali lake lenyewe lenye kiambishi cha LAN na chaguo-msingi halisi, kisha chagua jedwali hilo kwa trafiki inayotoka humo:

ip rule add from 192.168.1.11 table 128
ip route add table 128 to 192.168.1.0/24 dev eth0
ip route add table 128 default via 192.168.1.1

Hii inafanya kazi kwa sababu majibu ya muunganisho wa SSH unaoingia yanatoka kwenye anwani ambayo mteja alijiunga nayo. Kisa kilichoripotiwa ambapo kila huduma inayoingia ilibidi iendelee kufanya kazi kilitumia umbo hili haswa. Wakati anwani inayoingia inaelea au njia ni yenye nguvu, weka alama kwenye muunganisho badala yake: weka alama ya conntrack kwenye pakiti ya kwanza inayotoka kwenye kiolesura halisi, inakili kwenye pakiti za jibu katika OUTPUT, na uelekeze pakiti zilizowekwa alama kupitia jedwali linaloelekeza kwenye lango halisi.

iptables -t mangle -A PREROUTING -i eth0 -m conntrack --ctstate NEW -j CONNMARK --set-mark 1234
iptables -t mangle -A OUTPUT -m connmark --mark 1234 -j MARK --set-mark 4321
ip route add default via 192.168.1.1 dev eth0 table 3412
ip rule add fwmark 4321 table 3412

Weka alama ya muunganisho, alama ya firewall na namba ya jedwali tofauti wakati wa kujaribu. Kutumia tena namba moja kwa majukumu mawili hutoa kanuni inayoonekana sahihi na kugonga pakiti zisizofaa. Ingizo la chaguo-msingi la jedwali pia linahitaji via pamoja na lango la LAN kwenye kiungo cha kawaida cha Ethernet; dev eth0 tupu hufanya kazi tu wakati kiolesura ni nukta-kwa-nukta au hatua inayofuata inatatuliwa kwa njia nyingine. Mwenyeji Jessie aliyeripotiwa alikuwa kwenye kiungo ambapo umbo tupu lilifanya kazi, na hiyo si kanuni ya usambazaji ya kunakili.

Hakikisha bila kujifungia nje

Usijaribu kwa kukatisha muunganisho. Acha kikao cha kwanza wazi, pandisha tunnel, na uliza kerneli ni njia ipi anwani yako yenyewe ingechukua:

ip route get 80.128.240.55

Jibu linapaswa kutaja kiolesura halisi na lango la zamani, si tunnel. Kisha fungua muunganisho wa pili wa SSH; hiyo ndiyo jaribio halisi, kwa sababu kikao cha zamani kinaweza kuendelea kuishi kwenye hali ambayo muunganisho mpya hauwezi kuizalisha. Ikiwa wa pili unalegaa wakati wa kwanza bado unajibu, kanuni haikuwahi kugonga trafiki iliyo muhimu, na alama au anwani ya chanzo ndipo mahali pa kuangalia.

Weka konsoli nje ya bendi ipatikane wakati wote wa zoezi. Seva ambayo njia yake pekee ya kufikia ni tunnel uliyoivunja hivi punde haiwezi kurekebishwa kupitia tunnel hiyo, na kurudisha nyuma ni rahisi ukiwa umeandika namba za jedwali na viambishi ulivyoongeza.

Makala zinazohusiana