В большинстве современных реализаций NAT / фильтрации пакетов есть состояние. Это означает, что они имеют более широкое понятие слова connection
, чем старые варианты без гражданства. Это позволяет им обрабатывать более сложные протоколы, использующие дополнительные соединения (например, FTP), а также протоколы без соединений, такие как ICMP .
В случае ICMP-пакетов echo
запросы содержат поле ID
, которое сохраняется в ответе. Несмотря на то, что его 16 битов несколько ограничивают, он позволяет в сочетании с IP-адресом источника из заголовка IP иметь достаточно высокую достоверность, которой echo
запрашивает каждый ответ.
EDIT:
Что касается таргетинга на конкретные хосты за реализацией NAT, это обычно невозможно. Вы могли бы быть в состоянии:
Перенаправить весь трафик ICMP на один внутренний хост, чтобы отслеживать только этот хост.
Используйте байты данных "pad" пакета запроса echo
для предоставления какого-либо идентификатора хоста. Например, опция -p
ping
в некоторых системах Linux позволяет установить это поле. Это ни в коем случае не стандартно.
Обычно NAT должен скрывать хосты, стоящие за ним, от мира, за исключением любых переадресованных IP-соединений.