Skip to content
KitploitKITPLOIT
StrumentiBlog
Log in
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
rathole — Un proxy inverso leggero e ad alte prestazioni per l'attraversamento NAT, scritto in Rust. Un'alternativa a frp e ngrok. | Kitploit
Strumenti/GitHubGitHub/rathole-org/rathole
Utilità GenericheSicurezza di ReteUtilità e Framework
GitHubrathole-org/rathole

rathole

Un proxy inverso leggero e ad alte prestazioni per l'attraversamento NAT, scritto in Rust. Un'alternativa a frp e ngrok.

Vedi Repository
14.0k804271 mese faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

rathole

rathole-logo

GitHub stars GitHub release (latest SemVer) GitHub Workflow Status (branch) GitHub all releases Docker Pulls Join the chat at https://gitter.im/rapiz1/rathole

English | 简体中文

Un proxy inverso sicuro, stabile e ad alte prestazioni per l'attraversamento NAT, scritto in Rust.

rathole, come frp e ngrok, può aiutare a esporre su Internet un servizio su un dispositivo dietro NAT, tramite un server con IP pubblico.

  • rathole
    • Caratteristiche
    • Avvio rapido
    • Configurazione
      • Logging
      • Ottimizzazione
    • Benchmark
    • Pianificazione

Caratteristiche

  • Alte prestazioni È possibile ottenere una velocità effettiva molto superiore rispetto a frp, e una maggiore stabilità nella gestione di un gran numero di connessioni. Vedi Benchmark
  • Basso consumo di risorse Consuma molta meno memoria rispetto a strumenti simili. Vedi Benchmark. Il binario può essere grande circa 500 KiB per adattarsi ai vincoli di dispositivi come i router embedded.
  • Sicurezza I token dei servizi sono obbligatori e specifici per servizio. Il server e i client sono responsabili delle proprie configurazioni. Con il protocollo Noise opzionale, la crittografia può essere configurata facilmente. Nessuna necessità di creare un certificato auto-firmato! TLS è supportato.
  • Ricaricamento a caldo I servizi possono essere aggiunti o rimossi dinamicamente ricaricando a caldo il file di configurazione. L'API HTTP è in lavorazione.

Avvio rapido

Un rathole completo si può ottenere dalla pagina delle release. Oppure compilare dal sorgente per altre piattaforme e per minimizzare il binario. È disponibile anche un'immagine Docker.

L'uso di rathole è molto simile a frp. Se hai esperienza con quest'ultimo, la configurazione è molto facile. L'unica differenza è che la configurazione di un servizio è divisa tra client e server, e un token è obbligatorio.

Per usare rathole, hai bisogno di un server con IP pubblico e di un dispositivo dietro NAT, dove si trovano alcuni servizi da esporre su Internet.

Supponendo di avere un NAS a casa dietro NAT e di voler esporre il suo servizio SSH su Internet:

  1. Sul server con IP pubblico

Crea server.toml con il seguente contenuto e adattalo alle tue esigenze.

# server.toml
[server]
bind_addr = "0.0.0.0:2333" # `2333` specifica la porta su cui rathole ascolta i client

[server.services.my_nas_ssh]
token = "use_a_secret_that_only_you_know" # Token usato per autenticare il client per il servizio. Modificalo con un valore a piacere.
bind_addr = "0.0.0.0:5202" # `5202` specifica la porta che espone `my_nas_ssh` su Internet

Quindi esegui:

./rathole server.toml
  1. Sull'host dietro NAT (il tuo NAS)

Crea client.toml con il seguente contenuto e adattalo alle tue esigenze.

# client.toml
[client]
remote_addr = "myserver.com:2333" # L'indirizzo del server. La porta deve essere uguale a quella in `server.bind_addr`

[client.services.my_nas_ssh]
token = "use_a_secret_that_only_you_know" # Deve essere uguale a quella del server per superare la validazione
local_addr = "127.0.0.1:22" # L'indirizzo del servizio da inoltrare

Quindi esegui:

./rathole client.toml
  1. Ora il client cercherà di connettersi al server myserver.com sulla porta 2333, e tutto il traffico verso myserver.com:5202 sarà inoltrato alla porta 22 del client.

Così puoi ssh myserver.com:5202 per SSH al tuo NAS.

Per eseguire rathole come servizio in background su Linux, guarda gli esempi systemd.

Configurazione

rathole può determinare automaticamente se eseguire in modalità server o client in base al contenuto del file di configurazione, se è presente solo uno dei blocchi [server] e [client], come nell'esempio in Avvio rapido.

Ma i blocchi [client] e [server] possono anche essere inseriti in un unico file. In tal caso, sul lato server esegui rathole --server config.toml e sul lato client esegui rathole --client config.toml per indicare esplicitamente a rathole la modalità di esecuzione.

Prima di passare alla specifica completa della configurazione, si consiglia di dare un'occhiata agli esempi di configurazione per farsi un'idea del formato.

Vedi Trasporto per maggiori dettagli sulla crittografia e il blocco transport.

Ecco la specifica completa della configurazione:

[client]
remote_addr = "example.com:2333" # Necessario. L'indirizzo del server
default_token = "default_token_if_not_specify" # Opzionale. Il token predefinito per i servizi, se non ne definiscono uno proprio
heartbeat_timeout = 40 # Opzionale. Imposta a 0 per disabilitare il test heartbeat a livello applicativo. Il valore deve essere maggiore di `server.heartbeat_interval`. Default: 40 secondi
retry_interval = 1 # Opzionale. L'intervallo tra i tentativi di connessione al server. Default: 1 secondo

[client.transport] # L'intero blocco è opzionale. Specifica quale trasporto usare
type = "tcp" # Opzionale. Valori possibili: ["tcp", "tls", "noise"]. Default: "tcp"

[client.transport.tcp] # Opzionale. Ha effetto anche su `noise` e `tls`
proxy = "socks5://user:[email protected]:1080" # Opzionale. Il proxy per connettersi al server. Supporta `http` e `socks5`.
nodelay = true # Opzionale. Determina se abilitare TCP_NODELAY, se applicabile, per migliorare la latenza riducendo la larghezza di banda. Default: true
keepalive_secs = 20 # Opzionale. Specifica `tcp_keepalive_time` in `tcp(7)`, se applicabile. Default: 20 secondi
keepalive_interval = 8 # Opzionale. Specifica `tcp_keepalive_intvl` in `tcp(7)`, se applicabile. Default: 8 secondi

[client.transport.tls] # Necessario se `type` è "tls"
trusted_root = "ca.pem" # Necessario. Il certificato della CA che ha firmato il certificato del server
hostname = "example.com" # Opzionale. Il nome host che il client usa per validare il certificato. Se non impostato, utilizza `client.remote_addr`

[client.transport.noise] # Protocollo Noise. Vedi `docs/transport.md` per ulteriori spiegazioni
pattern = "Noise_NK_25519_ChaChaPoly_BLAKE2s" # Opzionale. Il valore predefinito come mostrato
local_private_key = "key_encoded_in_base64" # Opzionale
remote_public_key = "key_encoded_in_base64" # Opzionale
Scarica lo strumento