Работает ли pwnat?

Мне нужно решение для обхода NAT для передачи данных RDP через Интернет. Я наткнулся на следующий инструмент, и это действительно потрясающе - pwnat.

Я попробовал это с двумя разными машинами за другим маршрутизатором, но я не могу заставить его работать, как описано в приведенной выше ссылке. Так работает pwnat, и если да, то что я мог сделать неправильно? Это было бы очень полезно для меня.

Примечание. Я использую Windows-машину для тестирования и скачал версию Windows со следующей ссылки.

http://www.sumitgupta.net/pwnat-windows-complied-version/

Любая помощь пожалуйста.

Ответы

Ответ 1

Нет.
Я полагаю, вы знаете, как это работает: введите описание изображения здесь
сервер отправляет пакеты запроса эхо-сигнала ICMP на фиксированный адрес (например, 1.2.3.4), где ответы эхо-сигналов не возвращаются, клиент, притворяясь прыжком в Интернете, отправляет ICMP Time Exceeded пакет в сервер, ожидайте, что NAT в передней части сервера пересылает сообщение о превышении времени ICMP на сервер.

Изображение выше с домашняя страница pwnat, это на том основании, что клиент не находится за NAT, а исходная полезная нагрузка превышена сообщение обычно не проверяется реализациями NAT. Если оба клиента и сервер находятся за NAT, как это,

=========================================================================================
| CLIENT  | <---> |  NAT-C  | <---> { internet } <---> |  NAT-S  | <---> | SERVER |
=========================================================================================

В настоящее время он редко работает в основном по двум причинам ниже:

  • Когда сервер отправляет пакеты запроса эхо-сигнала ICMP на фиксированный адрес, согласно RFC 3022, поле идентификатора в эхо-сигнале ICMP заголовок запроса будет однозначно сопоставлен идентификатору запроса зарегистрированного IP-адреса NAT-S, чтобы он мог маршрутизировать будущие ICMP-эхо-ответы с тем же идентификатором запроса отправителю, , так что заголовок ICMP в пакетах запросов ICMP должен быть изменен для замены идентификатора запроса и контрольной суммы заголовка ICMP. RFC 3022 Раздел изменений пакетов ошибок ICMP:

    В настройке NAPT, если IP-сообщение, встроенное в ICMP, пакет запросов TCP, UDP или ICMP, вам также необходимо будет изменить соответствующий номер порта TU в заголовке TCP/UDP или запрос Поле идентификатора в заголовке запроса ICMP.

    Но клиент не знает идентификатор внешнего запроса (код pwnat использует 0 в качестве идентификатора исходного запроса), он отправляет на сервер пакет ICMP Time Exceeded, даже если пакет может достигать NAT-S перед сервером, NAT-S не может найти активное сопоставление для встроенного пакета, большинство реализаций NAT потеряют его.

  • Кроме того, согласно rfc 5508, когда NAT-C принимает пакет ICMP Error из Private Realm, NAT- C использует пакет, встроенный в сообщение об ошибке ICMP (т.е. IP-пакет от клиента к серверу) для поиска сеанса NAT, которому принадлежит встроенный пакет. Если NAT-C не имеет активного отображения встроенного пакета, NAT-C СЛЕДУЕТ отбрасывать пакет ICMP Error. Это означает, что пакет ICMP Time Exceeded от клиента не будет поступать на NAT-S.

Итак, pwnat работает только с базовыми устройствами NAT (rfc 1631), которые выполняют простой перевод адресов, не будут работать с каким-либо устройством NAPT который имеет надежную реализацию NAPT. И В этой статье упоминается эта проблема.