Quelle
net/lab/hosts/*.nix (Normalisierung zentral in
net/lab/hosts.nix) → net/lab/dns-records.nix →
gemerged in net/dns/groupdir.de.nix
(staticRecords ++ labRecords). Beide bauen Records
über die Konstruktoren aus net/dns/records.nix
(mkA, mkMultiA,
mkReverseProxy, mkRecord). Daraus:
öffentlich (tofu/dns) und intern (lab-gateway, Ableitung
in net/dns/internal-view.nix).
scope
public → nur Hetzner
internal → nur internes DNS (Lab-Default)
both → beides
target (intern, A)
direct → A = Host-IP / value
reverse-proxy → A = Gateway-IP + Caddy → upstream
Schablonen
# Lab (net/lab/hosts/grafana.nix)
{
name = "grafana";
ipv4 = "192.168.200.30";
dns = {
name = "grafana.lab";
target = "reverse-proxy";
upstream = "http://192.168.200.30:3000";
};
}
# Lab direct, mehrere Namen (net/lab/hosts/dc1.nix)
{
name = "dc1";
ipv4 = "192.168.200.9";
dns.names = [ "dc1.lab" "ldap.lab" ];
}
# Öffentlich (Zone staticRecords, via net/dns/records.nix Konstruktor)
(mkA {
name = "vpn";
value = "x.x.x.x";
scope = "public";
})
Sonstiges
- Mehrere IPs:
dns.values = [ ... ] -
Zone / Gateway-IP: Felder
zone,internalReverseProxyAddressoben innet/dns/groupdir.de.nix -
Belegung:
just lab-ipam— keine doppelten*.lab-A in der Zone