Em um Raspberry PI que tenho, tudo o que eu executo, digamos, http://localhost:8080
, fica automaticamente visível para outros computadores na minha rede local em http://192.168.0.xxx:8080
ou http://pi.local:8080
.
Isso não acontece com o meu Mac. Se estou testando um aplicativo Angular executado em http://localhost:4200
, esse aplicativo não será visto http://mymac.local:4200
por outros computadores em minha rede local.
Tudo o que quero fazer é expor a porta localhost à minha LAN, não ao resto do mundo. No entanto, quando procuro uma solução para esse problema, tudo o que encontro são ferramentas como ngrok
, que não é o que eu quero. Não estou tentando deixar meu aplicativo visível para todo o mundo, apenas minha LAN.
Meu firewall do macOS não está ativado, portanto, até onde eu sei, não há problema com a porta específica bloqueada ativamente.
ATUALIZAR:
Uma solução improvisada que encontrei é esta:
browser-sync start --proxy "localhost:4200" --no-open --no-ghost-mode --no-notify --no-snippet --no-ui --port 4200
browser-sync
, no entanto, é especificamente orientado a HTTP e tenta mexer com o conteúdo que é servido de várias maneiras, daí todos os --no-xxx
sinalizadores que estou usando. Eu gostaria de encontrar uma solução semelhante e mais simples que encaminhe o tráfego TCP de maneira puramente neutra.
Não, você não. O Linux, como todos os outros sistemas operacionais modernos, tem o conceito de onde você está ouvindo. Isso é chamado de ligação de interface . Windows, Darwin, Linux e todos os outros sistemas operacionais modernos suportam isso e basicamente permitem que você especifique em qual interface deseja ouvir. Talvez você queira que o Apache escute 203.0.113.1 e nginx em 203.0.113.2? Nesse caso, você pode especificar isso nos arquivos de configuração.
Isso é comumente usado quando você deseja que algo esteja disponível apenas localmente: você diz para vincular a 127.0.0.1 ou ::1, que é o endereço de loopback. Isso não poderá ser acessado de nenhum outro host, pois está vinculado apenas à interface de loopback.
Há também um catch-all: 0.0.0.0, ou :: na linguagem do IPv6: vincular qualquer interface disponível. Isso escutará em todas as interfaces habilitadas, incluindo loopback e outras.
Resumindo: descubra como o serviço que você está usando define o vínculo da interface de rede e modifique-o para caber.
Se o serviço em execução for especificamente vinculado ao uso de loopback como uma interface de escuta, como codificado permanentemente e você não controlar a origem. Dinâmico direto, um túnel ssh, por exemplo.
Use socat https://stackoverflow.com/questions/16808543/install-socat-on-mac
Confira a documentação de ajuda, você pode escolher protocolos, interfaces para ligar, etc, e uma série de outras coisas.
SOCAT arrasa....
socat TCP-LISTEN:8080,fork TCP:127.0.1:8888