Назад | Перейти на главную страницу

Брокер Прямое подключение

Можно ли использовать сервер со статическим IP-адресом для прямого соединения между двумя клиентами, каждый из которых находится за NAT?

Я использовал autossh и переадресацию портов, чтобы установить соединение через сервер, но я считать это означает, что любое взаимодействие между клиентами потребляет ресурсы сервера (вычислительные затраты на пересылку пакетов и пропускную способность). Я не могу проверить себя, потому что в данный момент у меня нет доступа к одному из клиентов.

То, что я представляю себе схематично (У меня есть A, B и сервер, поэтому какой бы клиент ни подключился первым, может просто дождаться подключения другого):

client A -----> server <----- client B

Я думаю, что метод обратного туннелирования делает это:

A sends packet -----> server,
server receives packet,
server sends packet -----> B,
B receives packet

и наоборот. Я бы хотел:

A connects -----> server (connection stays open until B connects)
B connects -----> server (server tells B about A)
A and B can communicate bidirectionally while the connection stays open

(если есть разъединения, A и B могут повторить шаг подключения)

Я думаю, что это должно быть возможно (разве не так работают протоколы P2P?), Но я не знаю, как это настроить.

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

Ты прав

Есть два инструмента от Сами Камкар позволяя двум хостам за NAT общаться друг с другом, pwnat и Chownat. На сайте есть описания уловок / техники, если вы хотите реализовать свое решение с помощью этого метода, или вы можете использовать инструменты, опубликованные Сэми.

В широком смысле chownat для общения A <-> B, когда оба соглашаются, что они хотели бы общаться; и pwnat для связи A-> B, которую B не ожидает. Вы можете использовать первые, если они разделяют состояние на сервере, чтобы согласовать, когда открывать chownat туннель; или иным образом использовать pwnat и вообще не нужен сервер.