Nebula static_host_map: адресата што светилникот не може да ја даде
Картата спарува overlay адреса со крајни точки достапни на вистинската мрежа. Токму тоа спарување го овозможува првото ракување.
Секој светилник може да му каже на домаќин за секој друг партнер освен за тоа каде живее самиот светилник. Нешто мора да биде познато пред overlay да постои, и Nebula го става тоа нешто во една мала карта. Картата спарува overlay идентитет со адреса што работи на обичната мрежа. Сѐ што се учи подоцна зависи од тоа спарувањето да биде точно.
Две адреси со две задачи
Секој Nebula домаќин има overlay адреса што останува фиксна додека уредот се движи меѓу мрежи. Таа адреса е идентитетот што го користат сертификатите, правилата на огнениот ѕид и партнерските односи, и сама по себе не насочува никаде. Достапната крајна точка е нешто друго: име на домаќин или адреса во основната мрежа плус UDP порта, и се менува секогаш кога машината менува локација. Статичната карта е спојката меѓу двете.
Во картата влегуваат само домаќините што мора да се бираат ладно, што обично значи светилниците и можеби еден релеј. Одржувањето на таа листа кратка е дизајнерска цел, бидејќи секој рачен запис станува факт што некој мора да го одржува. Мешањето на двата типа адреси е вообичаената грешка во конфигурацијата: јавна адреса ставена во листата на светилници не го започнува откривањето.
Идентитетот оди таму каде што се очекува идентитет. Достапноста оди во картата.
static_host_map:
"10.42.0.1": ["lighthouse-01.example.net:4242"]
lighthouse:
am_lighthouse: false
hosts:
- "10.42.0.1"
Анатомија на запис во карта
Клучот е overlay адресата напишана како низа во наводници, а вредноста е листа од крајни точки, така што еден идентитет може да има неколку влезни точки. Секоја крајна точка носи домаќин и порта, а портата мора да одговара на она што другата страна навистина го слуша. Стандардната вредност на Nebula е UDP 4242, што е почетна точка, а не ветување за твоето распоредување.
Неколку крајни точки се корисни кога светилникот има повеќе од еден пат навнатре, како јавна адреса и приватна адреса за домаќините во истиот сегмент. Клиентот ги обидува по ред, затоа стави ја најсигурната прва. За IPv6, стави ја адресата во квадратни загради пред да ја додадеш портата; грешката овде дава грешка при парсирање што покажува на погрешниот ред.
Погрешна порта дава тишина наместо грешка, бидејќи UDP нема ракување за да одбие. Затоа вреди форматот на записот да се провери наспроти референцата на Nebula за static_host_map а не по памтење. Референцата покрива и листи со крајни точки и однесувањето при освежување на DNS.
Вчитувањето мора да работи пред overlay
DNS име во картата мора да се реши преку резолверот што домаќинот го има пред да постои каков било тунел, односно обичниот системски резолвер. Тестирај го тоа од истата машина, при подигање, со запрен overlay. Име што се решава само преку сопствениот DNS на overlay не може да го вчита overlay. Истиот тест важи за рутата: правило на огнениот ѕид што дозволува overlay, но не и првата UDP размена, го блокира почетниот пакет.
Провери ја портата со UDP алатка наместо да претпоставиш дека е отворена. Потврди дека секое префрлање на порта на патот цели кон точниот внатрешен домаќин и дека постои повратен пат. Ако името на домаќинот се решава на неколку адреси, тестирај ја секоја, бидејќи клиентот може да избере адреса што никогаш не си ја проверил.
Статичните записи се бираат директно и никогаш не прашуваат светилник. Затоа дефектот овде изгледа како обичен тајмаут без ниту еден партнер.
Што се случува по првото ракување
Штом домаќин стигне до светилник, дознава за партнерите и нивните достапни адреси без повеќе рачни записи. Домаќините што се преместиле од последното поврзување стануваат откриени преку тој канал. Тоа е наградата за држење на рачната карта мала.
Домаќините можат и да ги објавуваат сопствените дополнителни достапни адреси, и така партнерот зад позната јавна адреса им помага на другите да го најдат. Тие објави се учат, не се пишуваат во статичната карта.
Однесувањето при освежување е важно за крајните точки напишани како DNS имиња, бидејќи решената адреса може да се смени додека процесот продолжува да работи. Поставките на Nebula контролираат како се случуваат тие барања, вклучително кој резолвер се користи, затоа читај ги наместо да претпоставуваш системската стандардна вредност. На домаќин чиј резолвер се менува кога ќе се подигне тунел, погрешната поставка може да го претвори работното вчитување во име што престанува да се решава среде сесија. Прицврстувањето на барањето на стабилен резолвер често е разликата меѓу сигурен overlay и таков што прекинува.
Кога откривањето работи, а еден партнер не
Ако светилниците се достапни и повеќето партнери се поврзуваат, вчитувањето не е проблемот. Останатиот пар или не може да најде употреблив пат еден до друг, или пропаѓа над достапноста. Додавањето уште еден запис на адресата на светилникот не може да го поправи ниту еден од двата случаи.
Провери го парот пред да ја уредиш картата на која веќе се потпира сѐ друго. Промената на картата му пречи на секој домаќин, затоа тоа е последното нешто што се допира, а не првото.
Почни со сертификати од истиот орган, бидејќи одбиено ракување од далеку може да изгледа како недостапен партнер. Потоа провери дали парот може да воспостави директен пат и дали е конфигуриран релеј за мрежи што одбиваат директен сообраќај. Релејот додава скок и зависност, но тоа е поддржан одговор, и поправањето на патот на парот е друга задача од поправањето на откривањето.