Соединение 2-х компьютеров за NAT-ом
От: Shmj Ниоткуда  
Дата: 19.02.23 00:21
Оценка:
Вот такое увидел: https://samy.pl/chownat/

До конца не понял, не проверял. Но вроде как с его помощью можно без сервера с белым IP соединить 2 компа, которые за NAT-ом.

Встречались ли вам еще подобные изделия? К примеру, передавать файлы напрямую между компами или синхронизировать напрямую, не опираясь на зависимость от каких либо серверов?

Кто может подробнее рассказать как это можно осуществить, как работает внутри?
Re: Соединение 2-х компьютеров за NAT-ом
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 19.02.23 01:29
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Кто может подробнее рассказать как это можно осуществить, как работает внутри?


Плохо работает.

Как предполагает автор:
Программа отправляет UDP пакет другому клиенту и указывает source port и destination port одно и то же значение, равное 2222.
NAT запоминает исходящий порт, чтобы принимать ответ.

Та же программа на другой машине отправляет первому клиенту пакет и указывает source port и destination port также равный 2222.
NAT первого клиента думает, что это пришел ответ и прокидывает пакеты куда надо.

Но на практике на любом роутере NAT переписывает порты, чтобы две программы, использующие один source порт на разных компьютерах могли работать.
Re: Соединение 2-х компьютеров за NAT-ом
От: SkyDance Земля  
Дата: 19.02.23 03:59
Оценка:
S>Кто может подробнее рассказать как это можно осуществить, как работает внутри?

Статью не читал, но чисто по описанию, это https://en.wikipedia.org/wiki/UDP_hole_punching
Re: Соединение 2-х компьютеров за NAT-ом
От: vopl Россия  
Дата: 19.02.23 05:20
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Вот такое увидел: https://samy.pl/chownat/


S>До конца не понял, не проверял. Но вроде как с его помощью можно без сервера с белым IP соединить 2 компа, которые за NAT-ом.


S>Встречались ли вам еще подобные изделия? К примеру, передавать файлы напрямую между компами или синхронизировать напрямую, не опираясь на зависимость от каких либо серверов?


S>Кто может подробнее рассказать как это можно осуществить, как работает внутри?


Это одна из техник NAT traversal, в частности, это пробивалка NAT для простейших случаев, можно погуглить по ключевым словам UDP hole punching, Full-cone NAT
Re: Соединение 2-х компьютеров за NAT-ом
От: Pzz Россия https://github.com/alexpevzner
Дата: 19.02.23 18:13
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Вот такое увидел: https://samy.pl/chownat/


S>До конца не понял, не проверял. Но вроде как с его помощью можно без сервера с белым IP соединить 2 компа, которые за NAT-ом.


Эта хренотень требует, чтобы клиент знал внешный IP-адрес сервера. А откуда он его узнает?

Вот тут-то отдельный третий серверочек и необходим, чтобы помочь пирам найти друг друга.

S>Встречались ли вам еще подобные изделия? К примеру, передавать файлы напрямую между компами или синхронизировать напрямую, не опираясь на зависимость от каких либо серверов?


Сам такое делал.

S>Кто может подробнее рассказать как это можно осуществить, как работает внутри?


Начни вот с этого: https://en.wikipedia.org/wiki/UDP_hole_punching
Re[2]: Соединение 2-х компьютеров за NAT-ом
От: m2user  
Дата: 19.02.23 22:44
Оценка:
Pzz>Эта хренотень требует, чтобы клиент знал внешный IP-адрес сервера. А откуда он его узнает?
Pzz>Вот тут-то отдельный третий серверочек и необходим, чтобы помочь пирам найти друг друга.

Там же прямо посреди страницы написано:

A new version, pwnat, is available which allows the server
to run WITHOUT ever knowing any client IP addresses.
Learn more here!


Re[3]: Соединение 2-х компьютеров за NAT-ом
От: Pzz Россия https://github.com/alexpevzner
Дата: 19.02.23 22:51
Оценка:
Здравствуйте, m2user, Вы писали:

Pzz>>Эта хренотень требует, чтобы клиент знал внешный IP-адрес сервера. А откуда он его узнает?

Pzz>>Вот тут-то отдельный третий серверочек и необходим, чтобы помочь пирам найти друг друга.

M>Там же прямо посреди страницы написано:


M>

M>A new version, pwnat, is available which allows the server
M> to run WITHOUT ever knowing any client IP addresses.
M> Learn more here!


Ну да. Серверу стало не обязательно знать адрес клиента. А клиенту знать адрес сервера по-прежнему обязательно.

Да ты сам подумай. Вот ты запустил сервера и клиента. И я. Как твой клиент сообразит, что ему надо пойти к твоему серверу, а не к моему, если у него никакого способа сослаться на сервер нет?
Re[4]: Соединение 2-х компьютеров за NAT-ом
От: m2user  
Дата: 01.03.23 03:43
Оценка:
Pzz>Ну да. Серверу стало не обязательно знать адрес клиента. А клиенту знать адрес сервера по-прежнему обязательно.
Pzz>Да ты сам подумай. Вот ты запустил сервера и клиента. И я. Как твой клиент сообразит, что ему надо пойти к твоему серверу, а не к моему, если у него никакого способа сослаться на сервер нет?

ну, для определения и согласования адресов и портов третий сервер всегда понадобится. Главное, чтобы дальнейший обмен данными шёл напрямую без relay.

Что касается описанной автором pwnat схемы с ICMP Time Exceeded, то она полезна в каком-то очень частном случае, когда третий сервер сначала присутствовал, но на момент установки соединения недоступен.

The proposed technique assumes that the client has some-how learned the current external (globally routable) IP address of the server’s NAT.
This could be due to a previous connection between the two systems or a third party having provided the IP address in a previous exchange.
Note that we specifically assume that no third party is available at the time when the client attempts to connect to the server behind the NAT.

https://samy.pl/pwnat/pwnat.pdf
Re[2]: Соединение 2-х компьютеров за NAT-ом
От: B0FEE664  
Дата: 04.04.23 16:38
Оценка:
Здравствуйте, Pzz, Вы писали:

S>>До конца не понял, не проверял. Но вроде как с его помощью можно без сервера с белым IP соединить 2 компа, которые за NAT-ом.

Pzz>Эта хренотень требует, чтобы клиент знал внешный IP-адрес сервера. А откуда он его узнает?
Pzz>Вот тут-то отдельный третий серверочек и необходим, чтобы помочь пирам найти друг друга.

Для IP6 ничего не поменялось?
И каждый день — без права на ошибку...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.