This repository has no description
3.2 kB
138 lines
1{ lib, pkgs, ... }:
2{
3 # vodafone router drifts out of time
4 services.timesyncd.servers = [
5 "0.pool.ntp.org"
6 "1.pool.ntp.org"
7 "2.pool.ntp.org"
8 "3.pool.ntp.org"
9 ];
10 systemd.network.networks."50-et0" = {
11 matchConfig.Name = "et0";
12 DHCP = "yes";
13 linkConfig = {
14 RequiredForOnline = "routable";
15 };
16 networkConfig = {
17 IPv6AcceptRA = true;
18 IPv6Forwarding = true;
19 };
20 };
21 boot.kernel.sysctl."net.ipv4.ip_forward" = 1;
22 boot.kernel.sysctl."net.ipv6.conf.all.forwarding" = 1;
23 systemd.network.networks."10-int0" = {
24 name = "int0";
25 address = [
26 "10.42.0.1/24"
27 "fd42:7d6a::1/64"
28 ];
29 networkConfig = {
30 IPv4Forwarding = true;
31 IPv6Forwarding = true;
32 ConfigureWithoutCarrier = true;
33 DHCPServer = "yes";
34 IPv6SendRA = true;
35 };
36 ipv6Prefixes = [
37 {
38 ipv6PrefixConfig = {
39 Prefix = "fd42:7d6a::/64";
40 };
41 }
42 ];
43 dhcpServerStaticLeases = [
44 {
45 # printer
46 dhcpServerStaticLeaseConfig = {
47 Address = "10.42.0.4";
48 MACAddress = "94:dd:f8:23:c5:ac";
49 };
50 }
51 {
52 # firetv
53 dhcpServerStaticLeaseConfig = {
54 Address = "10.42.0.11";
55 MACAddress = "84:28:59:f0:d2:a8";
56 };
57 }
58 # {
59 # dhcpServerStaticLeaseConfig = {
60 # Address = "10.42.0.10";
61 # MACAddress = "ea:4d:12:94:74:2a";
62 # };
63 # }
64 {
65 dhcpServerStaticLeaseConfig = {
66 Address = "10.42.0.10";
67 MACAddress = "fe:fe:fe:fe:fe:fe";
68 };
69 }
70 ];
71 };
72 networking.networkmanager.unmanaged = [ "int0" ];
73 krebs.iptables.tables.filter.INPUT.rules = [
74 {
75 predicate = "-i int0";
76 target = "ACCEPT";
77 }
78 ];
79 krebs.iptables.tables.filter.FORWARD.rules = [
80 {
81 predicate = "-i int0";
82 target = "ACCEPT";
83 }
84 {
85 predicate = "-o int0";
86 target = "ACCEPT";
87 }
88 {
89 predicate = "-p ipv6-icmp";
90 target = "ACCEPT";
91 v4 = false;
92 }
93 ];
94 krebs.iptables.tables.nat.PREROUTING.rules = lib.mkBefore [
95 {
96 v6 = false;
97 predicate = "-s 10.42.0.0/24";
98 target = "ACCEPT";
99 }
100 ];
101 krebs.iptables.tables.nat.POSTROUTING.rules = [
102 {
103 v6 = false;
104 predicate = "-s 10.42.0.0/24";
105 target = "MASQUERADE";
106 }
107 {
108 v4 = false;
109 predicate = "-s fd42:7d6a::/64";
110 target = "MASQUERADE";
111 }
112 ];
113
114 networking.domain = "gg23";
115
116 networking.useHostResolvConf = false;
117 services.resolved.settings.Resolve.DNSStubListener = "no";
118 services.dnsmasq = {
119 enable = true;
120 resolveLocalQueries = false;
121
122 settings = {
123 local = "/gg23/";
124 domain = "gg23";
125 expand-hosts = true;
126 listen-address = "10.42.0.1,10.233.0.1";
127 interface = "int0";
128 };
129 };
130
131 environment.systemPackages = [
132 (pkgs.writers.writeDashBin "restart_router" ''
133 ${pkgs.mosquitto}/bin/mosquitto_pub -h localhost -t 'cmnd/router/POWER' -u gg23 -P gg23-mqtt -m OFF
134 sleep 2
135 ${pkgs.mosquitto}/bin/mosquitto_pub -h localhost -t 'cmnd/router/POWER' -u gg23 -P gg23-mqtt -m ON
136 '')
137 ];
138}