Bawat dulo ng tunnel ay nangangailangan ng address at port na maaabot ng kabilang panig, at ang router na hindi mo pinangangasiwaan ang karaniwang dahilan kung bakit nabibigo ang pangangailangang iyon. Ang kawili-wiling bahagi ay hindi ang pagkakaroon ng mga trick, kundi ang bawat isa ay nakadepende sa isang katangian ng mapping table na hindi mo nakikita mula sa client. Dalawa sa mga katangiang iyon ang nagpapasya sa halos lahat: paano nabubuo ang mapping, at kung tumatanggap ito ng packet mula sa address na hindi kailanman kinausap ng loob. Ayusin ang kapaligiran ayon sa mga katangiang iyon at ang mga solusyon ay hindi na kwentong bayan.

Ang mapping table ang nagpapasya sa lahat

Ang network address translation ay may table kung saan ang panloob na address at port ay nakatala laban sa pampublikong address at port. Ang mga sagot na tumutugma sa isang record ay isinasalin pabalik, at ang packet na dumarating mula sa labas na walang tugmang record ay walang destinasyon. Ang nag-iisang pag-uugaling iyon ang nagpapaliwanag kung bakit hindi maabot mula sa internet ang isang tagapakinig sa likod ng router. Nagpapaliwanag din ito kung bakit ang unang packet sa bawat direksyon ay dapat magmula sa loob.

Tingnan ang table mula sa panig ng router at nagiging malinaw ang mga solusyon: maaaring may gumagawa ng permanenteng entry, may gumagawa ng pansamantala at pinapanatili itong sariwa, o hindi kailanman dumadaan ang trapiko sa ganoong landas. Ang natitirang bahagi ng artikulo ay ang tatlong kasong iyon sa pagkakasunod-sunod. Wala rito ang nakadepende sa feature ng vendor na lampas sa naitala ng table.

Ano ang kaya at hindi kaya ng rendezvous service

Ginagamit ng UDP hole punching ang outgoing record bilang pansamantalang bukasan sa halip na talunin ang filter. Nakikipag-ugnayan ang dalawang peer sa isang rendezvous service, na natututo ng bawat pampublikong dulo at ibinabalik sa kabilang panig ang dulo nito. Pagkatapos ay nagpapadala ang dalawa patungo sa isa't isa, at bawat outgoing packet ay gumagawa o nagre-refresh ng record na nagpapapasok sa sagot. Ang pagkakasunod-sunod ang nagpapagana nito, at ang pagkakasunod-sunod din ang nagpapahina nito: ang peer na nagpadala bago pa nagawa ng kabilang panig ang record nito ay itinatapon lang, samantalang ang muling pagsubok mayamaya ay nagtagumpay. Ang serbisyo mismo ay hindi nagdadala ng trapikong VPN, kaya ang tanging lever nito ay ang timing na inaayos nito.

Ang pag-uugali ng mapping ang nagpapasya sa iba pa, at RFC 4787 ay pinangalanan ang tatlong anyo: malaya sa dulo, nakadepende sa address, at nakadepende sa address at port. Sa huli, ang port na dapat puntiryahin ng peer ay nagbabago sa bawat destinasyon, kaya hindi na maaasahan ang hula. Doon nararating ng teknik ang mga dead end nito, dahil parehong inaalis ng carrier-grade NAT at ng mahigpit na corporate firewall ang predictability na kailangan ng scheme, at walang dami ng muling pagsubok ang nagbabalik nito.

Keepalive, reboot at ang gumagalaw na dulo

Ang butas na landas ay isang daloy at hindi isang tagapakinig, kaya lahat ng tumatakbo sa ibabaw nito ay dapat makatagal sa pagbabago. Kailangan nitong panatilihing buhay ang mapping gamit ang pana-panahong trapiko, mapansin kapag gumalaw ang pampublikong dulo, at muling maitatag pagkatapos ng reboot ng router o muling pagtatalaga ng address. Inilalagay ng mga produktong mesh VPN ang lohikang iyon sa sarili nilang control plane, samantalang ang simpleng server ay iniiwan ito sa iyo. Nakakatulong lang ang keepalive habang buhay ang parehong mapping, at kumakain ito ng baterya sa mobile client, kaya hindi libre ang agresibong interval.

Ang laptop na natutulog nang isang oras ay karaniwang bumabalik sa ibang pampublikong dulo. Lahat ng muling nagtatatag ng landas ay dapat tumakbo muli mula sa loob, na nagbabalik ng parehong pangangailangan sa client.

Tatlong paraan sa paligid ng kulang na forwarding

Hinihiling ng unang paraan sa router na siya mismo ang gumawa ng entry, sa pamamagitan ng UPnP IGD, NAT-PMP o PCP, kapag umiiral at nakabukas ang feature. Ipinapaubaya ng pangalawa ang trapiko sa isang relay na may pampublikong address, na laging gumagana at laging nagkakahalaga ng bandwidth at ibang trust boundary. Binabaligtad ng pangatlo ang direksyon: nagbubukas ang panloob na host ng outgoing tunnel patungo sa pampublikong server at ang lahat ng iba ay sumasakay sa loob nito.

[Peer]
PublicKey = 6yGj3kQ2wVb8sTn1pLx4dRc7hZa9mKf2uYe5oNq0iXw=
Endpoint = relay.corp.internal:51820
PersistentKeepalive = 25
AllowedIPs = 10.44.0.0/24

Ang dulo ng relay ay ginagawang nakikita ang palitang iyon sa configuration ng client, kung saan ang dulo ay relay at hindi ang sariling address ng peer. Pinapanatiling mainit ng persistent keepalive ang mapping, at ang mga pinapayagang prefix ang nagpapasya kung ano ang maaaring ipadala ng client dito. Isang reverse tunnel mula sa panloob na host ay ang parehong ideya na may ibang may-ari, at hindi ito nangangailangan ng anumang pagbabago sa NAT. Inaalis ng bawat isa sa tatlo ang pangangailangan sa papasok nang hindi tinatalo ang firewall na humaharang sa hindi hinihinging trapiko ayon sa disenyo, dahil nagsisimula pa rin sa loob ang trapiko.

Itugma ang solusyon sa may-ari ng router

Kung ikaw ang namamahala sa router, ang static na UDP forwarding ay mas madaling i-audit kaysa sa anumang scheme ng punching at nabibigo ito sa mga paraang nakikita mo. Kung hindi, alamin kung may iniaalok ang vendor na relay o hosted control plane, at kung papayagan ito ng patakaran. Kung wala sa dalawa, ang natitirang pagpipilian ay reverse tunnel o tanggapin na hindi maabot ang dulo mula sa labas. Mahalaga ang itala kung alin ang ginamit mo kaysa sa tunog nito, dahil nagkakaiba ang mga opsyon sa kung sino ang makakapagmasid ng trapiko at ano ang mangyayari kapag may binago ang ikatlong partido.

Pansinin kung ang landas na napuntahan mo ay direkta o dumaan sa relay, dahil ang nag-iisang katotohanang iyon ay hinuhulaan ang latency at pag-uugali sa pagkabigo. Ang RFC 4787 ay nananatiling sanggunian para sa pag-uugali ng mapping sa ilalim ng lahat ng ito, at ang pagbasa sa seksyon nito tungkol sa mapping ay mas mabilis kaysa sa pagsubok ng tatlong solusyon nang sunud-sunod. Wala pakialam ang table kung aling opsyon ang pinili mo; itinatala lamang nito kung ano ang pinapayagang gawin ng susunod na packet.

Kaugnay na mga artikulo