Два соединения из-за firewal через один сервер - могут ли эти два соединения отправлять данные напрямую, не проходя через сервер? - PullRequest
0 голосов
/ 21 июня 2010

Есть три компьютера, сервер-клиент-B и сервер-C. Все подключены через TCP / IP. Компьютерный сервер A и клиент B находятся за брандмауэром и могут устанавливать только внешние соединения. Компьютерный сервер-C умеет как слушать, так и подключаться.

Сервер-A и сервер-C будут запускать мою программу и, следовательно, могут как слушать, так и подключаться, по крайней мере, я могу запрограммировать их для этого. Программное обеспечение, которое работает на Client-B, может только подключаться.

Я хочу установить прямое соединение от Клиента-Б к Серверу-А. Я не могу создать прямое соединение между клиентом-B и сервером-A (или наоборот) из-за брандмауэра. Но я могу подключить и Client-B, и Server-A к Server-C.

Чтобы заставить это работать, я мог бы создать прокси-сервер на сервере C, который просто перенаправляет пакеты с клиента B на сервер A (и наоборот), но я не хочу этого делать - я хочу прямой соединение между клиентом-B и сервером-A.

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

Общий пример будет; Домашний компьютер Хотите отправить некоторые музыкальные файлы на компьютер С. Оба они находятся за брандмауэрами / маршрутизаторами / чем угодно. Поэтому они могут подключаться только к какому-то серверу B через порт 80. И теперь я хочу, чтобы сервер B совершил какое-то волшебство, чтобы музыкальный файл не отправлялся через сервер B, а напрямую с A на C ...

Любая помощь или советы с благодарностью!

1 Ответ

0 голосов
/ 22 июня 2010

Если Server-A и Client-B отстают от NAT, тогда можно использовать дырокол .

Если нет NAT, то туннелирование tcp через server-C не таковоплохая идея.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...