os/hosts/pie/dhcpd.nix

144 lines
3.2 KiB
Nix

{ pkgs, adblock-unbound, ... }:
{
networking.firewall.allowedUDPPorts = [ 67 547 ];
networking.firewall.extraInputRules = ''
ip6 daddr ff02::1:2/128 udp dport 547 accept comment "DHCPv6 server"
'';
services.kea.dhcp4 = {
enable = true;
settings = {
interfaces-config = {
dhcp-socket-type = "raw";
interfaces = [
"enabcm6e4ei0"
];
};
lease-database = {
name = "/var/lib/kea/dhcp4.leases";
persist = true;
type = "memfile";
};
rebind-timer = 2000;
renew-timer = 1000;
valid-lifetime = 4000;
subnet4 = [
{
subnet = "192.168.178.0/24";
pools = [
{ pool = "192.168.178.2 - 192.168.178.255"; }
];
option-data = [
{
name = "domain-name-servers";
space = "dhcp4";
csv-format = true;
data = "192.168.178.2";
always-send = true;
}
{
name = "routers";
data = "192.168.178.1";
always-send = true;
}
];
reservations = [
# Pie should set ip itself
{
hw-address = "dc:a6:32:5c:31:64";
ip-address = "192.168.178.2";
}
{
hw-address = "08:f1:ea:97:0f:0c";
ip-address = "192.168.178.3";
}
{
hw-address = "b8:76:3f:64:a3:64";
ip-address = "192.168.178.4";
}
{
hw-address = "04:d9:f5:fa:35:f5";
ip-address = "192.168.178.5";
}
{
hw-address = "48:a4:72:1d:29:32";
ip-address = "192.168.178.6";
}
];
}
];
};
};
services.kea.dhcp6 = {
enable = true;
settings = {
interfaces-config = {
interfaces = [
"enabcm6e4ei0"
];
};
lease-database = {
name = "/var/lib/kea/dhcp6.leases";
persist = true;
type = "memfile";
};
rebind-timer = 2000;
renew-timer = 1000;
valid-lifetime = 4000;
subnet6 = [
{
subnet = "2a02:908:5b1:e3c0::/64";
pools = [
{ pool = "2a02:908:5b1:e3c0::/72"; }
];
ddns-qualifying-suffix = "local.";
option-data = [
{
name = "dns-servers";
data = "2a02:908:5b1:e3c0:2::";
}
{
name = "domain-search";
data = "local";
}
];
reservations = [
{
hw-address = "08:f1:ea:97:0f:0c";
ip-addresses = [
"2a02:908:5b1:e3c0:3::"
];
}
{
hw-address = "04:d9:f5:fa:35:f5";
ip-addresses = [
"2a02:908:5b1:e3c0:5::"
];
}
{
hw-address = "48:a4:72:1d:29:32";
ip-addresses = [
"2a02:908:5b1:e3c0:6::"
];
}
];
}
];
};
};
}