например, я мог бы запустить веб-сервер на моем компьютере с подключением к маршрутизатору, который предполагает, что у него нет публичного IP-адреса. Как я могу отправить на него данные с другого клиента или сервера?
Веб-сокет кажется многообещающим, но мне нужно решение с хорошей поддержкой в командной строке, не требующее изменения настроек маршрутизатора, таких как переадресация портов.
решение1
Перенаправление порта
Переадресация портов — это, безусловно, самое простое решение.
Обратный SSH-туннель
Другой способ — задействовать сторонний общедоступный сервер в качестве ретранслятора. Вам придется инициировать соединение с этим сторонним сервером с веб-сервера (поскольку ваш маршрутизатор блокирует входящие соединения), а затем использовать это соединение для ретрансляции HTTP-трафика через сторонний сервер.
Это почти наверняка можно сделать с помощью SSH-туннелирование
Мне часто нужно получитьдоступ к машине за брандмауэромдля веб-разработки, но у меня нет VPN. Не проблема — просто используйте обратный SSH-туннель. К концу этого руководства мы сможем подключаться по SSH к удаленному серверу, а такжепросмотреть любые веб-страницы, к которым сервер имеет доступ.
(выделено мной)
решение2
В качестве альтернативы туннелированию ssh вы можете рассмотреть туннелирование ipv6. Я используюgogo6/freenet6 как провайдер ipv6(хотя есть и другие провайдеры). В Windows клиент обычно просто работает. В Linux вам нужно будет скомпилировать клиент. Однако после этого вы сможете получить доступ к системе через любую систему, поддерживающую ipv6.
Преимущество настройки туннеля IPv6 заключается в том, что вы можете выполнять все действия так, как будто это обычный публичный IP-адрес, поскольку так оно и есть.