До конца не понял, не проверял. Но вроде как с его помощью можно без сервера с белым IP соединить 2 компа, которые за NAT-ом.
Встречались ли вам еще подобные изделия? К примеру, передавать файлы напрямую между компами или синхронизировать напрямую, не опираясь на зависимость от каких либо серверов?
Кто может подробнее рассказать как это можно осуществить, как работает внутри?
Здравствуйте, Shmj, Вы писали:
S>Кто может подробнее рассказать как это можно осуществить, как работает внутри?
Плохо работает.
Как предполагает автор:
Программа отправляет UDP пакет другому клиенту и указывает source port и destination port одно и то же значение, равное 2222.
NAT запоминает исходящий порт, чтобы принимать ответ.
Та же программа на другой машине отправляет первому клиенту пакет и указывает source port и destination port также равный 2222.
NAT первого клиента думает, что это пришел ответ и прокидывает пакеты куда надо.
Но на практике на любом роутере NAT переписывает порты, чтобы две программы, использующие один source порт на разных компьютерах могли работать.
Здравствуйте, Shmj, Вы писали:
S>Вот такое увидел: https://samy.pl/chownat/
S>До конца не понял, не проверял. Но вроде как с его помощью можно без сервера с белым IP соединить 2 компа, которые за NAT-ом.
S>Встречались ли вам еще подобные изделия? К примеру, передавать файлы напрямую между компами или синхронизировать напрямую, не опираясь на зависимость от каких либо серверов?
S>Кто может подробнее рассказать как это можно осуществить, как работает внутри?
Это одна из техник NAT traversal, в частности, это пробивалка NAT для простейших случаев, можно погуглить по ключевым словам UDP hole punching, Full-cone NAT
Здравствуйте, Shmj, Вы писали:
S>Вот такое увидел: https://samy.pl/chownat/
S>До конца не понял, не проверял. Но вроде как с его помощью можно без сервера с белым IP соединить 2 компа, которые за NAT-ом.
Эта хренотень требует, чтобы клиент знал внешный IP-адрес сервера. А откуда он его узнает?
Вот тут-то отдельный третий серверочек и необходим, чтобы помочь пирам найти друг друга.
S>Встречались ли вам еще подобные изделия? К примеру, передавать файлы напрямую между компами или синхронизировать напрямую, не опираясь на зависимость от каких либо серверов?
Сам такое делал.
S>Кто может подробнее рассказать как это можно осуществить, как работает внутри?
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!
Здравствуйте, 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!
Ну да. Серверу стало не обязательно знать адрес клиента. А клиенту знать адрес сервера по-прежнему обязательно.
Да ты сам подумай. Вот ты запустил сервера и клиента. И я. Как твой клиент сообразит, что ему надо пойти к твоему серверу, а не к моему, если у него никакого способа сослаться на сервер нет?
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.
Здравствуйте, Pzz, Вы писали:
S>>До конца не понял, не проверял. Но вроде как с его помощью можно без сервера с белым IP соединить 2 компа, которые за NAT-ом. Pzz>Эта хренотень требует, чтобы клиент знал внешный IP-адрес сервера. А откуда он его узнает? Pzz>Вот тут-то отдельный третий серверочек и необходим, чтобы помочь пирам найти друг друга.