Initialize project structure with basic configuration files and main function
This commit is contained in:
commit
e5ccdbfb75
10 changed files with 656 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
/target
|
||||
8
.idea/.gitignore
generated
vendored
Normal file
8
.idea/.gitignore
generated
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
||||
14
.idea/discord.xml
generated
Normal file
14
.idea/discord.xml
generated
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DiscordProjectSettings">
|
||||
<option name="show" value="ASK" />
|
||||
<option name="description" value="" />
|
||||
<option name="applicationTheme" value="default" />
|
||||
<option name="iconsTheme" value="default" />
|
||||
<option name="button1Title" value="" />
|
||||
<option name="button1Url" value="" />
|
||||
<option name="button2Title" value="" />
|
||||
<option name="button2Url" value="" />
|
||||
<option name="customApplicationId" value="" />
|
||||
</component>
|
||||
</project>
|
||||
7
Cargo.lock
generated
Normal file
7
Cargo.lock
generated
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 4
|
||||
|
||||
[[package]]
|
||||
name = "the-prg-server-structure"
|
||||
version = "0.1.0"
|
||||
6
Cargo.toml
Normal file
6
Cargo.toml
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
[package]
|
||||
name = "the-prg-server-structure"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
1
nix-system-configs/new-server-notes.md
Normal file
1
nix-system-configs/new-server-notes.md
Normal file
|
|
@ -0,0 +1 @@
|
|||
#
|
||||
388
nix-system-configs/nixos-gateway.nix
Normal file
388
nix-system-configs/nixos-gateway.nix
Normal file
|
|
@ -0,0 +1,388 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
imports = [./hardware-configuration.nix];
|
||||
|
||||
### Lix Package Manager ###
|
||||
nixpkgs.overlays = [
|
||||
(final: prev: {
|
||||
inherit
|
||||
(prev.lixPackageSets.stable)
|
||||
nixpkgs-review
|
||||
nix-eval-jobs
|
||||
nix-fast-build
|
||||
colmena
|
||||
;
|
||||
})
|
||||
];
|
||||
|
||||
nix.package = pkgs.lixPackageSets.stable.lix;
|
||||
|
||||
### Network Configuration ###
|
||||
networking.hostName = "prg-lan-gateway";
|
||||
networking.domain = "prg.dtu.dk";
|
||||
networking.useDHCP = false;
|
||||
networking.useNetworkd = true;
|
||||
|
||||
# Set MAC addresses to match DTU documentation
|
||||
systemd.network.links."10-wan" = {
|
||||
matchConfig. OriginalName = "eth*";
|
||||
matchConfig.Type = "ether";
|
||||
linkConfig = {
|
||||
Name = "ens18";
|
||||
MACAddress = "2a:99:d6:03:dd:92"; # Hardcoded MAC, ensuring that DTU's sysadmin sees it is still the same
|
||||
WakeOnLan = "off";
|
||||
};
|
||||
};
|
||||
|
||||
# Discuss removing/changing them?
|
||||
systemd.network.links."20-lan1" = {
|
||||
matchConfig.OriginalName = "eth*";
|
||||
matchConfig.Type = "ether";
|
||||
linkConfig = {
|
||||
Name = "ens19";
|
||||
MACAddress = "0e:27:6a:11:a0:77";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.network.links."30-lan2" = {
|
||||
matchConfig.OriginalName = "eth*";
|
||||
matchConfig.Type = "ether";
|
||||
linkConfig = {
|
||||
Name = "ens20";
|
||||
MACAddress = "42:d7:85:15:e1:ff";
|
||||
};
|
||||
};
|
||||
|
||||
# WAN Interface (ens18)
|
||||
systemd.network.networks."10-wan" = {
|
||||
matchConfig.Name = "ens18";
|
||||
address = ["130.225.91.242/27"];
|
||||
gateway = ["130.225.91.225"];
|
||||
networkConfig = {
|
||||
IPv6AcceptRA = false;
|
||||
DHCP = "no";
|
||||
};
|
||||
linkConfig = {
|
||||
RequiredForOnline = "routable";
|
||||
MTUBytes = "1500";
|
||||
};
|
||||
};
|
||||
|
||||
# LAN Interface 1 (ens19) - Dual IP
|
||||
systemd.network.networks."20-lan1" = {
|
||||
matchConfig.Name = "ens19";
|
||||
address = [
|
||||
"10.123.123.1/24"
|
||||
"192.168.0.1/24"
|
||||
];
|
||||
networkConfig = {
|
||||
IPv6AcceptRA = false;
|
||||
DHCP = "no";
|
||||
ConfigureWithoutCarrier = true;
|
||||
};
|
||||
};
|
||||
|
||||
# LAN Interface 2 (ens20)
|
||||
systemd.network.networks."30-lan2" = {
|
||||
matchConfig.Name = "ens20";
|
||||
address = ["10.255.255.1/24"];
|
||||
networkConfig = {
|
||||
IPv6AcceptRA = false;
|
||||
DHCP = "no";
|
||||
ConfigureWithoutCarrier = true;
|
||||
};
|
||||
};
|
||||
|
||||
# DNS Configuration
|
||||
services.resolved = {
|
||||
enable = true;
|
||||
dnssec = "false";
|
||||
domains = ["prg.dtu.dk"];
|
||||
fallbackDns = ["1.1.1.1" "8.8.8.8" "130.225.89.2"];
|
||||
extraConfig = ''
|
||||
DNSStubListener=no
|
||||
'';
|
||||
};
|
||||
|
||||
# Kernel parameters for gateway/security
|
||||
boot.kernel.sysctl = {
|
||||
# IP forwarding (gateway)
|
||||
"net.ipv4.ip_forward" = 1;
|
||||
|
||||
# Reverse Path Filtering
|
||||
"net.ipv4.conf.all.rp_filter" = 1;
|
||||
"net.ipv4.conf.default.rp_filter" = 1;
|
||||
|
||||
# SYN flood
|
||||
"net.ipv4.tcp_syncookies" = 1;
|
||||
"net.ipv4.tcp_syn_retries" = 5;
|
||||
|
||||
# ICMP redirects / sending redirects
|
||||
"net.ipv4.conf.all.accept_redirects" = 0;
|
||||
"net.ipv4.conf.default.accept_redirects" = 0;
|
||||
"net.ipv4.conf.all.send_redirects" = 0;
|
||||
"net.ipv4.conf.default.send_redirects" = 0;
|
||||
"net.ipv4.conf.all.secure_redirects" = 0;
|
||||
|
||||
# Source route / routing protections
|
||||
"net.ipv4.conf.all.accept_source_route" = 0;
|
||||
"net.ipv4.conf.default.accept_source_route" = 0;
|
||||
|
||||
# Log suspicious packets
|
||||
"net.ipv4.conf.all.log_martians" = 1;
|
||||
"net.ipv4.conf.default.log_martians" = 1;
|
||||
|
||||
# ICMP hygiene
|
||||
"net.ipv4.icmp_echo_ignore_broadcasts" = 1;
|
||||
"net.ipv4.icmp_ignore_bogus_error_responses" = 1;
|
||||
|
||||
# Performance
|
||||
"net.ipv4.tcp_window_scaling" = 1;
|
||||
|
||||
# Disable IPv6 if desired
|
||||
"net.ipv6.conf.all.disable_ipv6" = 1;
|
||||
"net.ipv6.conf.default.disable_ipv6" = 1;
|
||||
|
||||
# Additional hardening knobs
|
||||
"kernel.kptr_restrict" = 1; # hide kernel pointers in /proc
|
||||
"kernel.dmesg_restrict" = 1; # restrict dmesg
|
||||
"kernel.yama.ptrace_scope" = 1; # restrict ptrace
|
||||
"fs.protected_hardlinks" = 1;
|
||||
"fs.protected_symlinks" = 1;
|
||||
};
|
||||
|
||||
# NAT Configuration
|
||||
networking.nat = {
|
||||
enable = true;
|
||||
externalInterface = "ens18";
|
||||
internalInterfaces = ["ens19" "ens20"];
|
||||
forwardPorts = []; # Empty - no port forwarding
|
||||
};
|
||||
|
||||
# Firewall Configuration
|
||||
networking.firewall = {
|
||||
enable = true;
|
||||
|
||||
# Trusted LAN interfaces (all ports open)
|
||||
trustedInterfaces = ["ens19" "ens20"];
|
||||
|
||||
# Interface-specific rules (keep permitted ports on LAN)
|
||||
interfaces = {
|
||||
ens19.allowedTCPPorts = [22 53];
|
||||
ens19.allowedUDPPorts = [53 67 123];
|
||||
ens20.allowedTCPPorts = [22 53];
|
||||
ens20.allowedUDPPorts = [53 67 123];
|
||||
};
|
||||
|
||||
# Tightened iptables rules using conntrack, drop INVALID, rate-limit ICMP and logging.
|
||||
extraCommands = ''
|
||||
# Default policies
|
||||
iptables -P INPUT DROP
|
||||
iptables -P FORWARD ACCEPT
|
||||
iptables -P OUTPUT ACCEPT
|
||||
|
||||
# Drop invalid packets early
|
||||
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
|
||||
|
||||
# Allow loopback
|
||||
iptables -A INPUT -i lo -j ACCEPT
|
||||
|
||||
# Established/related
|
||||
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
|
||||
|
||||
# Rate-limit ICMP (allow limited pings)
|
||||
iptables -A INPUT -p icmp -m conntrack --ctstate NEW -m limit --limit 1/second --limit-burst 5 -j ACCEPT
|
||||
|
||||
# Block new connections from WAN interface
|
||||
iptables -A INPUT -i ens18 -m conntrack --ctstate NEW -j DROP
|
||||
|
||||
# Log dropped packets (rate-limited)
|
||||
iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables-dropped: " --log-level 7
|
||||
'';
|
||||
|
||||
extraStopCommands = ''
|
||||
iptables -P INPUT ACCEPT
|
||||
iptables -P FORWARD ACCEPT
|
||||
iptables -P OUTPUT ACCEPT
|
||||
'';
|
||||
};
|
||||
|
||||
# Hosts file
|
||||
networking.extraHosts = ''
|
||||
130.225.91.242 prg-lan-gateway.prg.dtu.dk prg-lan-gateway
|
||||
'';
|
||||
|
||||
# Time synchronization
|
||||
time.timeZone = "Europe/Copenhagen";
|
||||
services.chrony = {
|
||||
enable = true;
|
||||
servers = ["time.cloudflare.com"];
|
||||
extraConfig = ''
|
||||
makestep 1.0 3
|
||||
rtcsync
|
||||
'';
|
||||
};
|
||||
|
||||
# Locale settings
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
i18n.extraLocaleSettings = {
|
||||
LC_ADDRESS = "da_DK.UTF-8";
|
||||
LC_IDENTIFICATION = "da_DK.UTF-8";
|
||||
LC_MEASUREMENT = "da_DK.UTF-8";
|
||||
LC_MONETARY = "da_DK.UTF-8";
|
||||
LC_NAME = "da_DK.UTF-8";
|
||||
LC_NUMERIC = "da_DK. UTF-8";
|
||||
LC_PAPER = "da_DK.UTF-8";
|
||||
LC_TELEPHONE = "da_DK.UTF-8";
|
||||
LC_TIME = "en_DK.UTF-8";
|
||||
};
|
||||
|
||||
# Console keymap
|
||||
# Change it back to Danish?
|
||||
console.keyMap = "us";
|
||||
|
||||
# User configuration -
|
||||
users.users.admin = {
|
||||
isNormalUser = true;
|
||||
description = "Gateway Administrator";
|
||||
extraGroups = ["wheel" "networkmanager" "systemd-journal"];
|
||||
openssh.authorizedKeys.keys = [
|
||||
# Christine's Hardware Key - Copy and change to the desired hardware keys
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO3pjIXlpg7H9h1RrmdxbIRnDIdQvf/EZKI9PG2/rY7D openpgp:0x8BCD4992"
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
# Passwordless sudo for wheel group
|
||||
security.sudo.wheelNeedsPassword = false;
|
||||
|
||||
# Hardware U2F support - Passwordless sudo with hardware key
|
||||
security.pam.u2f = {
|
||||
enable = true;
|
||||
settings = {
|
||||
authfile = "/etc/u2f_keys";
|
||||
cue = true;
|
||||
pinverification = 0; # No PIN verification
|
||||
userpresence = 1; # Require user presence (touch)
|
||||
};
|
||||
};
|
||||
|
||||
# SSH Agent authentication
|
||||
security.pam.enableSSHAgentAuth = true;
|
||||
|
||||
# System packages
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Network tools
|
||||
wget
|
||||
curl
|
||||
dig
|
||||
tcpdump
|
||||
ethtool
|
||||
iptables
|
||||
nftables
|
||||
iproute2
|
||||
bridge-utils
|
||||
netcat-gnu
|
||||
traceroute
|
||||
mtr
|
||||
|
||||
# Monitoring
|
||||
btop
|
||||
htop
|
||||
iotop
|
||||
bandwhich
|
||||
|
||||
# Editors
|
||||
micro
|
||||
vim
|
||||
helix
|
||||
|
||||
# System info
|
||||
fastfetch
|
||||
lshw
|
||||
pciutils
|
||||
usbutils
|
||||
];
|
||||
|
||||
# OpenSSH
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
settings = {
|
||||
PermitRootLogin = "no";
|
||||
PasswordAuthentication = false;
|
||||
KbdInteractiveAuthentication = false;
|
||||
X11Forwarding = false;
|
||||
|
||||
# Additional hardening
|
||||
MaxAuthTries = 3;
|
||||
LoginGraceTime = "20s";
|
||||
};
|
||||
extraConfig = ''
|
||||
AllowUsers admin
|
||||
'';
|
||||
openFirewall = false; # Manually configured in firewall section
|
||||
};
|
||||
|
||||
# Tailscale VPN - We need to discuss about this long term
|
||||
services.tailscale = {
|
||||
enable = true;
|
||||
useRoutingFeatures = "server";
|
||||
};
|
||||
|
||||
# Automatic upgrades
|
||||
system.autoUpgrade = {
|
||||
enable = true; # Set to true for automatic updates
|
||||
dates = "daily";
|
||||
allowReboot = false;
|
||||
};
|
||||
|
||||
# Nix garbage collection
|
||||
nix.gc = {
|
||||
automatic = true;
|
||||
dates = "weekly";
|
||||
options = "--delete-older-than 30d";
|
||||
};
|
||||
|
||||
# Nix settings
|
||||
nix.settings = {
|
||||
experimental-features = ["nix-command" "flakes"];
|
||||
auto-optimise-store = true;
|
||||
trusted-users = ["root" "@wheel"];
|
||||
};
|
||||
|
||||
# Allow unfree packages
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
# Boot configuration TO BE CHANGED ACCORDING TO INSTALL VERSION
|
||||
boot.loader = {
|
||||
systemd-boot.enable = true;
|
||||
efi.canTouchEfiVariables = true;
|
||||
timeout = 3;
|
||||
};
|
||||
|
||||
# Kernel optimization
|
||||
boot.kernelParams = [
|
||||
"quiet"
|
||||
"splash"
|
||||
];
|
||||
|
||||
# Enable zram swap
|
||||
zramSwap = {
|
||||
enable = true;
|
||||
memoryPercent = 50;
|
||||
};
|
||||
|
||||
# Protect /tmp as a tmpfs with nosuid/nodev/noexec
|
||||
fileSystems."/tmp" = {
|
||||
device = "tmpfs";
|
||||
fsType = "tmpfs";
|
||||
options = ["mode=1777" "nosuid" "nodev" "noexec"];
|
||||
};
|
||||
|
||||
# System state version
|
||||
system.stateVersion = "XX.XX";
|
||||
}
|
||||
105
nix-system-configs/nixos-template.nix
Normal file
105
nix-system-configs/nixos-template.nix
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
# Headless server configuration with Lix
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
./hardware-configuration.nix
|
||||
];
|
||||
|
||||
## Use Lix, instead of Nix NixOS default ##
|
||||
nixpkgs.overlays = [
|
||||
(final: prev: {
|
||||
inherit
|
||||
(prev.lixPackageSets.stable)
|
||||
nixpkgs-review
|
||||
nix-eval-jobs
|
||||
nix-fast-build
|
||||
colmena
|
||||
;
|
||||
})
|
||||
];
|
||||
|
||||
nix.package = pkgs.lixPackageSets.stable.lix;
|
||||
|
||||
### TO BE CHANGED ACCORDING TO INSTALL ###
|
||||
|
||||
# Networking
|
||||
networking.hostName = "server";
|
||||
networking.networkmanager.enable = true;
|
||||
|
||||
# Time zone
|
||||
time.timeZone = "Europe/Copenhagen";
|
||||
|
||||
# Locale
|
||||
i18n.defaultLocale = "en_GB.UTF-8";
|
||||
# Also install Danish and Norwegian locales
|
||||
i18n.extraLocales = ["da_DK.UTF-8" "nb_NO.UTF-8"];
|
||||
|
||||
# User account with hardware key support
|
||||
users.users.admin = {
|
||||
isNormalUser = true;
|
||||
extraGroups = ["wheel" "networkmanager"];
|
||||
openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO3pjIXlpg7H9h1RrmdxbIRnDIdQvf/EZKI9PG2/rY7D openpgp:0x8BCD4992"
|
||||
];
|
||||
};
|
||||
|
||||
# Hardware Key Passwordless Sudo
|
||||
security.pam.u2f.enable = true;
|
||||
security.pam.u2f.settings = {
|
||||
authfile = "/etc/u2f_keys";
|
||||
authpending_file = "";
|
||||
pinverification = 0;
|
||||
userpresence = 1;
|
||||
};
|
||||
|
||||
# SSH Passwordless Sudo
|
||||
security.pam.enableSSHAgentAuth = true;
|
||||
security.pam.sshAgentAuth = {
|
||||
enable = true;
|
||||
authorizedKeysFiles = ["/etc/ssh/authorized_keys.d/admin"];
|
||||
};
|
||||
|
||||
# Essential packages
|
||||
environment.systemPackages = with pkgs; [
|
||||
wget
|
||||
curl
|
||||
git
|
||||
btop
|
||||
htop
|
||||
micro
|
||||
vim
|
||||
helix
|
||||
fastfetch
|
||||
];
|
||||
|
||||
# OpenSSH
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
settings = {
|
||||
PermitRootLogin = "no";
|
||||
PasswordAuthentication = false;
|
||||
};
|
||||
};
|
||||
|
||||
# Tailscale - Think about how we manage this long term
|
||||
services.tailscale.enable = true;
|
||||
|
||||
# Garbage collection
|
||||
nix.gc = {
|
||||
automatic = true;
|
||||
dates = "weekly";
|
||||
options = "--delete-older-than 30d";
|
||||
};
|
||||
|
||||
# Firewall
|
||||
networking.firewall.allowedTCPPorts = [22];
|
||||
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
### TO BE CHANGED ACCORDING TO INSTALL VERSION ###
|
||||
system.stateVersion = "XX.XX";
|
||||
}
|
||||
123
nix-system-configs/old-server-notes.md
Normal file
123
nix-system-configs/old-server-notes.md
Normal file
|
|
@ -0,0 +1,123 @@
|
|||
|
||||
|
||||
# Old Server Notes
|
||||
|
||||
---
|
||||
|
||||
# Gateway WAN Configuration - Essential Info
|
||||
|
||||
## Network Details
|
||||
```
|
||||
WAN IP: 130.225.91.242/27
|
||||
Netmask: 255.255.255.224
|
||||
Gateway: 130.225.91.225
|
||||
Gateway MAC: f0:7f:06:98:4a:64
|
||||
Network: 130.225.91.224/27
|
||||
Broadcast: 130.225.91.255
|
||||
Interface: ens18
|
||||
MTU: 1500
|
||||
Domain: prg.dtu.dk
|
||||
Hostname: prg-lan-gateway
|
||||
FQDN: prg-lan-gateway.prg.dtu.dk
|
||||
```
|
||||
|
||||
## Upstream Path
|
||||
```
|
||||
Gateway (130.225.91.225) → Cisco e11_0-1.bg106.internet.i3.cisco.net.local
|
||||
Next Hop (192.38.93.34) → DTU edge router et2_12.90.sb-1g303-1
|
||||
```
|
||||
|
||||
## Interface Configuration
|
||||
```
|
||||
Interface: ens18
|
||||
Type: Static IPv4
|
||||
Address: 130.225.91.242/27
|
||||
Gateway: 130.225.91.225
|
||||
No VLANs, No PPPoE, No MAC cloning
|
||||
```
|
||||
|
||||
## Proxmox VM Configuration
|
||||
```
|
||||
VM ID: 100
|
||||
Node: ve0
|
||||
Memory: 2GB
|
||||
CPU: 2 cores (1 socket)
|
||||
Disk: 10GB (local-lvm)
|
||||
NIC Model: VirtIO
|
||||
|
||||
Network Devices:
|
||||
net0 (ens18): virtio=2A:99:D6:03:DD:92,bridge=vmbr1 ← WAN
|
||||
net1 (ens19): virtio=0E:27:6A:11:A0:77,bridge=vmbr0 ← LAN
|
||||
net2 (ens20): virtio=42:D7:85:15:E1:FF,bridge=vmbr2 ← LAN
|
||||
```
|
||||
|
||||
## DNS Servers
|
||||
```
|
||||
Primary: 1.1.1.1 (Cloudflare)
|
||||
Secondary: 8.8.8.8 (Google)
|
||||
Tertiary: 130.225.89.2 (DTU)
|
||||
Domain: prg.dtu.dk
|
||||
Search: prg.dtu.dk
|
||||
```
|
||||
|
||||
## NTP Servers
|
||||
```
|
||||
time.cloudflare.com
|
||||
```
|
||||
|
||||
## Firewall Rules
|
||||
|
||||
### NAT (Outbound)
|
||||
```
|
||||
Chain: POSTROUTING
|
||||
Action: Masquerade all traffic on interface ens18
|
||||
```
|
||||
|
||||
### Filter (Inbound)
|
||||
```
|
||||
Accept: Loopback (lo)
|
||||
Accept: Established/Related connections
|
||||
Drop: All other traffic from ens18 (WAN)
|
||||
Default: Accept (for other interfaces)
|
||||
```
|
||||
|
||||
### Port Forwarding
|
||||
```
|
||||
None configured
|
||||
```
|
||||
|
||||
## System Requirements
|
||||
```
|
||||
IP Forwarding: Enabled (net.ipv4.ip_forward=1)
|
||||
Reverse Path Filtering: Enabled (net.ipv4.conf.all.rp_filter=1)
|
||||
SYN Cookies: Enabled (net.ipv4.tcp_syncookies=1)
|
||||
Accept ICMP Redirects: Disabled (net.ipv4.conf.all.accept_redirects=0)
|
||||
Send ICMP Redirects: Disabled (net.ipv4.conf.all.send_redirects=0)
|
||||
Accept Source Route: Disabled (net.ipv4.conf.all.accept_source_route=0)
|
||||
Log Martian Packets: Enabled (net.ipv4.conf.all.log_martians=1)
|
||||
Ignore Broadcast Pings: Enabled (net.ipv4.icmp_echo_ignore_broadcasts=1)
|
||||
Ignore Bogus ICMP Errors: Enabled (net.ipv4.icmp_ignore_bogus_error_responses=1)
|
||||
```
|
||||
|
||||
## Hosts File
|
||||
```
|
||||
127.0.0.1 localhost
|
||||
130.225.91.242 prg-lan-gateway.prg.dtu.dk prg-lan-gateway
|
||||
::1 localhost ip6-localhost ip6-loopback
|
||||
ff02::1 ip6-allnodes
|
||||
ff02::2 ip6-allrouters
|
||||
```
|
||||
|
||||
## LAN Interfaces
|
||||
```
|
||||
ens19: 10.123.123.1/24, 192.168.0.1/24 (dual IP)
|
||||
ens20: 10.255.255.1/24
|
||||
```
|
||||
|
||||
## Critical Notes
|
||||
```
|
||||
Platform: Proxmox VM (node ve0, VM ID 100)
|
||||
WAN MAC: 2A:99:D6:03:DD:92 (must preserve for rebuild maybe, due to DTU being very thorough maybe)
|
||||
WAN Bridge: vmbr1 (not vmbr0)
|
||||
IPv6: Not configured
|
||||
```
|
||||
3
src/main.rs
Normal file
3
src/main.rs
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
fn main() {
|
||||
println!("Hello, this will be changed later!");
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue