Puncte:0

Cum rezolvi atât zonele publice, cât și cele private într-un DNS Split-Horizon (folosind GCP Cloud DNS)?

drapel tr

Folosim GCP și Cloud DNS pentru a ne gestiona domeniul și încerc să rezolv aceste cazuri de utilizare:

  1. Aveți înregistrări private pentru lucruri precum baze de date care pot fi rezolvate numai în rețeaua companiei (VPC-ul nostru).
  2. Ignorați înregistrările publice cu IP-uri private pentru rutare alternativă în rețeaua companiei.
  3. Să fie capabil să emită provocări DNS01 și să rezolve înregistrările în rețeaua noastră și în mod public. Avem nevoie de acest lucru datorită modului în care funcționează cert-manager (pe care îl folosim pentru a emite certificate cu letsencrypt).

Am încercat să rezolv acest lucru cu o zonă publică și privată (AKA, split-horizon DNS), totuși, această soluție rezolvă doar cazurile de utilizare 1 și 2. Și rezolvă doar cazul de utilizare 2 dacă ne asigurăm că zona privată are o copie a toate înregistrările din zona publică (dacă nu există un omolog privat).

Cazul de utilizare 3 nu este îndeplinit cu această soluție, deoarece serverul nostru cert-manager creează înregistrările în zona publică și apoi nu le poate rezolva în zona publică. Datorită specificului configurației noastre, personalizarea certificat-manager pentru a rezolva ambele zone printr-o configurație locală nu este ideală. De asemenea, ar fi dificil să se creeze înregistrările pe ambele zone, deci din nou nu este soluția ideală.

Ceea ce aș dori este ca zona privată să trimită cereri către cea publică dacă nu are o înregistrare pentru o anumită solicitare. Există vreo modalitate de a face acest lucru, în special folosind GCP Cloud DNS?

Idealul nslookup -> zonă privată -> zonă publică

Momentan avem nslookup -> zonă privată -> eroare (NXDOMAIN) dacă nu există înregistrare

De exemplu,

# În timp ce sunt pe laptop
> nslookup ws1.example.com
...
Nume: ws1.example.com
Adresă: 34.111.111.111 # IP public pentru server web

# În timpul rețelei GCP
> nslookup db.example.com
...
Nume: db.example.com
Adresă: 10.10.0.2 # IP privată pentru o bază de date
> nslookup ws1.example.com
...
Nume: ws1.example.com
Adresă: 10.0.0.10 # IP privat (din zona privată) pentru server web

Acest lucru funcționează bine pentru cazurile de utilizare 1 și 2, dar când încercăm să rezolvăm o înregistrare care există doar în zona publică...

# În timp ce sunt pe laptop
> nslookup ws1.example.com
...
Nume: ws1.example.com
Adresă: 34.111.111.111 # IP public pentru server web
> nslookup ws2.example.com # Avem această înregistrare doar în zona publică
...
Nume: ws2.example.com
Adresă: 34.111.111.112 # IP public pentru alt server web

# În timp ce sunteți în VPC-ul GCP
> nslookup ws1.example.com
...
Nume: ws1.example.com
Adresă: 10.0.0.1 # IP privat (override) pentru server web
> nslookup ws2.example.com # Avem această înregistrare doar în zona publică
...
** serverul nu poate găsi ws2.example.com: NXDOMAIN # Nu se rezolvă. Ar trebui să se uite la zona privată apoi publică și să rezolve la 34.111.111.112.

Orice sugestii?

Ca o soluție, deocamdată, am trecut la utilizarea provocărilor HTTP01 pentru cert-manager, dar am prefera să folosim DNS01 dacă este posibil.

Puncte:2
drapel cn

Dacă exemplu.com este atât o zonă privată, cât și o zonă publică, atunci trebuie să aveți înregistrări de resurse pentru ws2 atât în ​​zona publică cât și în cea privată. Nu există failover de la privat la public. Fiecare zonă trebuie să fie autoritar.

Cheia pentru înțelegerea problemei dvs.: interogarea este efectuată la exemplu.com. Dacă zona returnează NXDOMAIN, acesta este sfârșitul căutării. DNS nu se mută apoi pe alt server pentru a solicita un răspuns diferit.

James avatar
drapel tr
Știu că există o modalitate de a configura un server pentru a utiliza DNS-uri prin configurație locală, nu există un truc ciudat cu un DNS proxy care să poată face acest lucru? Sau folosiți zone de politică de răspuns (RPZ) sau alte funcții DNS noi pentru a realiza acest lucru?
John Hanley avatar
drapel cn
@James - 1/2) În ceea ce privește politicile de răspuns DNS Google Cloud, nu sunt sigur pentru DNS divizat. Ar trebui să creați o regulă de trecere. Cu toate acestea, nu cunosc o opțiune de a atașa o politică de răspuns într-o zonă **privată**, astfel încât o interogare pentru **ws2.example.com** să ocolească zona privată și să fie trimisă în schimb către zona publică. În acest caz, nu ați folosi DNS spit horizon. Veți crea o politică de răspuns pentru fiecare zonă în care doriți un răspuns diferit.
John Hanley avatar
drapel cn
@James - 2/2) Pentru cazul dvs. de utilizare, care este mai ușor de gestionat? Creați politici de răspuns pentru fiecare zonă în care doriți să fie modificate rezultate sau creați înregistrări de resurse în zona privată? Nu cred că politicile de răspuns vă vor oferi magia pe care o căutați. Va trebui să configurați ceva fie în zonă, fie printr-o politică.
James avatar
drapel tr
Bine, mulțumesc John. Voi reevalua cazurile noastre de utilizare. S-ar putea să trebuiască să acceptăm această limitare și să trecem la HTTP01 pentru cert-manager.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.