2011-12-04 21 views
8

Ho un semplice requisito di un porting di livello software/tunneling di comunicazione basata su socket.Port Forwarding

  • Ho un server di origine e una porta che utilizza Socket. Questo è un programma java che funziona sia su windows che su Linux e questo è irrilevante.
  • Ho dispositivi che continuano a inviare dati a questa porta. Potrebbe esserci una comunicazione bidirezionale
  • Desidero reindirizzare questi dati su un altro server e porta remota. Quindi per i clienti non dovranno preoccuparsi di cambiare l'indirizzo IP ogni volta che sposto il mio server dell'app.

Esistono strumenti/deamon/programmi di servizio che posso utilizzare per configurare e fare questo?

Ho provato SSH, ma per quanto mi risulta, è necessario un server abilitato per il protocollo SSH. Nel mio caso questo non è applicabile. Ho anche provato a usare JSch, ma questa è un'altra implementazione di SSH in formato java.

Qualcuno può lanciare alcuni suggerimenti? È possibile utilizzare iptables NAT in linux?

+0

Si sta utilizzando un protocollo standard o un protocollo personalizzato? – Santosh

+0

È solo una comunicazione dati TCP/IP. – Muthu

risposta

4

Si può provare netcat o socat (è più potente di netcat)

Un esempio per socat di trasmettere la porta 80 utilizzando tcp4:

socat tcp4-listen:80,fork tcp4:{another server}:{another port} 

e si riferiscono a http://en.wikipedia.org/wiki/Netcat#Port_Forwarding_or_Port_Mapping per netcat

Entrambi non sono correlati a java.

+0

Wow! Come ho dimenticato questo !! Ho una domanda però! Socat o netcat possono riconnettersi automaticamente se una connessione è interrotta? – Muthu

+0

Non so se c'è un'opzione incorporata per riconnettersi, ma può essere il lavoro del client per riconnettersi se qualcosa non va –

+0

Questo dice "2011/12/04 15:52:25 socat [4328] E connect (3 , AF = 2 indirizzo ip: 5000, 16): indirizzo già in uso ". Ho provato anche il comando con l'opzione reuseaddr. – Muthu

2

È disponibile un'utilità di inoltro porte TCP/IP denominata portforward disponibile in code.google.com. È interamente scritto in Java.

+0

Darà questo a provare e confermare se questo sarebbe adatto. – Muthu