Development

This commit is contained in:
Matthew Grotke 2026-05-31 02:17:25 -04:00
parent 84118a4c2b
commit 916d238602
9 changed files with 51 additions and 51 deletions

View file

@ -77,7 +77,7 @@ Edit the `vlans` array to match your network topology. For each VLAN:
"listen_port": 51820,
"server_endpoint": "vpn.example.com",
"domain": "local",
"explicit_overrides": { "gateway": "", "dns_server": "", "mtu": "" }
"explicit_overrides": { "gateway": "", "dns_servers": "", "mtu": "" }
},
"peers": [],
"port_wrangling": []

View file

@ -298,8 +298,8 @@
"domain": "lan",
"explicit_overrides": {
"gateway": "",
"dns_server": "",
"ntp_server": ""
"dns_servers": "",
"ntp_servers": ""
}
},
"reservations": [
@ -393,8 +393,8 @@
"domain": "lan",
"explicit_overrides": {
"gateway": "",
"dns_server": "",
"ntp_server": ""
"dns_servers": "",
"ntp_servers": ""
}
},
"reservations": [
@ -498,8 +498,8 @@
"domain": "lan",
"explicit_overrides": {
"gateway": "",
"dns_server": "",
"ntp_server": ""
"dns_servers": "",
"ntp_servers": ""
}
},
"reservations": [
@ -562,8 +562,8 @@
"domain": "lan",
"explicit_overrides": {
"gateway": "",
"dns_server": "",
"ntp_server": ""
"dns_servers": "",
"ntp_servers": ""
}
},
"reservations": [
@ -638,7 +638,7 @@
"domain": "lan",
"explicit_overrides": {
"gateway": "",
"dns_server": "",
"dns_servers": "",
"mtu": ""
}
},

View file

@ -195,11 +195,11 @@ def resolve_vlan_options(vlan):
overrides = vpi.get("explicit_overrides", {})
default = lowest_quartet_ip(vlan) or str(next(network_for(vlan).hosts()))
gateway = overrides.get("gateway", "") or default
dns = overrides.get("dns_server", "") or gateway
dns = overrides.get("dns_servers", "") or gateway
return {
"gateway": gateway,
"dns_server": dns,
"ntp_server": None,
"dns_servers": dns,
"ntp_servers": None,
}
overrides = vlan.get("dhcp_information", {}).get("explicit_overrides", {})
default = lowest_quartet_ip(vlan)
@ -210,8 +210,8 @@ def resolve_vlan_options(vlan):
return v or default
return {
"gateway": overrides.get("gateway", "") or default,
"dns_server": _resolve("dns_server"),
"ntp_server": _resolve("ntp_server"),
"dns_servers": _resolve("dns_servers"),
"ntp_servers": _resolve("ntp_servers"),
}
def is_physical(vlan):
@ -481,8 +481,8 @@ def build_vlan_dnsmasq_conf(vlan, data, iface):
line(f"domain={d.get('domain', 'local')}")
line()
line(f"dhcp-option=tag:{name},option:router,{gateway}")
line(f"dhcp-option=tag:{name},option:dns-server,{opts['dns_server']}")
line(f"dhcp-option=tag:{name},option:ntp-server,{opts['ntp_server']}")
line(f"dhcp-option=tag:{name},option:dns-server,{opts['dns_servers']}")
line(f"dhcp-option=tag:{name},option:ntp-server,{opts['ntp_servers']}")
line()
identity_hosts = [s for s in vlan.get("server_identities", []) if s.get("hostname")]

View file

@ -122,7 +122,7 @@ def build_client_conf(vlan, peer_ip, private_key, server_pub, split_tunnel):
default = str(min((ipaddress.IPv4Address(ip) for ip in ident_ips),
key=lambda x: x.packed[-1])) if ident_ips else str(next(network.hosts()))
gateway = overrides.get("gateway") or default
dns = overrides.get("dns_server") or gateway
dns = overrides.get("dns_servers") or gateway
prefix = network.prefixlen
mtu = overrides.get("mtu", "")
endpoint = info.get("server_endpoint", "")

View file

@ -460,7 +460,7 @@ def validate_config(data):
f"any server_identity IP. Must be one of: "
f"{[str(ip) for ip in identity_ips]}."
)
dns = eo.get("dns_server", "")
dns = eo.get("dns_servers", "")
if dns and not ipv4(dns):
errors.append(f"{label}: vpn_information.explicit_overrides.dns_server '{dns}' is not a valid IPv4 address.")
mtu = eo.get("mtu", "")
@ -564,14 +564,14 @@ def validate_config(data):
f"any server_identity IP. Must be one of: "
f"{[str(ip) for ip in identity_ips]}."
)
dns = eo.get("dns_server", "")
dns = eo.get("dns_servers", "")
if dns:
for _ip in (dns if isinstance(dns, list) else [dns]):
check_ip("explicit_overrides.dns_server", _ip)
ntp = eo.get("ntp_server", "")
check_ip("explicit_overrides.dns_servers", _ip)
ntp = eo.get("ntp_servers", "")
if ntp:
for _ip in (ntp if isinstance(ntp, list) else [ntp]):
check_ip("explicit_overrides.ntp_server", _ip)
check_ip("explicit_overrides.ntp_servers", _ip)
pool_start = check_ip("dynamic_pool_start", d["dynamic_pool_start"])
pool_end = check_ip("dynamic_pool_end", d["dynamic_pool_end"])