Старый как мир вопрос, но ответа я на него не нашел.
Есть два клиента, только ipv4, все сидят за nat провайдера. Как в данном случае можно дать доступ клиенту2 на порт клиента1, при этом у них должен быть прямой доступ, по типу bittorrent? Да, я слышал, что для этого все равно требуется сервер с белый адресом, но тем не мение, нигде четко не указано, как именно оно работает, и какие есть реализации сервера.
Да, безусловно, я в курсе существования vpn, но тут вопрос про ПРЯМОЕ соединение между пирами, например - bittorrent.
Симметричный NAT - самая жесть. Насколько помню, если сразу у обоих клиентов оказался симметричный, то его не пробить для прямого соединения, только через сервер весь обмен ретранслировать. Если же симметричный с одного конца, то пробивается труднее других вариантов, но всё же пробивается.
В то же время, только симметричный NAT может служить эрзац-файерволом, а другие типы NAT в этом плане - не более, чем "авось".
Владимир Коротенко, OpenVPN не поддерживает установку прямых соединений. Трафик между пирами всегда идёт сначала на сервер OpenVPN, затем в точку назначения. В вопросе указано, что соединение должно устанавливаться напрямую.
Владимир Коротенко, но я не писал, что это невозможно, как можно было сделать такой вывод из моего комментария?
Как раз на практике в большинстве случаев это возможно, хоть и не гарантировано. Человек, которому вы отвечаете - ValdikSS - сам вплотную занимается (или занимался) этой темой, а вы ему говорите, что это невозможно.
читаем RFC по TCP IP
В стеке TCP/IP кроме TCP и IP есть ещё UDP.
С точки зрения реализации NAT нет особой разницы между TCP и UDP, а вот отсутствие соединения даёт прекрасную возможность обманывать NAT. В сущности, NAT traversal - это типично хакерский метод, но настолько полезный, что доведён до применения в промышленных масштабах.
hint000, NATу для перекидывания пакетов необходима установленная сессия (tcp udp не суть)
манипуляции с заголовками не рассматриваем и вариантов тогда не остается только честный коннект к 3 хосту
Арендуешь VPS
устанавливаешь туда ВПН сервер(любой который нравится)
Подключаешься обоими клиентами к нему
Далее либо общаешься внутри ВПН сети по их адресам, либо делаешь порброс нужных портов с VPS> клиент1 внутри ВПНа
Всё