- Merge Infrastructure + Secure + Systems → SNS Networking (Business #1) - Merge Web + Software + Cloud → SNS Digital (planned) - SNS Support unchanged (planned) - Add infra/ folder with 16 FOSS-first buildable designs - Update all agent knowledge, division briefs, legal structure - Restructure businesses/ from 7 to 3 operating folders
4.4 KiB
4.4 KiB
Hybrid Networking — SNS Digital
Entity: SNS Digital · Status: Partially built (WireGuard/Tailscale active)
What it is
The overlay network that connects on-prem Proxmox VMs to cloud providers securely. Makes location transparent — a VM on Proxmox and a VPS on Linode appear on the same private network.
Stack
| Component | Software | FOSS | Role |
|---|---|---|---|
| Mesh VPN | Tailscale | Partial (client FOSS, control plane proprietary) | Zero-config mesh for management access |
| Site-to-site | WireGuard | Yes | Persistent tunnels between sites (Proxmox ↔ Linode) |
| DNS | AdGuard Home (on-prem) + split horizon | Yes | Internal names resolve to private IPs |
| Bastion | Linode Nanode | N/A | Public SSH/WireGuard endpoint, ProxyJump target |
Current Topology
┌──────────────┐ WireGuard ┌──────────────────┐
│ Proxmox │◄──────────────────────────►│ Linode Bastion │
│ 192.168.122.x│ (always-on) │ 172.238.163.85 │
└──────┬───────┘ └────────┬─────────┘
│ │
│ Tailscale mesh (management) │ Public IP
│ │
┌──────┴───────┐ ┌────────┴─────────┐
│ Workstation │ │ Internet/SSH │
│ (Sam's PC) │ │ clients │
└──────────────┘ └──────────────────┘
Racknerd boxes: WireGuard peer to Linode (hub-and-spoke)
AWS VPC: future — VPN Gateway or WireGuard on EC2 when needed
Design Decisions
- WireGuard for infrastructure, Tailscale for people. WireGuard tunnels are persistent, config-file driven, Ansible-managed. Tailscale is for ad-hoc management access from laptops/phones.
- Linode is the hub. All WireGuard peers connect to Linode. On-prem and Racknerd boxes don't need public IPs — they reach each other through the hub.
- No split tunneling for services. Only management traffic goes over the mesh. Service traffic (web, API) goes through the public reverse proxy path.
- ProxyJump, not port forwarding. SSH to internal VMs uses
ProxyJump linode(already in your SSH config). No ports exposed on the bastion beyond SSH + WireGuard.
Build Steps (WireGuard hub-and-spoke)
-
Linode (hub):
# /etc/wireguard/wg0.conf [Interface] Address = 10.10.0.1/24 ListenPort = 51820 PrivateKey = <hub-private-key> [Peer] # Proxmox PublicKey = <proxmox-public-key> AllowedIPs = 10.10.0.2/32, 192.168.122.0/24 [Peer] # Racknerd1 PublicKey = <rn1-public-key> AllowedIPs = 10.10.0.3/32 -
Proxmox (spoke):
[Interface] Address = 10.10.0.2/24 PrivateKey = <proxmox-private-key> [Peer] # Linode hub PublicKey = <hub-public-key> Endpoint = 172.238.163.85:51820 AllowedIPs = 10.10.0.0/24 PersistentKeepalive = 25 -
Enable IP forwarding on Linode:
net.ipv4.ip_forward = 1 -
Firewall: UFW on Linode allows UDP 51820 inbound. Forward rules for inter-spoke.
-
DNS: AdGuard on-prem resolves
*.wg.internalto 10.10.0.x addresses.
Security Posture
- WireGuard: Authenticated encryption (ChaCha20 + Poly1305). No pre-shared keys needed for this threat model, but can add for post-quantum hedge.
- Bastion exposure: Only SSH (22/tcp) + WireGuard (51820/udp) on public IP. Everything else is default-deny.
- Key rotation: WireGuard keys rotated annually (low urgency — Noise protocol provides forward secrecy per session).
- No cloud provider VPN dependencies. Pure WireGuard means portable across providers.
Upgrade Path
- Headscale: Self-hosted Tailscale control plane if the proprietary coordination server becomes a concern.
- AWS Site-to-Site VPN: When a client VPC needs persistent connectivity and WireGuard-on-EC2 isn't enterprise-palatable.
- Multi-hub: Add a second WireGuard hub (Racknerd or second Linode) for redundancy if the single Linode becomes a SPOF.