NetForgeattivo da ottobre 2026

Laboratorio NetForge

Un solo VPS, i tre prodotti della suite e tutti i percorsi che il traffico può prendere: diretto, dietro il proxy di Cloudflare, dentro un tunnel. Ogni prodotto mostra una cosa concreta, configurata dal suo pannello.

VPS · 4 GB · Debian Cloudflare edge BuddyNS NS secondari pubblici arx · nginx Docker · solo 127.0.0.1 missus · posta nomina · DNS Visitatori web browser, curl Admin pannelli + SSH Server mittenti posta in arrivo Resolver Internet chi cerca la zona Raspberry Pi casa, IP dinamico Proxy nuvola arancione · WAF Tunnel hostname pubblici cloudflared solo in uscita Sito statico Sito PHP Reverse proxy bilanciato · 3 backend Squid uscita filtrata per sito edge trust per sito: direct · proxy · tunnel tunnel → 127.0.0.1:80 PHP-FPM pool per sito backend-1 :8081 nginx backend-2 :8082 nginx backend-3 :8083 nginx Pannelli admin arx · missus · nomina Postfix SMTP Rspamd Dovecot caselle + catch-all BIND · primario nascosto, non negli NS BIND · resolver locale, per la box HTTPS diretto solo IP Cloudflare SSH diretto · solo chiave SMTP · MX diretto milter LMTP blacklist DNS AXFR · TCP 53 nsupdate · TSIG · ogni 5 min per IP o TSIG :443 :443 :22 :25 :53 :53
Il tunnel non apre nessuna porta: è cloudflared a collegarsi verso Cloudflare, e nginx riceve quei siti solo su 127.0.0.1. Posta e DNS non possono passare da Cloudflare, quindi arrivano diretti sulle porte 25 e 53. I pannelli admin non hanno porte pubbliche: si raggiungono solo attraverso il tunnel cloudflared, mentre SSH resta diretto come accesso di emergenza.

Cosa mostra ogni prodotto

hosting web

arx

  • Sito statico e sito PHP, ognuno con il suo pool PHP-FPM
  • Uscita filtrata per sito: Squid lascia raggiungere ai siti solo i domini in elenco
  • Reverse proxy con bilanciamento su tre container: a turno, e se uno cade gli altri rispondono senza errori
  • Stesso server, tre ingressi: diretto, proxy Cloudflare, tunnel, con il vero IP del visitatore nei log in tutti e tre i casi
posta

missus

  • Caselle vere da usare per registrarsi ai siti
  • Catch-all: un indirizzo diverso per ogni servizio, tutto in una casella
  • DKIM e DMARC generati e mostrati dal pannello
  • Rspamd che interroga le blacklist tramite il resolver locale
DNS

nomina

  • Primario nascosto: la zona si modifica qui, ma il mondo interroga BuddyNS
  • Trasferimento AXFR ai secondari: BuddyNS autorizzato per IP, una copia a casa autenticata con chiave TSIG
  • Resolver locale per la posta e per i siti del server

Provalo dal vivo

Sono i siti veri del laboratorio, non schermate. Ognuno spiega cosa fa e come verificarlo da te.

diretto static.selif.org

Un file HTML servito da nginx: certificato Let's Encrypt, redirect su HTTPS, header di sicurezza.

diretto php.selif.org

Tre versioni di PHP sullo stesso server, 8.3, 8.4 e 8.5, ognuna con il suo pool isolato. Stessa pagina, eseguita da un PHP diverso.

diretto lb.selif.org

Tre container dietro un solo nome. Il comando chiede 9 volte chi risponde e conta: circa 3 a testa.

for i in $(seq 9); do curl -s https://lb.selif.org/name; done | sort | uniq -c
proxy Cloudflare cdn.selif.org

Dietro la nuvola arancione, eppure il server vede il tuo IP vero. La pagina ti invita a falsificarlo e mostra perché non funziona.

