Предположим, у вас есть хост (хоста), на котором запущена служба TCP (например, VNC-сервер на порту 5901). Вы хотите получить доступ к этой службе с другого хоста (hostb), на котором работает клиент VNC. Оба хоста подключены к Интернету, но есть некоторые ограничения:

1. Хоста может быть достигнута из Интернета, используя любой из его портов TCP

VNC-клиент на hostb подключается к hosta:5091 напрямую.

2. к хосте можно добраться из интернета только через SSH

От hostb:

ssh -L 5901:localhost:5901 usera@hosta

VNC-клиент на hostb подключается к localhost:5901

3. Хоста не может быть достигнута из Интернета (например, он находится за CGN / CGNAT). Тем не менее, hostb может быть достигнуто из Интернета

Из хоста:

ssh -R 5901:localhost:5901 userb@hostb

VNC-клиент на hostb подключается к localhost:5901

4. Хоста и хостб не могут быть доступны из Интернета. Они стоят за CGN / CGNAT; они могут создавать только исходящие соединения

Мы можем использовать другой хост (hostc), к которому можно обратиться из Интернета, используя ssh.

Из хоста:

ssh -R 5555:localhost:5901 userc@hostc

От hostb:

ssh -L 5901:localhost:5555 userc@hostc

VNC-клиент на hostb подключается к localhost:5901

У меня есть случай, подобный описанному выше 4-му сценарию, но я не хочу использовать третий хост (hostc), в основном из-за соображений производительности и стоимости.

Каковы мои альтернативные варианты (дешевле [= бесплатно] и лучше производительность)?


Примечание 1: Я проверил и определил , что хотя TCP перфорация не работает в моем случае, UDP перфорация делает работу. Однако мне нужен инструмент, который установит сеанс, ориентированный на соединение (аналогично TCP), по UDP, который будет использовать дырочку в UDP.

Примечание 2: Не используя ни одну из программ "дырокола UDP", доступных в Интернете, я решил написать свою собственную. Я все еще улучшаю это, но, как это, это работает довольно хорошо. Вы можете найти это здесь.

0