This repository has no description
2.5 kB
91 lines
1{ config, lib, pkgs, ... }:
2{
3 # ipv6 from vodafone is really really flaky
4 boot.kernel.sysctl."net.ipv6.conf.et0.disable_ipv6" = 1;
5 systemd.network.networks."50-et0" = {
6 matchConfig.Name = "et0";
7 DHCP = "ipv4";
8 # dhcpV4Config.UseDNS = false;
9 # dhcpV6Config.UseDNS = false;
10 linkConfig = {
11 RequiredForOnline = "routable";
12 };
13 networkConfig = {
14 LinkLocalAddressing = "no";
15 };
16 # dhcpV6Config = {
17 # PrefixDelegationHint = "::/60";
18 # };
19 # networkConfig = {
20 # IPv6AcceptRA = true;
21 # };
22 # ipv6PrefixDelegationConfig = {
23 # Managed = true;
24 # };
25 };
26 boot.kernel.sysctl."net.ipv4.ip_forward" = 1;
27 systemd.network.networks."50-int0" = {
28 name = "int0";
29 address = [
30 "10.42.0.1/24"
31 ];
32 networkConfig = {
33 # IPForward = "yes";
34 # IPMasquerade = "both";
35 ConfigureWithoutCarrier = true;
36 DHCPServer = "yes";
37 # IPv6SendRA = "yes";
38 # DHCPPrefixDelegation = "yes";
39 };
40 dhcpServerStaticLeases = [
41 {
42 dhcpServerStaticLeaseConfig = {
43 Address = "10.42.0.4";
44 MACAddress = "3c:2a:f4:22:28:37";
45 };
46 }
47 ];
48 };
49 networking.networkmanager.unmanaged = [ "int0" ];
50 krebs.iptables.tables.filter.INPUT.rules = [
51 { predicate = "-i int0"; target = "ACCEPT"; }
52 ];
53 krebs.iptables.tables.filter.FORWARD.rules = [
54 { predicate = "-i int0"; target = "ACCEPT"; }
55 { predicate = "-o int0"; target = "ACCEPT"; }
56 { predicate = "-p ipv6-icmp"; target = "ACCEPT"; v4 = false; }
57 ];
58 krebs.iptables.tables.nat.PREROUTING.rules = lib.mkBefore [
59 { v6 = false; predicate = "-s 10.42.0.0/24"; target = "ACCEPT"; }
60 ];
61 krebs.iptables.tables.nat.POSTROUTING.rules = [
62 { v6 = false; predicate = "-s 10.42.0.0/24"; target = "MASQUERADE"; }
63 ];
64
65 networking.domain = "gg23";
66
67 networking.useHostResolvConf = false;
68 services.resolved.extraConfig = ''
69 DNSStubListener=no
70 '';
71 services.dnsmasq = {
72 enable = true;
73 resolveLocalQueries = false;
74
75 extraConfig = ''
76 local=/gg23/
77 domain=gg23
78 expand-hosts
79 listen-address=10.42.0.1
80 interface=int0
81 '';
82 };
83
84 environment.systemPackages = [
85 (pkgs.writers.writeDashBin "restart_router" ''
86 ${pkgs.mosquitto}/bin/mosquitto_pub -h localhost -t 'cmnd/router/POWER' -u gg23 -P gg23-mqtt -m OFF
87 sleep 2
88 ${pkgs.mosquitto}/bin/mosquitto_pub -h localhost -t 'cmnd/router/POWER' -u gg23 -P gg23-mqtt -m ON
89 '')
90 ];
91}