Как надежно передать данные между двух компьютеров через NAT?
Есть задача: нужно передавать видеопоток по RTP используя gstreamer и передавать сырые данные по TCP от одного компьютера сидящего за NAT/firewall к другому компьютеру сидящему за NAT/firewall. Имеется внешний сервер с белым адресом. И хорошо бы без надобности не загружать этот сервер.
Вопрос: как решить эту проблему надежнее всего?
Будет хорошо, если это будет библиотека на python для сервера и клиентов.
Вам нужен протокол STUN - он использует внешний сервер только для установления соединения, а дальше обмен идет "точка-точка". Можете поискать его готовые реализации, либо разработать что-то самостоятельно по его подобию.