Как сервер NAT перенаправляет эхо-запросы ICMP на эхо-пакеты для пользователей?


29

NAT использует комбинацию номеров портов IP-адреса для хэширования исходящих запросов. Поскольку запросы ping состоят из пакетов эхо- запросов ICMP, у них нет ассоциированного номера порта. Как сервер NAT пересылает ответы хостам внутри сети?


Ответы:


34

Для сообщений типа запросов / ответов ICMP, таких как эхо-сигналы (pings), NAPT использует идентификатор запроса ICMP (иногда его называют просто ICMP-идентификатором) так же, как и номер порта TCP или UDP.

Для сообщений об ошибках ICMP, таких как Destination Unreachable, он использует внутреннюю копию пакета ICMP заголовков кадра, из-за которой ошибка выяснила, какое отображение в таблице NAT использовать для ее преобразования.

Эти процедуры кратко упоминаются в нескольких RFC, связанных с NAT, но мне было трудно найти тот, который четко прописал процедуру. См. «Традиционный NAT», RFC3022 , раздел 4.1.

Это не вступает в конфликт с каким-либо отображением TCP или UDP, потому что в хорошей реализации NAPT протокол является одной из частей информации, содержащейся в записи таблицы NAT, чтобы сделать ее уникальной.


1
Можете ли вы привести это откуда-нибудь.
Рохит Банга

Что делать, если идентификатор ICMP конфликтует с номером порта, который использует мой процесс.
Рохит Банга

@iamrohitbanga Хорошо. Я расширил свой ответ, чтобы охватить ваши дальнейшие вопросы.
Spiff

0

Я провел небольшое моделирование (на основе устройства GSI3 Kali Linux CLI), чтобы проверить, что происходит, когда происходит конфликт ICMP (очевидно, это может зависеть от поставщика):

На запросах / ответах ICMP Перед NAT отображается ситуация, когда Идентификаторы запросов ICMP от 2 устройств (с IPs 10.0.0.1 и 10.0.0.2 соответственно) становятся равными.

В то же время на запросах / ответах ICMP После того, как NAT показывает, что Идентификатор конфликтующего сеанса ICMP изменяется на 0 с помощью NAT и с этого момента увеличивается.

В качестве резюме можно сказать, что Linux NAT обрабатывает конфликты идентификаторов ICMP при включении (так как идентификаторы ICMP не изменяются до NAT).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.