Files
stormwind-nixfiles/networking.nix

177 lines
4.2 KiB
Nix
Raw Normal View History

2025-01-13 00:46:22 +01:00
{ config, ... }:
{
networking = {
hostName = "Stormwind";
2025-04-07 12:45:31 +02:00
networkmanager.enable = false;
2025-01-13 23:43:39 +01:00
firewall = {
allowedTCPPorts = [ 80 443 8123 20 21 22 2223 990 989 445 111 2049 32765 32768 20048 ];
2025-04-07 12:45:31 +02:00
allowedUDPPorts = [ 111 2049 20048 32765 32768 ];
2025-07-31 08:59:16 +02:00
trustedInterfaces = [ "incusbr0" ];
2025-01-13 23:43:39 +01:00
};
2025-07-31 08:59:16 +02:00
# heres the custom nftables filter ruleset for forwarded traffic:
nftables.ruleset = ''
table ip filter {
chain forward {
type filter hook forward priority 0; policy drop;
# allow established/related replies
ct state established,related accept
# allow new+established VM→Internet
iifname "incusbr0" oifname "enp4s0" ct state new,established accept
iifname "incusbr1" oifname "enp4s0" ct state new,established accept
# allow natted replies
iifname "enp4s0" oifname "incusbr0" tcp dport 8123 ct state new,established accept
iifname "enp4s0" oifname "incusbr0" tcp dport 80 ct state new,established accept
iifname "enp4s0" oifname "incusbr0" tcp dport 443 ct state new,established accept
}
}
'';
bridges = {
incusbr0 = {
interfaces = [];
};
incusbr1 = {
interfaces = [];
};
};
interfaces = {
incusbr0 = {
ipv4.addresses = [
{ address = "10.46.32.1"; prefixLength = 24; }
];
};
incusbr1 = {
ipv4.addresses = [
{ address = "10.46.33.1"; prefixLength = 24; }
];
};
};
2025-01-13 23:43:39 +01:00
nat = {
enable = true;
internalInterfaces = [ "incusbr0" "incusbr1" ];
2025-04-07 12:45:31 +02:00
externalInterface = "enp4s0";
2025-01-13 23:43:39 +01:00
forwardPorts = [
# Web-UI for home-assistant
{
sourcePort = 8123;
proto = "tcp";
destination = "10.46.32.153:8123";
}
# Web-UI for nas
2025-01-13 23:43:39 +01:00
{
sourcePort = 80;
proto = "tcp";
destination = "10.46.32.2:80";
2025-01-13 23:43:39 +01:00
}
{
sourcePort = 443;
proto = "tcp";
destination = "10.46.32.2:443";
2025-04-07 12:45:31 +02:00
}
# FTP
{
sourcePort = 20;
proto = "tcp";
destination = "10.46.32.2:20";
2025-04-07 12:45:31 +02:00
}
{
sourcePort = 21;
proto = "tcp";
destination = "10.46.32.2:21";
2025-04-07 12:45:31 +02:00
}
{
sourcePort = 22;
proto = "tcp";
destination = "10.46.32.2:22";
2025-04-07 12:45:31 +02:00
}
2025-07-02 08:37:50 +02:00
{
sourcePort = 2223;
proto = "tcp";
destination = "10.46.32.2:2223";
2025-07-02 08:37:50 +02:00
}
2025-04-07 12:45:31 +02:00
{
sourcePort = 990;
proto = "tcp";
destination = "10.46.32.2:990";
2025-04-07 12:45:31 +02:00
}
{
sourcePort = 989;
proto = "tcp";
destination = "10.46.32.2:989";
2025-04-07 12:45:31 +02:00
}
{
sourcePort = 21;
proto = "tcp";
destination = "10.46.32.2:21";
2025-04-07 12:45:31 +02:00
}
# SMB
{
sourcePort = 445;
proto = "tcp";
destination = "10.46.32.2:445";
2025-04-07 12:45:31 +02:00
}
# NFS
{
sourcePort = 111;
proto = "tcp";
destination = "10.46.32.2:111";
2025-04-07 12:45:31 +02:00
}
{
sourcePort = 111;
proto = "udp";
destination = "10.46.32.2:111";
2025-04-07 12:45:31 +02:00
}
{
sourcePort = 2049;
proto = "tcp";
destination = "10.46.32.2:2049";
2025-04-07 12:45:31 +02:00
}
{
sourcePort = 2049;
proto = "udp";
destination = "10.46.32.2:2049";
2025-04-07 12:45:31 +02:00
}
{
sourcePort = 32765;
proto = "tcp";
destination = "10.46.32.2:32765";
2025-04-07 12:45:31 +02:00
}
{
sourcePort = 32765;
proto = "udp";
destination = "10.46.32.2:32765";
2025-04-07 12:45:31 +02:00
}
{
sourcePort = 32768;
proto = "tcp";
destination = "10.46.32.2:32768";
2025-04-07 12:45:31 +02:00
}
{
sourcePort = 32768;
proto = "udp";
destination = "10.46.32.2:32768";
2025-04-07 12:45:31 +02:00
}
{
sourcePort = 20048;
proto = "tcp";
destination = "10.46.32.2:20048";
2025-04-07 12:45:31 +02:00
}
{
sourcePort = 20048;
proto = "udp";
destination = "10.46.32.2:20048";
2025-01-13 23:43:39 +01:00
}
];
};
2025-01-13 00:46:22 +01:00
};
}