diff options
Diffstat (limited to 'os/kay/modules/network/router.nix')
| -rw-r--r-- | os/kay/modules/network/router.nix | 65 |
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} + ''; + }; }; } |
