mob next [ci-skip] [ci skip] [skip ci]

lastFile:modules/clan/gw-router/dns-dhcp.nix
This commit is contained in:
2026-08-07 17:50:04 +07:00
parent 62ac5c7912
commit aef99a7ff3
2 changed files with 82 additions and 0 deletions
+1
View File
@@ -304,6 +304,7 @@
imports = [
./ipv6.nix
./firewall.nix
./pppoe.nix
./crowdsec.nix
];
+81
View File
@@ -0,0 +1,81 @@
{
roles.default.perInstance = { settings, ... }: {
nixosModule =
{
lib,
...
}:
let
dhcpVlans = lib.filterAttrs (_: vlan: vlan.dhcp.enable) settings.vlans;
in
{
services.kea.dhcp4 = {
enable = true;
settings = {
interfaces-config.interfaces = lib.mapAttrsToList (name: _: "vlan-${name}") dhcpVlans;
lease-database = {
type = "memfile";
persist = true;
name = "/var/lib/kea/dhcp4.leases";
};
valid-lifetime = 86400;
subnet4 = lib.mapAttrsToList (name: vlan: {
id = vlan.id;
subnet = vlan.subnet;
interface = "vlan-${name}";
valid-lifetime = vlan.dhcp.leaseTime;
pools = [ { pool = "${vlan.dhcp.pool.from} - ${vlan.dhcp.pool.to}"; } ];
reservations = lib.mapAttrsToList (host: res: {
hostname = host;
hw-address = res.hwAddress;
ip-address = res.ipAddress;
}) vlan.dhcp.reservations;
option-data = [
{
name = "routers";
data = vlan.address;
}
{
name = "domain-name-servers";
data = vlan.address;
}
];
}) dhcpVlans;
};
};
services.blocky = {
enable = true;
settings = {
ports = {
dns = 53;
http = 4000;
};
upstreams.groups.default = [
"9.9.9.9"
"149.112.112.112"
"2620:fe::fe"
];
blocking = {
denylists.ads = [
"https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts"
];
clientGroupsBlock.default = [ "ads" ];
};
caching = {
minTime = "5m";
prefetching = true;
};
prometheus.enable = true;
};
};
networking.nameservers = [
"9.9.9.9"
"1.1.1.1"
];
};
};
}