summaryrefslogtreecommitdiff
path: root/os/kay/modules/network/router.nix
diff options
context:
space:
mode:
Diffstat (limited to 'os/kay/modules/network/router.nix')
-rw-r--r--os/kay/modules/network/router.nix65
1 files changed, 44 insertions, 21 deletions
diff --git a/os/kay/modules/network/router.nix b/os/kay/modules/network/router.nix
index aeb008c..dc2e9eb 100644
--- a/os/kay/modules/network/router.nix
+++ b/os/kay/modules/network/router.nix
@@ -7,30 +7,29 @@ let
gponPrefix = 24;
lanInterface = "enp8s0f3u1c2";
- bridgeInterface = "lan";
- subnet = "192.168.43.0";
- prefix = 24;
- host = "192.168.43.1";
- leaseRangeStart = "192.168.43.100";
- leaseRangeEnd = "192.168.43.254";
+ lanBridgeInterface = "lan";
+ lanPrefix = 24;
+ lanHost = "192.168.43.1";
- wapMac = "40:86:cb:d7:40:49";
- wapIp = "192.168.43.2";
+ lanLeaseRangeStart = "192.168.43.100";
+ lanLeaseRangeEnd = "192.168.43.254";
+ # lanWapMac = "40:86:cb:d7:40:49";
+ # lanWapIp = "192.168.43.2";
in
{
networking = {
- bridges.${bridgeInterface}.interfaces = [ lanInterface ];
+ bridges.${lanBridgeInterface}.interfaces = [ lanInterface ];
nat = {
enable = true;
externalInterface = wanInterface;
- internalInterfaces = [ bridgeInterface ];
+ internalInterfaces = [ lanBridgeInterface ];
};
interfaces = {
- ${bridgeInterface}.ipv4.addresses = [
+ ${lanBridgeInterface}.ipv4.addresses = [
{
- address = host;
- prefixLength = prefix;
+ address = lanHost;
+ prefixLength = lanPrefix;
}
];
${gponInterface}.ipv4.addresses = [
@@ -59,14 +58,38 @@ in
};
};
- services.dnsmasq.settings = {
- dhcp-range = [ "${leaseRangeStart},${leaseRangeEnd}" ];
- dhcp-host = "${wapMac},${wapIp}";
- interface = [ bridgeInterface ];
- };
+ services = {
+ kea.dhcp4 = {
+ enable = true;
+ settings = {
+ interfaces-config.interfaces = [ lanBridgeInterface ];
+ lease-database = {
+ persist = true;
+ type = "memfile";
+ name = "/var/lib/kea/dhcp4.leases";
+ };
+ subnet4 = [
+ {
+ id = 1;
+ pools = [
+ {
+ pool = "${lanLeaseRangeStart} - ${lanLeaseRangeEnd}";
+ }
+ ];
+ subnet = "${lanHost}/${toString lanPrefix}";
+ }
+ ];
+ rebind-timer = 2000;
+ renew-timer = 1000;
+ valid-lifetime = 4000;
+ };
+ };
- services.prometheus.exporters.dnsmasq = {
- enable = true;
- listenAddress = "127.0.0.1";
+ resolved = {
+ enable = true;
+ extraConfig = ''
+ DNSStubListenerExtra=${lanHost}
+ '';
+ };
};
}