Vraag netplan: nameservers in netplan yaml. Welk effect?


Wat is het effect van het veld nameservers / adressen in het yaml-configuratiebestand?

Elke toepassing die ik heb geprobeerd gebruikt de /etc/resolv.conf-naamservers. Dit gebeurt zelfs met resolvconf gestopt.

Dit gebruikt systemd als resolver. Geen fouten bij genereren of toepassen.

RESOLUTIE

Dank aan allen die hebben gereageerd. De netplan config yaml configureert de nameservers nadat ik dit heb gedaan:

  1. Purge resolvconf;
  2. Plaats mijn LAN DNS als doorstuurserver in /etc/bind/named.conf.options;
  3. Vervang de /etc/resolv.conf link door een statisch bestand als

    zoeken nameserver 127.0.0.53

En dat werkt. Ik vind dat ik de zoekopdracht moet opnemen in het resolv.conf, ook al heb ik een zoekveld in mijn netplan config yaml. Puzzel voor nog een dag.


2
2018-05-11 13:03


oorsprong


Wat voor mij niet duidelijk is aan de hand van uw vraag, is of u problemen ondervindt bij het opzoeken van namen of als u alleen vraagt ​​om het systeem beter te begrijpen. - slangasek
@slangesk Begrijp het systeem en hoop het correct te configureren. DNS werkt. Ik heb een LAN-DNS die naar google-servers doorstuurt en alles is in orde, maar ik vermoed dat er iets mis is omdat de nameservers in netplan config genegeerd lijken te worden. - Stephen Boston
Waarom denk je dat de nameservers worden genegeerd? Ze zouden moeten verschijnen in de uitvoer van 'systemd-resolve --status'. - slangasek
@slangasek dig heeft het door Netplan geconfigureerde NS niet gebruikt. denk dat het kwam door het draaien van resolvconf? Dit proces schreef naar de /etc/resolv.conf, waarbij de inhoud van de sjabloonbestanden werd overgenomen in de resolvconf config-map. Van wat Chilli zegt, denk ik dat ik in eerste instantie in de war kon zijn geraakt door sommige gecachte waarden. Dit komt allemaal omdat ik recentelijk een LAN DNS heb opgezet en voor mij op nieuw terrein rondloop. Ik geloof niet dat mijn anekdotes op dit moment een goede basis vormen voor zinvolle ontdekkingen. Ik moet nog wat modderen. - Stephen Boston
"graaf heeft niet gebruikt" - ik ben onduidelijk wat je hier bedoelt. In de standaardconfiguratie wordt systemd-resolve uitgevoerd, en /etc/resolv.conf wijst naar een lokale resolver op 127.0.0.53, dus als je 'dig' draait zonder een nameserver op te geven, gebruik je deze lokale resolver. De lokale resolver moet op zijn beurt worden geconfigureerd om naar de door netplan geconfigureerde naamservers te kijken als de upstreamversie. Misschien beantwoordt dit je vraag? Merk op dat resolvconf aanwezig kan zijn, maar het ontwerp hier is hetzelfde met of zonder resolvconf (dat niet meer standaard wordt geïnstalleerd in 18.04 nieuwe installaties). - slangasek


antwoorden:


OPMERKING: dit kan informatie van dupliceren chili555echter, in overleg met hen, stelde de bovengenoemde persoon voor een 'gezaghebbend' antwoord te plaatsen omdat ik eerder met dit exacte probleem / vraag heb gewerkt.

Het gedrag getuigd in uw omgeving is het systemd-resolved equivalent van wat dnsmasq op voor 18.04 was aan het doen. De netplan updates zijn van invloed op de naamservers systemd-resolved gebruik voor zijn lookups. Dit wordt gedetailleerd beschreven in het laatste deel van het antwoord.

Maar eerst, voor de nieuwsgierigen, enige geschiedenis over dit gedrag, en hoe het verschilt van de 'oudere' Ubuntu-versies die gebruik maken van Network Manager en dnsmasq. (Voel je vrij om voorbij het volgende gedeelte van dit antwoord te gaan als je alleen de 18.04-gerelateerde dingen wilt)


Vóór 18.04: dnsmasq als een lokale caching-resolver

Vóór 18.04, wanneer je de GUI Ubuntu gebruikte, zou het installeren dnsmasq naast netwerkbeheerder. De Network Manager-integratie met dnsmasq zou het updaten dnsmasq lijst met 'next hop'-servers (upstream DNS-servers) waar een query naartoe kan worden gestuurd.

Daarom een ​​DNS-zoekopdracht voor google.com zou passeren van welke toepassing de resolutie ook vraagt, in dnsmasq, en als dnsmasq kent het IP-adres niet of heeft een vermelding in het cachegeheugen verlopen, zou vervolgens het DNS-verzoek doorgeven aan elke upstream DNS-server (voor dit voorbeeld 8.8.8.8 of 8.8.4.4). U zou dan Network Manager of de dnsmasq config om te zien waar de 'upstream' DNS-servers waren.

Dit is typisch gedrag in een grafische Ubuntu die is geïnstalleerd vanaf de desktop-ISO's.

De standaardinstallatie van de server-ISO's volgde de traditionele "update" /etc/resolv.conf"methode via de resolvconf pakket en gebruikt /etc/resolv.conf rechtstreeks in plaats van communiceren via dnsmasq.


18.04: netplan, en systemd-resolved

