Come posso ottenere l'IP interno di un computer dietro NAT ma raggiungibile tramite una determinata porta TCP?

5

Voglio ottenere l'IP interno di un computer remoto dietro un NAT che posso raggiungere utilizzando qualche porta , ad esempio myhost.farfar.away porta 11122TCP :

C:\>telnet myhost.farfar.away 11122
SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2

Come vedi, c'è un server SSH su di esso, ma non ho i dati utente delle connessioni.

Se provo a tracciare la rotta (falsi IP, ovviamente):

C:\>tracert -d myhost.farfar.away

Trace route to address myhost.farfar.away [103.56.5.30]
maximum 30 hops:

  1    <1 ms    <1 ms    <1 ms  192.168.11.1
  2    <1 ms    <1 ms    <1 ms  192.168.10.1
  3    47 ms    47 ms    47 ms  80.58.67.85
  4    81 ms    86 ms    80 ms  103.56.5.30

Trace route complete.

So che myhost.farfar.away ha IP 103.56.5.30 , ma è possibile continuare a sperare attraverso questo NAT, ora che so che 11122TCP porta è reindirizzato a questa macchina, per ottenere il suo IP interno (bypassando il NAT)?

NOTA: So che il suo IP interno è 172.26.5.5 , quindi teoricamente mi piacerebbe raggiungere qualcosa del tipo:

  3    47 ms    47 ms    47 ms  80.58.67.85
  4    81 ms    86 ms    80 ms  103.56.5.30
  5   101 ms    106 ms  100 ms  172.26.5.5

Stessi risultati per netstat , ovviamente.

Ho testato tcpdump , ma penso che possa solo dare informazioni sulle connessioni che entrano nel mio computer, quindi l'esecuzione di questa linea sulla macchina remota farebbe il trucco:

tcpdump -i any port 11122

Ma può essere fatto sul computer locale "di scansione"? Posso usare sia Windows che Linux.

    
posta Sopalajo de Arrierez 09.12.2014 - 22:44
fonte

2 risposte

7

Non sono d'accordo con @vahid. Se sono presenti più hop tra il NAT e l'host a cui viene inoltrata la connessione, potresti essere in grado di ottenere un messaggio TIMEX ICMP.

Come forse sapete, ogni pacchetto IPv4 ha un campo TTL da 1 byte. Se si determina la distanza dal NAT (ad esempio 10 hop) e l'host nascosto effettivo è in realtà 12 hop (o più), è possibile inviare un SYN alla porta port forwarded sul NAT con un valore TTL di 11. Se è semplicemente riscrivendo l'indirizzo (piuttosto che agire come un proxy inverso), quindi il TTL sarà indisturbato. Ciò significa che il TTL quando si abbandona il NAT in ingresso sarà 1. Il prossimo router decrementerà fino a zero, causando di nuovo un messaggio ICMP Time To Live Exceeded (TIMEX) al mittente.

Anche se il pacchetto in uscita sarà NATted, ogni messaggio di errore ICMP (di cui questo è uno) conterrà l'intestazione del protocollo incorporato al suo interno. Ciò significa che l'host di destinazione de-NATted originale sarà ora visibile nel payload ICMP come un header IP incorporato restituito nell'errore.

Mentre è certamente vero che questa tecnica ha alcuni requisiti molto specifici per avere successo (ICMP permesso in uscita, l'effettivo host port forwarded non sulla LAN locale del NAT, ecc.) funzionerà sicuramente, il che significa che questo è -non-impossibile con qualsiasi mezzo.

    
risposta data 10.12.2014 - 03:49
fonte
2

Ciò che stai cercando di ottenere non è possibile, in base alla progettazione. L'unico modo per ottenere questo è avere accesso al gateway o alla macchina host. Un dispositivo NAT ha il duplice scopo di condividere una connessione Internet con una rete interna e proteggere la rete interna in modo molto simile a un firewall tradizionale.

[modifica] Sono corretto. In effetti, l'IETF consente di renderlo possibile, date le ipotesi delineate nella risposta di David di cui sopra.

    
risposta data 09.12.2014 - 22:56
fonte

Leggi altre domande sui tag