62 lines
1.6 KiB
Nix
Raw Normal View History

2025-12-16 21:07:39 -05:00
{
config,
lib,
...
}:
{
imports = [ ];
options.me = {
firewall.enable = lib.mkOption {
type = lib.types.bool;
default = false;
example = true;
description = "Whether we want to install firewall.";
};
};
config = lib.mkIf config.me.firewall.enable {
# kernel modules and settings required by Kubernetes
boot.kernelModules = [
"overlay"
"br_netfilter"
];
boot.kernel.sysctl = {
"net.bridge.bridge-nf-call-iptables" = 1;
"net.bridge.bridge-nf-call-ip6tables" = 1;
"net.ipv4.ip_forward" = 1;
# Enable forwarding on all interfaces.
# "net.ipv4.conf.all.forwarding" = 1;
# "net.ipv6.conf.all.forwarding" = 1;
2025-12-16 21:07:39 -05:00
};
networking.firewall.enable = false;
2025-12-16 21:07:39 -05:00
networking.nftables.enable = true;
# We want to filter forwarded traffic.
# Also needed for `networking.firewall.extraForwardRules` to do anything.
networking.firewall.filterForward = true;
2025-12-18 22:28:03 -05:00
networking.firewall.extraInputRules = ''
ip6 saddr 2620:11f:7001:7:ffff:eeee::/96 accept
ip6 saddr fd00:3e42:e349::/112 accept
ip6 saddr 2620:11f:7001:7:ffff:ffff:0ad7:0100/120 accept
'';
networking.firewall.extraForwardRules = ''
ip6 daddr 2620:11f:7001:7:ffff:eeee::/96 accept
ip6 daddr fd00:3e42:e349::/112 accept
ip6 daddr 2620:11f:7001:7:ffff:ffff:0ad7:0100/120 accept
'';
2025-12-18 22:28:03 -05:00
# Check logs for blocked connections:
# journalctl -k or dmesg
2026-01-02 23:28:29 -05:00
networking.nftables.tables."my-fw" = {
family = "inet";
content = (builtins.readFile ./files/my-fw.nft);
};
2025-12-16 21:07:39 -05:00
};
}