Met 18.04 is het standaard DNS-systeem systemd-resolved. Dit werkt als het dnsmasq van wel, maar dit geldt momenteel zowel voor Desktop- als Server ISO-installaties. Het kan ook worden geïntegreerd met Network Manager (gebruikt in de GUI-omgevingen voor het beheren van wifi en dergelijke) en met Netplan (waarmee ethernets beter worden afgehandeld)

systemd-resolved wordt overgedragen van netplande lijst met DNS-servers waarnaar zoekopdrachten moeten worden verzonden. Daarom, met behulp van hetzelfde voorbeeld van hierboven, een DNS-vraag naar google.com zou passeren systemd-resolvedde stub resolver die de zoekwaarde in de cache zou retourneren of door zou geven aan upstream DNS-servers.

Dit emuleert het standaardgedrag van dnsmasq, maar voegt ook wat extra opzoekafhandeling toe voor hoe 'localhost' en andere lokaal gerelateerde adressen kunnen worden opgevraagd.

Met NetPlan of Network Manager kunt u de lijst met upstream-DNS-servers verkrijgen systemd-resolved met het volgende commando:

systemd-resolve --status

wat je een hoop output zal geven. Het relevante gedeelte ziet er als volgt uit (overgenomen uit chili555antwoord voor opportuniteit):

DNS Servers: 8.8.8.8
             8.8.4.4
             2600:1700:5aa0:830::1

3
2018-05-11 16:27



Ik gebruik 18.04. Ik mis iets. Vanuit uw bericht begrijp ik dat met netplan naamomzetting wordt uitgevoerd door systemd-opgelost met behulp van de configuratie in de netplan config (het yaml-bestand dat wordt gebruikt door netplan genereren en toepassen). Met behulp van deze kennis heb ik resolvconf uitgeschakeld en opnieuw opgestart. Ik denk dat ik resolvconf uit de weg moet ruimen. (Ik had resolvconf geïnstalleerd omdat het niet standaard was in 18.04.) Systemd-resolve --status geeft een aantal in-addr-arpa IP's weer maar heeft geen veld voor een DNS-server of domein. Dus ... Hebben we resolvconf nodig? Of zoiets? - Stephen Boston
@StephenBoston Zonder de specifieke configuratie in uw systeem en de specifieke uitvoer van uw systeem te zien systemd-resolve --status waarnaar u verwijst, ik kan u geen echt antwoord geven. Overwegen deze voorbeelduitvoer hoewel vanuit een van mijn LXD-containers - DNS-naamservers zijn gebaseerd op links - op regel 36 van die uitvoer worden de DNS-naamservers gestart ... - Thomas Ward♦
Er is nog een andere kwestie die ik hier zal noemen, maar waarvan ik denk dat het waarschijnlijk een andere vraag is. Je hebt misschien enig inzicht. Dit is dat het zoekveld in de netplan-yaml geen effect heeft. Ik moet dat invoeren in het resolv.conf. - Stephen Boston
Mijn door Netplan geconfigureerde naamservers verschijnen op de systemd-oplossen uitvoer met resolvconf uitgeschakeld. Ik heb toegang via die nameservers. Ik vind echter dat ik /etc/resolv.conf moet maken en nameserver 127.0.0.53 moet zetten. Ik vermoed dat dat verkeerd is. Het bestand moet worden gegenereerd, waar? - Stephen Boston


Disclaimer: dit is een goed opgeleide gok en geen canoniek, gedocumenteerd antwoord.

Elke toepassing die ik heb geprobeerd gebruikt de /etc/resolv.conf-naamservers.

Op mijn 18.04-systeem zegt de un-commented, that is, actually operational, sectie van /etc/resolv.conf:

nameserver 127.0.0.53

Dat is naar mijn mening een symptoom van het gebruik van dnsmasq, het systeem dat DNS-informatie in de cache opslaat. Dat betekent, naar ik meen, eerst in de lokale cache kijken, voordat we externe nameservers vragen.

Maar de lokale cache zal geen nameserver-informatie bevatten over een website die nog nooit eerder is bezocht. In dat geval gebruikt het systeem gedeclareerde externe DNS-naamservers. Deze kunnen worden gedeclareerd in / etc / network / interfaces in oudere systemen; in /etc/netplan/*.yaml in nieuwere systemen of, in bijna alle desktopinstallaties, in Network Manager.

In feite vertelt /etc/resolv.conf ons hoe de externe nameservers kunnen worden gevonden.

Voer "systemd-resolve --status" uit om details te bekijken over de uplink DNS-servers die momenteel in gebruik zijn.

Op mijn systeem zegt het rapport gedeeltelijk:

DNS Servers: 8.8.8.8
             8.8.4.4
             2600:1700:5aa0:830::1

Kortom, ik geloof dat DNS-naamservers in netplan worden gedeclareerd om het systeem te laten weten waar ze moeten zoeken als de DNS-informatie niet in de lokale cache wordt gevonden.


2
2018-05-11 14:33



systemd-resolved, niet dnsmasq. systemd-resolved voert een 'stub' DNS-resolver uit die veel van wat doet dnsmasq heeft in pre-18.04 DNS-resoluties gebruikt als de 'tussenliggende' server die dan lookups doorgeeft aan de upstream DNS-servers die zijn gedefinieerd in netwerkconfigs of DHCP. Anders dan dat, de rest van deze informatie is vrij nauwkeuriger / ter plaatse. (Ik heb een paar 18.04-servers en heb dit behoorlijk zwaar ingegraven) - Thomas Ward♦