Перфорация Дыры TCP (Обход NAT) Библиотека или что-то?

Я хочу сделать Перфорацию Дыры TCP (Обход NAT) в C#. Это может быть сделано с сервером рандеву в случае необходимости. Я нашел http://sharpstunt.codeplex.com/, но не могу заставить это работать. Идеально мне нужен некоторый метод, который я даю Номеру порта (интервал) как параметр, что после того, как вызов к этому методу доступен ("Порт, Переданный") в NAT. Было бы хорошо также, если метод просто возвращает некоторый номер порта, который затем доступен в NAT. Кто-либо сделал это в C#? Можно ли дать мне рабочие примеры для sharpstunt или чего-то еще?

34
задан John Saunders 13 November 2013 в 13:27
поделиться

2 ответа

http://sipsorcery.codeplex.com имеет рабочий сервер оглушения.

SipSorcery.core -> SipSorcery.Net -> Оглушение

1
ответ дан 27 November 2019 в 17:13
поделиться

Похоже, вы путаете TCP и UDP. TCP - это протокол, ориентированный на соединение, легко понимаемый брандмауэрами и маршрутизаторами, и требует одного инициатора (клиента) и одного слушателя (сервера). Если клиент и сервер находятся за брандмауэрами или NAT, вы не сможете пробить дыру, не подключив их обоих к какому-нибудь прокси-серверу (который не является брандмауэром). Проблема в том, что тогда прокси-сервер будет отвечать за ретрансляцию всего их трафика.

Из вашего вопроса следует, что вас больше интересует пробивание дыр в UDP, которое использует тот факт, что UDP не имеет состояния и не ориентирован на соединение. Поэтому большинство брандмауэров с отслеживанием состояния делают "наилучшее предположение" о потоке данных UDP, и предполагают, что трафик, уходящий через данный порт, будет получать ответы через тот же порт, и автоматически направляют их обратно. Если, используя какие-то внеканальные средства (например, TCP-сервер, который просто передает адреса, а не данные), оба пирата могут передавать данные друг другу через одни и те же порты, их соответствующие брандмауэры/НАТ-маршрутизаторы откроют дыры, впуская трафик.

Что касается того, как это сделать, все зависит от того, как вы собираетесь получить IP-адреса пиров друг от друга. Как только вы его получили, просто начните передавать UDP-пакеты на согласованный порт и ждите ответа.

2
ответ дан 27 November 2019 в 17:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: