summaryrefslogtreecommitdiff
path: root/hosts/lia/modules/network
diff options
context:
space:
mode:
Diffstat (limited to 'hosts/lia/modules/network')
-rw-r--r--hosts/lia/modules/network/default.nix19
-rw-r--r--hosts/lia/modules/network/router.nix47
2 files changed, 66 insertions, 0 deletions
diff --git a/hosts/lia/modules/network/default.nix b/hosts/lia/modules/network/default.nix
new file mode 100644
index 0000000..927b2b5
--- /dev/null
+++ b/hosts/lia/modules/network/default.nix
@@ -0,0 +1,19 @@
+{ ... }: let
+ wan = "enp4s0f2";
+in
+{
+ imports = [
+ ./router.nix
+ ];
+
+ networking = {
+ interfaces.${wan}.ipv4.addresses = [{
+ address = "172.16.148.20";
+ prefixLength = 22;
+ }];
+ defaultGateway = {
+ address = "172.16.148.1";
+ interface = wan;
+ };
+ };
+}
diff --git a/hosts/lia/modules/network/router.nix b/hosts/lia/modules/network/router.nix
new file mode 100644
index 0000000..a6aef80
--- /dev/null
+++ b/hosts/lia/modules/network/router.nix
@@ -0,0 +1,47 @@
+{ ... }: let
+ wanInterface = "enp4s0f2";
+ lanInterfaces = [ "enp4s0f1" "enp4s0f3" ];
+
+ prefix = 24;
+ subnet = "192.168.1.0";
+ host = "192.168.1.1";
+
+ leaseRangeStart = "192.168.1.100";
+ leaseRangeEnd = "192.168.1.254";
+ nameServer = [ "10.0.0.2" "10.0.0.3" ];
+in
+{
+ networking = {
+ bridges."lan".interfaces = lanInterfaces;
+
+ nat = {
+ enable = true;
+ externalInterface = wanInterface;
+ internalInterfaces = [ "lan" ];
+ };
+
+ interfaces.lan = {
+ ipv4.addresses = [{
+ address = host;
+ prefixLength = prefix;
+ }];
+ };
+
+ firewall = {
+ allowedUDPPorts = [ 53 67 ];
+ allowedTCPPorts = [ 53 ];
+ extraCommands =
+ "iptables -t nat -I POSTROUTING 1 -s ${subnet}/${toString prefix} -o ${wanInterface} -j MASQUERADE";
+ };
+ };
+
+ services.dnsmasq = {
+ enable = true;
+
+ settings = {
+ server = nameServer;
+ dhcp-range = [ "${leaseRangeStart},${leaseRangeEnd}" ];
+ interface = [ "lan" ];
+ };
+ };
+}