Add VPN flag for DNS and update TLSA record for mail

This commit is contained in:
Tobias Reisinger 2025-04-18 13:00:00 +02:00
parent 32e42626a1
commit a7a8d17186
Signed by: serguzim
GPG key ID: 13AD60C237A28DFE
6 changed files with 23 additions and 17 deletions

View file

@ -12,7 +12,7 @@ function mx_default(dkim) {
TXT("_dmarc", "v=DMARC1; p=quarantine; rua=mailto:dmarcreports@serguzim.me; ruf=mailto:dmarcreports@serguzim.me; rf=afrf; sp=quarantine; fo=1; pct=100; ri=604800; adkim=r; aspf=r"), TXT("_dmarc", "v=DMARC1; p=quarantine; rua=mailto:dmarcreports@serguzim.me; ruf=mailto:dmarcreports@serguzim.me; rf=afrf; sp=quarantine; fo=1; pct=100; ri=604800; adkim=r; aspf=r"),
TXT("dkim._domainkey", "v=DKIM1; k=rsa; t=s; s=email; p=" + dkim), TXT("dkim._domainkey", "v=DKIM1; k=rsa; t=s; s=email; p=" + dkim),
TLSA("_25._tcp", 3, 1, 1, "e66a608a3ec459bda7fb1f2d500b8abeb78f2910f26641204b6bc454b8aa2a49"), TLSA("_25._tcp", 3, 1, 1, "70143145ab67680a3b61fe2d0eb63319625fa086f845cce59afdbf1dad79e561"),
MX("@", 10, "mail.serguzim.me."), MX("@", 10, "mail.serguzim.me."),
MX("*", 10, "mail.serguzim.me."), MX("*", 10, "mail.serguzim.me."),

View file

@ -1,11 +1,12 @@
function service(target, domain, host, alias) { function service(target, domain, host, alias, vpn) {
return { return {
target: target, target: target,
domain: domain, domain: domain,
host: hosts[host], host: hosts[host],
alias: alias, alias: alias,
vpn: vpn,
record: function() { record: function() {
return my_host_record(this.target, this.resolve_host()); return my_host_record(this.target, this.resolve_host(), this.vpn);
}, },
resolve_host: function() { resolve_host: function() {
if (this.alias) { if (this.alias) {
@ -27,18 +28,18 @@ function collect_services(domain) {
return result; return result;
} }
function my_host_record(target, host) { function my_host_record(target, host, vpn) {
switch (target) { if (vpn) {
case "db": return [
return [ A(target, host.ipv4_address_vpn),
A(target, host.ipv4_address_vpn), AAAA(target, host.ipv6_address_vpn)
AAAA(target, host.ipv6_address_vpn) ];
]; }
default: else {
return [ return [
A(target, host.ipv4_address), A(target, host.ipv4_address),
AAAA(target, host.ipv6_address) AAAA(target, host.ipv6_address)
]; ];
} }
} }

View file

@ -15,7 +15,7 @@ var DSP_OVH = NewDnsProvider("ovh");
var services = {}; var services = {};
for (var key in services_json) { for (var key in services_json) {
var s = services_json[key]; var s = services_json[key];
services[key] = service(s.target, s.domain, s.host, s.alias); services[key] = service(s.target, s.domain, s.host, s.alias, s.vpn);
} }
@ -61,11 +61,13 @@ D("serguzim.me", REG_OVH, DnsProvider(DSP_OVH),
all_defaults("serguzim.me", true), all_defaults("serguzim.me", true),
TXT("direct", "v=spf1 mx -all"), TXT("direct", "v=spf1 mx -all"),
TLSA("_25._tcp.mail", 3, 1, 1, "e66a608a3ec459bda7fb1f2d500b8abeb78f2910f26641204b6bc454b8aa2a49"), TLSA("_25._tcp.mail", 3, 1, 1, "70143145ab67680a3b61fe2d0eb63319625fa086f845cce59afdbf1dad79e561"),
acme_challenge("auth", "18a42983-3d19-4c17-8213-fc275a8be721"), acme_challenge("auth", "18a42983-3d19-4c17-8213-fc275a8be721"),
acme_challenge("db", "ca2c86c0-ff3d-458a-89e0-11bcfd2543e4"), acme_challenge("db", "ca2c86c0-ff3d-458a-89e0-11bcfd2543e4"),
acme_challenge("paas", "92924f7c-0859-4941-9e3d-2ecedfb21c1b"), acme_challenge("paas", "92924f7c-0859-4941-9e3d-2ecedfb21c1b"),
acme_challenge("alloy", "92924f7c-0859-4941-9e3d-2ecedfb21c1b"),
acme_challenge("mimir", "92924f7c-0859-4941-9e3d-2ecedfb21c1b"),
verify_amazon_ses(dkim_ses["serguzim.me"]), verify_amazon_ses(dkim_ses["serguzim.me"]),

View file

@ -71,6 +71,7 @@ class FilterModule(object):
result[name] = { result[name] = {
"target": ".".join(target_parts), "target": ".".join(target_parts),
"domain": ".".join(domain_parts[-2:]), "domain": ".".join(domain_parts[-2:]),
"vpn": dns.get("vpn", False),
} }
if dns.get("alias"): if dns.get("alias"):

View file

@ -502,6 +502,7 @@ services = {
host = "node001" host = "node001"
dns = [{ dns = [{
domain = "db.serguzim.me" domain = "db.serguzim.me"
vpn = true
}] }]
backup = [{ backup = [{
name = "postgresql" name = "postgresql"

View file

@ -139,6 +139,7 @@ variable "services" {
domain = string domain = string
name = optional(string) name = optional(string)
alias = optional(string) alias = optional(string)
vpn = optional(bool)
}))) })))
backup = optional(list(object({ backup = optional(list(object({
name = string name = string