Ответы:
Для сообщений типа запросов / ответов ICMP, таких как эхо-сигналы (pings), NAPT использует идентификатор запроса ICMP (иногда его называют просто ICMP-идентификатором) так же, как и номер порта TCP или UDP.
Для сообщений об ошибках ICMP, таких как Destination Unreachable, он использует внутреннюю копию пакета ICMP заголовков кадра, из-за которой ошибка выяснила, какое отображение в таблице NAT использовать для ее преобразования.
Эти процедуры кратко упоминаются в нескольких RFC, связанных с NAT, но мне было трудно найти тот, который четко прописал процедуру. См. «Традиционный NAT», RFC3022 , раздел 4.1.
Это не вступает в конфликт с каким-либо отображением TCP или UDP, потому что в хорошей реализации NAPT протокол является одной из частей информации, содержащейся в записи таблицы NAT, чтобы сделать ее уникальной.
Я провел небольшое моделирование (на основе устройства 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).