tunnel tunnel.selif.org

Nessuna porta aperta: arriva da Cloudflare attraverso cloudflared, e nginx lo ascolta solo su 127.0.0.1.

uscita filtrata status.selif.org

Un monitor di uptime che può raggiungere solo i siti in elenco. Uno, blocked.selif.org, funziona ma è fuori elenco: lo vedi giù.

VeloStatus: uptime 24h blocked.selif.org: uptime 24h
uscita filtrata blocked.selif.org

Funziona per te, ma il monitor non ci arriva: non è nell'elenco di Squid del suo sito. La pagina spiega come arx filtra l'uscita.

blocked.selif.org: uptime 24h
DNS lab.selif.org

Una zona modificata in nomina su un server nascosto, servita al mondo da BuddyNS. Prova chi risponde, e che il server vero la zona non la dà a nessuno.

dig +short TXT hello.lab.selif.org
dig +short NS lab.selif.org
dig @49.13.148.35 lab.selif.org AXFR
Dynamic DNS pi-heartbeat.lab.selif.org

Un Raspberry di casa, senza IP fisso, riscrive questo record ogni 5 minuti con nsupdate, firmato da una chiave TSIG che può cambiare solo lui. Guarda l'ora dell'ultimo aggiornamento.

dig +short TXT pi-heartbeat.lab.selif.org
posta hello@lab.selif.org

Scrivi qui: apollo ti risponde da solo, una volta a settimana. Nella risposta apri l'originale (in Gmail ⋮ → Mostra originale): SPF, DKIM e DMARC pass, come per i grandi provider. Server e firma fatti con missus.

posta apollo.selif.org

Prova a usare apollo per spedire a un altro dominio senza login: risponde 554 5.7.1 Relay access denied, niente open relay. Serve una rete che lasci uscire la porta 25 (molte di casa la bloccano). E i record che rendono la posta credibile, dal vivo.

swaks --server apollo.selif.org \
  --from tu@gmail.com --to y@example.net
dig +short MX lab.selif.org
dig +short TXT missus._domainkey.lab.selif.org
antispam hello@lab.selif.org

Manda a hello@ una mail con dentro questa riga, la stringa di prova standard degli antispam: Rspamd la rifiuta con 554 5.7.1 Gtube pattern: Gmail ti rimanda l'avviso di mancata consegna, altri provider (Proton, per esempio) scartano il rifiuto senza avvisarti e la mail semplicemente non arriva.

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Edge trust: chi dice qual è l'IP del visitatore

Dietro un proxy o un tunnel, nginx vede l'IP di Cloudflare. arx sceglie per ogni sito di quale header fidarsi e da quali indirizzi. Un header accettato dalla fonte sbagliata permette a chiunque di falsificare i log e di far bannare IP innocenti.

ModoCome arriva il trafficoDi chi si fida nginx
directDal visitatore, porta 443 pubblicaDi nessun header: l'IP è quello della connessione
cloudflare_proxyDa Cloudflare, porta 443 pubblicaCF-Connecting-IP, solo dagli intervalli IP di Cloudflare, aggiornati da un timer
cloudflare_tunnelDa cloudflared, solo su 127.0.0.1CF-Connecting-IP, solo da loopback
customDa un altro bilanciatoreHeader e indirizzi scelti dall'admin

Due zone DNS, due strade

Proxy e tunnel richiedono che la zona stia sul DNS di Cloudflare. Posta e siti diretti stanno invece su una seconda zona, servita da nomina tramite BuddyNS. Così il laboratorio prova anche il DNS autoritativo e non dipende da un solo fornitore.

zona edgeDNS Cloudflare · siti via proxy e tunnel
zona direttanomina + BuddyNS · posta e siti diretti
porte pubbliche22 · 25 · 53 · 80 · 443 · 587 · 993
RAM stimatacirca 1,5 GB su 4 GB