Skip to content

DnsPolicy

Package: @alchemy-unifi/network@0.1.2-nightly.20261027100339.gc70dd7b.0 · Source: DnsPolicy.ts

The gateway’s local DNS: a record (A_RECORD, AAAA_RECORD, CNAME_RECORD, MX_RECORD, SRV_RECORD, TXT_RECORD), or a FORWARD_DOMAIN rule that sends a domain’s queries to another DNS server.

DNS policies have no name, so existing ones are adopted with --adopt by type and domain. A domain may have several records of one type; then the one whose other props match too is adopted. Changing type updates the policy in place.

An A record

import * as UnifiNetwork from "@alchemy-unifi/network";
import * as Alchemy from "alchemy";
import * as Effect from "effect/Effect";
export default Alchemy.Stack(
"HomeNetwork",
{ providers: UnifiNetwork.providers(), state: UnifiNetwork.state() },
Effect.gen(function* () {
yield* UnifiNetwork.DnsPolicy("home-assistant", {
type: "A_RECORD",
enabled: true,
domain: "ha.home.arpa",
ipv4Address: "192.168.2.20",
ttlSeconds: 300,
});
}),
);

A CNAME

import * as UnifiNetwork from "@alchemy-unifi/network";
import * as Effect from "effect/Effect";
export const files = UnifiNetwork.DnsPolicy("files", {
type: "CNAME_RECORD",
enabled: true,
domain: "files.home.arpa",
targetDomain: "nas.home.arpa",
ttlSeconds: 300,
}).pipe(Effect.asVoid);

Send a domain’s queries to another server

import * as UnifiNetwork from "@alchemy-unifi/network";
import * as Effect from "effect/Effect";
export const lab = UnifiNetwork.DnsPolicy("lab", {
type: "FORWARD_DOMAIN",
enabled: true,
domain: "lab.home.arpa",
ipAddress: "192.168.10.53",
}).pipe(Effect.asVoid);