Сетевое соединение «точка-точка» через брандмауэры

Я хотел бы настроить сетевое соединение (RTP или UDP) между двумя компьютерами в разных местах, каждый из которых находится за модемом/брандмауэром NAT. Я не хочу никаких модификаций брандмауэров.

Мое рабочее предположение заключается в том, что мне нужен бот где-то, к которому могут подключиться оба компьютера (например, учетная запись оболочки на интернет-сервере). Каждый компьютер подключается к боту, и бот позволяет двум компьютерам обновлять и запрашивать статус, а также обмениваться данными.

Это нормально, но это означает, что все данные проходят через бота. Есть ли способ соединить два компьютера без бота или, если это не удастся, разрешить боту отказаться от обмена данными после установки соединения? Я чувствую, что нет никакого способа сделать это, но мой TCP/IP немного ржавый...


person William Morris    schedule 11.02.2012    source источник
comment
@Адам Лисс: правильно, извините :-(   -  person William Morris    schedule 11.02.2012


Ответы (1)


Если вы ничего не предполагаете в NAT/брандмауэре, вы правы.

Насколько я знаю, перфорация не будет работать с перегруженным NAT (PAT), потому что исходный порт рандомизируется устройством NAT, и оно сопоставляет/сопоставляет как общедоступный адрес назначения, так и выбранный выбранный исходный порт.

UPnP может работать, но опять же вам нужно предположить, что он существует и включен на устройстве NAT.

Насколько я понимаю, у вас есть только два варианта, если вы хотите быть универсальным: 1. Настроить NAT. 2. Используйте прокси (упомянутый вами бот). Skype, например, использует второй, но делает это распределенным образом, используя каждого клиента Skype в качестве потенциального прокси-сервера (вероятно, только если он обнаруживает, что он не находится за NAT или не ограничен им).

person EdwardH    schedule 11.02.2012
comment
спасибо, я посмотрю на пробивку отверстий (хотя вы указываете, что это не сработает, я должен знать об этом больше). Разве UPnP не предназначен для обнаружения служб в частных сетях? Мой сценарий находится в публичной сети. - person William Morris; 11.02.2012
comment
Если я правильно понимаю, UPnP используется в частной сети для согласования между элементами. В этом контексте, чтобы позволить клиенту обновить маршрутизатор/брандмауэр на портах, которые ему нужно открыть для связи (на практике изменить маршрутизатор или брандмауэр автоматически), если это будет сделано, оба клиента могут поменяться портами, через которые они могут быть достигнутым (обмен, вероятно, будет происходить через прокси). - person EdwardH; 11.02.2012