Bawat parola ay makapagsasabi sa isang host tungkol sa bawat ibang peer maliban sa kung saan mismo naroroon ang parola. May dapat munang malaman bago umiral ang overlay, at inilalagay ng Nebula ang bagay na iyon sa isang maliit na mapa. Ipinares ng mapa ang isang overlay identity sa isang address na gumagana sa ordinaryong network. Lahat ng matututuhan mamaya ay nakadepende sa pagiging tama ng pares na iyon.

Dalawang address na may dalawang tungkulin

Bawat Nebula host ay may overlay address na nananatiling fixed habang gumagalaw ang device sa pagitan ng mga network. Ang address na iyon ang identity na ginagamit ng mga certificate, firewall rule at ugnayan ng peer, at mag-isa ay hindi ito nagru-route kahit saan. Ang endpoint na maaabot ay ibang bagay: isang hostname o address sa underlying network at isang UDP port, at nagbabago ito tuwing lumilipat ng lokasyon ang makina. Ang static na mapa ang dugtong sa pagitan ng dalawa.

Tanging ang mga host na dapat tawagan nang malamig ang nabibilang sa mapa, na karaniwang nangangahulugang ang mga parola at marahil isang relay. Ang pagpapanatiling maikli ng listahang iyon ay isang layunin ng disenyo, dahil bawat manu-manong entry ay nagiging katotohanang kailangang alagaan ng isang tao. Ang paghahalo ng dalawang uri ng address ay ang karaniwang pagkakamali sa configuration: ang pampublikong address na inilagay sa listahan ng parola ay hindi nagpapasimula ng pagtuklas.

Pumupunta ang identity kung saan inaasahan ang identity. Pumupunta ang maabot sa mapa.

static_host_map:
  "10.42.0.1": ["lighthouse-01.example.net:4242"]

lighthouse:
  am_lighthouse: false
  hosts:
    - "10.42.0.1"

Anatomiya ng isang entry sa mapa

Ang key ay ang overlay address na nakasulat bilang string sa loob ng quotes, at ang value ay listahan ng mga endpoint, kaya ang isang identity ay maaaring may ilang pasukan. Bawat endpoint ay may host at port, at ang port ay dapat tumugma sa aktwal na pinakikinggan ng kabilang panig. Ang default ng Nebula ay UDP 4242, na isang panimulang punto at hindi pangako tungkol sa iyong deployment.

Maraming endpoint ay kapaki-pakinabang kapag ang isang parola ay may higit sa isang daan papasok, tulad ng pampublikong address at pribadong address para sa mga host sa parehong segment. Sinusubukan ito ng client sa pagkakasunod-sunod, kaya ilagay muna ang pinakamaaasahan. Para sa IPv6, ilagay ang address sa loob ng square brackets bago idagdag ang port; ang pagkakamali dito ay nagbubunga ng parse error na tumuturo sa maling linya.

Ang maling port ay nagdudulot ng katahimikan sa halip na error, dahil walang handshake ang UDP upang tumanggi. Kaya sulit suriin ang format ng entry laban sa reference ng Nebula para sa static_host_map at hindi sa memorya. Saklaw din ng reference ang mga listahan ng endpoint at ang pag-uugali ng pag-refresh ng DNS.

Dapat gumana ang bootstrap bago ang overlay

Ang isang DNS name sa mapa ay dapat maresolba sa pamamagitan ng resolver na mayroon ang host bago umiral ang anumang tunnel, ibig sabihin ang ordinaryong system resolver. Subukan ito mula sa parehong makina, sa oras ng boot, habang naka-stop ang overlay. Ang pangalang naresolba lamang sa pamamagitan ng sariling DNS ng overlay ay hindi makapagbo-bootstrap ng overlay. Ang parehong pagsubok ay naaangkop sa ruta: ang firewall rule na pumapayag sa overlay ngunit hindi sa unang UDP exchange ay humaharang sa unang packet.

Suriin ang port gamit ang UDP tool sa halip na ipagpalagay na bukas ito. Tiyakin na ang anumang port forwarding sa ruta ay tumuturo sa tamang internal host at may return path. Kung ang hostname ay naresolba sa ilang address, subukan ang bawat isa, dahil maaaring pumili ang client ng address na hindi mo kailanman sinuri.

Ang mga static na entry ay direktang tinatawagan at hindi kailanman nagtatanong sa parola. Kaya ang pagkabigo dito ay mukhang ordinaryong timeout na walang peer na kasangkot.

Ano ang nangyayari pagkatapos ng unang handshake

Kapag naabot ng host ang isang parola, natututuhan nito ang tungkol sa mga peer at sa kanilang maaabot na address nang walang karagdagang manu-manong entry. Ang mga host na lumipat mula noong huling koneksyon ay nagiging matutuklasan sa pamamagitan ng channel na iyon. Iyan ang gantimpala sa pagpapanatiling maliit ang manu-manong mapa.

Maaari rin ipahayag ng mga host ang kanilang karagdagang maaabot na address, at sa gayon ang peer sa likod ng kilalang pampublikong address ay tumutulong sa iba na hanapin ito. Ang mga anunsyong iyon ay natututuhan, hindi itinatype sa static na mapa.

Mahalaga ang pag-uugali ng pag-refresh para sa mga endpoint na nakasulat bilang DNS name, dahil ang naresolbang address ay maaaring magbago habang tumatakbo pa ang proseso. Kinokontrol ng mga setting ng Nebula kung paano nangyayari ang mga paghahanap na iyon, kabilang kung aling resolver ang ginagamit, kaya basahin ang mga ito sa halip na ipagpalagay ang default ng system. Sa isang host na nagbabago ang resolver kapag tumaas ang tunnel, ang maling setting ay maaaring gawing pangalan na tumitigil sa pagresolba sa gitna ng session ang gumaganang bootstrap. Ang pag-pin ng paghahanap sa isang matatag na resolver ay kadalasang pagkakaiba ng maaasahang overlay at ng pana-panahon.

Kapag gumagana ang pagtuklas at isang peer ang hindi

Kung maaabot ang mga parola at kumokonekta ang karamihan ng peer, ang bootstrap ay hindi ang problema. Ang natitirang pares ay maaaring hindi makahanap ng magagamit na daan sa isa't isa o nabigo sa itaas ng maabot. Ang pagdaragdag ng isa pang baybay ng address ng parola ay hindi makakapag-ayos ng alinman sa dalawang kaso.

Suriin ang pares bago i-edit ang mapa na pinag-aasahan na ng lahat ng iba pa. Ang pagbabago ng mapa ay nakakagambala sa bawat host, kaya ito ang huling bagay na dapat hawakan, hindi ang una.

Magsimula sa mga certificate mula sa parehong awtoridad, dahil ang tinanggihang handshake ay maaaring magmukhang hindi maaabot na peer mula sa malayo. Pagkatapos ay suriin kung makakapagtatag ang pares ng direktang daan at kung may relay na naka-configure para sa mga network na tumatanggi sa direktang trapiko. Ang relay ay nagdaragdag ng isang hop at isang dependency, ngunit ito ay suportadong sagot, at ang pag-aayos ng daan ng pares ay ibang gawain kaysa sa pag-aayos ng pagtuklas.

Kaugnay na mga artikulo