2023-01-17 21:25:28 +00:00
|
|
|
/*
|
|
|
|
|
|
|
|
Name: https://matrix.fandom.com/wiki/Agent_Jones
|
|
|
|
Type: Physical
|
|
|
|
Hardware: PowerEdge r210
|
|
|
|
From: 2011 (?)
|
|
|
|
Role: Firewall
|
|
|
|
Notes: Used to have Agent Smith as a partner but it died (Ironically)
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
2023-01-17 17:20:22 +00:00
|
|
|
{ pkgs, lib, nodes, ... }:
|
|
|
|
let
|
2023-01-17 20:50:17 +00:00
|
|
|
ip_pub = "193.1.99.72";
|
|
|
|
ip_priv = "172.20.20.1";
|
|
|
|
hostname = "agentjones.skynet.ie";
|
2023-01-17 17:20:22 +00:00
|
|
|
|
|
|
|
in {
|
2023-01-13 17:23:15 +00:00
|
|
|
imports = [
|
|
|
|
# applications for this particular server
|
2023-01-13 18:34:19 +00:00
|
|
|
../applications/firewall.nix
|
2023-01-13 17:23:15 +00:00
|
|
|
];
|
|
|
|
|
2023-01-15 17:45:21 +00:00
|
|
|
deployment = {
|
2023-01-17 17:20:22 +00:00
|
|
|
targetHost = hostname;
|
2023-01-15 17:45:21 +00:00
|
|
|
targetPort = 22;
|
|
|
|
targetUser = "root";
|
|
|
|
};
|
|
|
|
|
2023-01-17 17:20:22 +00:00
|
|
|
# this has to be defined for any physical servers
|
|
|
|
# vms are defined by teh vm host
|
|
|
|
networking.interfaces = {
|
|
|
|
eth0 = {
|
|
|
|
ipv4.addresses = [
|
|
|
|
{
|
2023-01-17 20:50:17 +00:00
|
|
|
address = "${ip_pub}/32";
|
2023-01-17 17:20:22 +00:00
|
|
|
prefixLength = 24;
|
|
|
|
}
|
|
|
|
];
|
|
|
|
};
|
|
|
|
priv0 = {
|
|
|
|
ipv4.addresses = [
|
|
|
|
{
|
|
|
|
address = "${ip_priv}/32";
|
|
|
|
prefixLength = 24;
|
|
|
|
}
|
|
|
|
];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2023-01-15 15:10:40 +00:00
|
|
|
# this server is teh firewall
|
2023-01-15 18:27:21 +00:00
|
|
|
skynet_firewall = {
|
2023-01-15 19:18:24 +00:00
|
|
|
# always good to know oneself
|
|
|
|
|
2023-01-17 15:46:07 +00:00
|
|
|
own = {
|
2023-01-17 20:50:17 +00:00
|
|
|
ip = ip_pub;
|
2023-01-17 15:46:07 +00:00
|
|
|
|
|
|
|
ports = {
|
|
|
|
tcp = [
|
|
|
|
# ssh in
|
|
|
|
22
|
|
|
|
];
|
|
|
|
udp = [];
|
|
|
|
};
|
|
|
|
};
|
2023-01-15 19:18:24 +00:00
|
|
|
|
2023-01-15 18:27:21 +00:00
|
|
|
enable = true;
|
|
|
|
|
|
|
|
# gonna have to get all the
|
2023-01-15 18:42:01 +00:00
|
|
|
forward = builtins.concatLists (
|
|
|
|
# using this function "(key: value: value.config.skynet_firewall.forward)" turn the values ointo a list
|
|
|
|
lib.attrsets.mapAttrsToList (key: value:
|
|
|
|
# make sure that anything running this firewall dosent count (recursion otherewise)
|
|
|
|
# firewall may want to open ports in itself but can deal with that later
|
|
|
|
if value.config.skynet_firewall.enable
|
|
|
|
then []
|
|
|
|
else value.config.skynet_firewall.forward
|
|
|
|
) nodes
|
|
|
|
);
|
2023-01-15 18:27:21 +00:00
|
|
|
};
|
2023-01-15 15:10:40 +00:00
|
|
|
|
2023-01-13 17:23:15 +00:00
|
|
|
}
|