In che modo un server NAT inoltra i pacchetti di risposta echo ICMP agli utenti?


29

NAT utilizza una combinazione di numeri di porta dell'indirizzo IP per eseguire l'hashing delle richieste in uscita. Poiché le richieste ping sono costituite da pacchetti di richieste echo ICMP, non hanno alcun numero di porta associato. In che modo un server NAT inoltra le risposte agli host all'interno della rete?


Risposte:


34

Per i messaggi di tipo query / risposta ICMP come Echo (ping), NAPT utilizza l'ID query ICMP (a volte chiamato semplicemente ID ICMP) nello stesso modo in cui utilizza un numero di porta TCP o UDP.

Per i messaggi di errore ICMP come Destinazione irraggiungibile, utilizza la copia interna del pacchetto ICMP delle intestazioni del frame che ha causato l'errore per capire quale mapping nella tabella NAT utilizzare per tradurlo.

Queste procedure sono brevemente citate in diversi RFC relativi al NAT, ma ho avuto difficoltà a trovarne uno che spiegasse esplicitamente la procedura. Vedere "NAT tradizionale", RFC3022 , sezione 4.1.

Questo non è in conflitto con nessun mapping TCP o UDP perché in una buona implementazione NAPT, il protocollo è una delle informazioni contenute nella voce della tabella NAT per renderlo unico.


1
puoi citarlo da qualche parte?
Rohit Banga,

cosa succede se l'ID ICMP si scontra con un numero di porta utilizzato dal mio processo.
Rohit Banga,

@iamrohitbanga OK Ho ampliato la mia risposta per coprire le tue ulteriori domande.
Spiff,

0

Ho fatto una piccola simulazione (basata sull'appliance CLI di Kali Linux GSN3), per verificare cosa succede quando si verificano conflitti ICMP (apparentemente, potrebbe essere specifico del fornitore):

Su richieste / risposte ICMP Prima che venga mostrata la situazione NAT , quando gli identificatori delle richieste ICMP da 2 dispositivi (con IP 10.0.0.1 e 10.0.0.2 rispettati) diventano uguali.

Allo stesso tempo, su richieste / risposte ICMP Dopo NAT viene mostrato che l'identificatore della sessione ICMP in conflitto viene modificato a 0 dal NAT e da quel momento viene incrementato.

In sintesi si può dire che il NAT Linux gestisce lo scontro degli identificatori ICMP quando è attivo (poiché gli identificatori ICMP non vengono modificati prima del NAT).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.