De instellingen static_host_map en advertise_addrs plaatsen beide een adres voor een peer, en ze beantwoorden verschillende vragen. De ene is een lokaal bestand dat een overlay-adres en het te kiezen underlay-eindpunt vermeldt. De andere is een host die zijn vuurtorens vertelt welke extra eindpunten hem kunnen bereiken. Het eigendom is het echte verschil: de kaart wordt onderhouden door iedereen die hem nodig heeft, en de advertentie door de host zelf.

Beslis op wie de informatie bezit

SettingWhere it livesBest for
static_host_mapEvery peer that needs the entryBootstrap endpoints, deliberately fixed paths
advertise_addrsThe host's own configEndpoints the host cannot otherwise discover

Elke veranderende peer in het statische bestand van elke peer is onderhoudswerk dat groeit met het kwadraat van de vloot. Dat is de praktische reden om naar de andere instelling te grijpen wanneer de host zelf het antwoord kent.

De eigendomsvraag voorspelt ook wat er gebeurt als een adres verandert. Met een statische kaart moet iemand elke peer onthouden die de oude vermelding heeft. Met een advertentie publiceert de host het nieuwe eindpunt en zijn vuurtorens geven het door, zodat de verandering lokaal blijft op de machine die is verhuisd.

Bootstrap heeft nog steeds statische vermeldingen nodig

Een client moet minstens één vuurtoren bereiken voordat hij iemand naar andere peers kan vragen. Die eerste sprong kan niet uit ontdekking komen, dus komt hij uit een statische vermelding in de configuratie van de client. Zorg dat die ene vermelding klopt en de rest van de overlay kan worden geleerd.

Een kaartvermelding koppelt een Nebula-adres aan een of meer bereikbare IP- of DNS-eindpunten en poorten. De vuurtorens daar houden is normaal; elke peer daar houden is het patroon dat slecht veroudert, omdat elke nieuwe peer betekent dat je bestanden bewerkt op machines die je misschien niet beheert. Houd de lijst kort genoeg dat een mens hem nog kan verifiëren door hem te lezen.

Adverteer wanneer de host het eindpunt kent

Een host achter portforwarding is bereikbaar op een openbaar adres dat niet aan een van zijn eigen interfaces is toegewezen. Hij kan dat adres niet ontdekken door naar zichzelf te kijken. advertise_addrs laat hem het eindpunt via zijn vuurtorens publiceren zodat andere peers een pad leren dat echt werkt. De instelling bestaat juist omdat de host de enige partij is die weet dat de mapping is gemaakt.

Gebruik het adres en de poort die andere peers echt kunnen bereiken. Dezelfde redenering geldt voor een host met meerdere netwerkpaden, waar één pad beter is voor peers op een bepaald netwerk. Adverteren is een uitspraak over de underlay, geen verzoek om iets. Wanneer de mapping verandert, werk de advertentie bij op de host en laat ontdekking hem dragen, in plaats van statische bestanden over de hele vloot te bewerken.

Adverteren is geen bereikbaarheid

Het publiceren van een eindpunt maakt niet de doorstuurregel van de router, opent geen firewall stroomopwaarts en zorgt er niet voor dat een DNS-naam wordt opgelost. Dat zijn aparte stukken werk, en een correcte advertentie met een ontbrekende portforwarding levert precies de storing op die je probeerde te verhelpen. Adverteren is een bewering over bereikbaarheid, geen mechanisme dat die vestigt.

Controleer het pad van buiten voordat je ontdekking de schuld geeft. Een peer die het eindpunt leert maar geen handshake kan voltooien, heeft een routing- of filterprobleem op de underlay, en hetzelfde adres in beide instellingen herhalen zal dat niet veranderen.

Houd het overlay-adres gescheiden van het eindpunt

Het certificaat van de node identificeert zijn Nebula-adres. De geadverteerde adressen horen bij het onderliggende netwerk, en ze mogen veranderen zonder het certificaat aan te raken. Een nieuw certificaat uitgeven met een ander overlay-IP is een andere bewerking, met zijn eigen gevolgen voor elke vertrouwensrelatie die de oude vastlegde. Houd de twee wijzigingen gescheiden in het runbook, anders wordt een eindpuntverhuizing geregistreerd als een heruitgifte.

Wanneer de triage vastloopt, scheid de twee lagen expliciet: geeft ontdekking het verwachte eindpunt terug, en bereikt een handshake het? Als ontdekking klopt en pakketten falen, zit het probleem onder de overlay. Als ontdekking fout is, zit het probleem in de kaart of de advertentie, en de oplossing hoort daar.

Gerelateerde artikelen