Fórum Ubuntu Linux - PT

Suporte Técnico => Servidores => Tópico iniciado por: PauloGonvalves em 08 de Dezembro de 2021, 09:21

Título: Abrir Porto para publico Ubuntu Desktop 21.10
Enviado por: PauloGonvalves em 08 de Dezembro de 2021, 09:21
Boas gente,

Já estou farto de partir a cabeça e não estou a ter sucesso.
Estou com o  Ubuntu Desktop 21.10 atraves de uma VMWare
* ifconfig
192.168.160.140

A correr -> "nginx" no porto 80
                -> "web api dotnet" no porto 5000

Firewall
--------
* sudo ufw status verbose
Status: active
Logging: on (low)
Default: allow (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
80/tcp                     ALLOW IN    Anywhere                 
443                        ALLOW IN    Anywhere                 
Anywhere                   ALLOW IN    192.168.1.12             (IP do windows)         
Anywhere                   ALLOW IN    192.168.160.140     (IP do Ubuntu)     
5000/tcp                   ALLOW IN    Anywhere                 
80/tcp (v6)                ALLOW IN    Anywhere (v6)             
443 (v6)                   ALLOW IN    Anywhere (v6)             
5000/tcp (v6)              ALLOW IN    Anywhere (v6)

-----------------------------------------------

Chamadas com sucesso no ubuntu:
http://localhost
http://localhost:5000/weatherforecast

** Questão UM:
Porque dentro do Ubuntu tenho erro "Unable to connect" com:
http://192.168.160.140
http://192.168.160.140:5000/weatherforecast

Que me falta abrir ou configurar para o ubuntu aceitar chamadas do proprio IP da maquina ?

** Questão DOIS:
No windows tenho sucesso com:
http://192.168.160.140:80
mas NÃO tenho sucesso com
http://192.168.160.140:5000/weatherforecast

Que me falta abrir ou configurar no ubuntu para aceitar chamadas publicas para o porto 5000 ?


Obrigado
PauloGoncalves
Título: Re:Abrir Porto para publico Ubuntu Desktop 21.10
Enviado por: zekkerj em 08 de Dezembro de 2021, 19:48
Boa noite Paulo,

Execute o comando abaixo em uma janela de comandos e cole o resultado aqui, por favor.

netstat -atunpe | egrep ":(80|443|5000)"
Título: Re:Abrir Porto para publico Ubuntu Desktop 21.10
Enviado por: PauloGonvalves em 10 de Dezembro de 2021, 12:11
Boas zekkerj,

Aqui vai resposta teu pedido...

# sudo netstat -atunpe | egrep ":(80|443|5000)"
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      0          37074
tcp6     0       0 :::80                         :::     *                    LISTEN      0          37075

*Porque o serviço net6 que está no porto 5000 não recebe pedidos externos e o nginx no porto 80 recebe?

Thanks
Título: Re:Abrir Porto para publico Ubuntu Desktop 21.10
Enviado por: zekkerj em 10 de Dezembro de 2021, 16:08
Pq o serviço net6 não está ouvindo a porta 5000, nem a porta 443.
Revise a configuração do nginx.
Título: Re:Abrir Porto para publico Ubuntu Desktop 21.10
Enviado por: PauloGonvalves em 11 de Dezembro de 2021, 07:31
Boas,

Bolas esqueci-me de correr a App em net6, agora sim, este é o resultado de: # sudo netstat -atunpe | egrep ":(80|443|5000)"

tcp        0      0 127.0.0.1:5000          0.0.0.0:*               LISTEN      1000       55060      3300/./FirstApp     
tcp        0      0 127.0.0.1:5001          0.0.0.0:*               LISTEN      1000       55067      3300/./FirstApp     
tcp        0      0 0.0.0.0:80                    0.0.0.0:*               LISTEN      0              40018      951/nginx: master p
tcp6      0      0 ::1:5000                          :::*                      LISTEN      1000       55066      3300/./FirstApp     
tcp6      0      0 ::1:5001                          :::*                      LISTEN      1000       55068      3300/./FirstApp     
tcp6      0      0 :::80                                 :::*                      LISTEN      0              40019      951/nginx: master p

'nginx:master' dá resposta a pedidos externos ao servidor e  'FirstApp' só responde a pedidos dentro do servidor.

Título: Re:Abrir Porto para publico Ubuntu Desktop 21.10
Enviado por: zekkerj em 11 de Dezembro de 2021, 11:31
OK.
Veja só: as portas 5000 e 5001 só parecem estar ouvindo em localhost, então você não vai conseguir conexão direta com elas a partir de outras máquinas.
Vc fica dependendo do nginx receber os pedidos e redirecionar para a aplicação em localhost:5000.

Sugiro que vc investigue nos logs do nginx se há alguma pista de porque isso não está acontecendo.
Título: Re:Abrir Porto para publico Ubuntu Desktop 21.10
Enviado por: PauloGonvalves em 11 de Dezembro de 2021, 18:31
Obrigado pela ajuda...

Mas eu só instalei o nginx para fazer testes e tentar reduzir o dominio do erro.

Uma WebApi em net6 ela propria é um servidor (Kestrel), assim como uma app em java+spring tem embutido um servidor tomcat (acho).

Quando excuto a aplicação:  ./FirstApp
Mostra na consola o seguinte:
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://localhost:5000
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: https://localhost:5001
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.

Dizes tu: "Veja só: as portas 5000 e 5001 só parecem estar ouvindo em localhost, então você não vai conseguir conexão direta com elas a partir de outras máquinas."

Então que achas que deveria dizer?
Now listening on: http://localhost:5000 ?!?!?!?!?!
Em vez de "localhost" deveria dizer que IP ou o quê?

Obrigado
Título: Re:Abrir Porto para publico Ubuntu Desktop 21.10
Enviado por: zekkerj em 11 de Dezembro de 2021, 19:18
Eu não conheço essa aplicação, então não posso opinar sobre como ela deveria estar funcionando.

O que posso afirmar é que, para que você possa fazer conexão direta com a porta 5000, a aplicação precisa estar conectada ou ao IP externo, ou, o que é mais recomendável, ao endereço "0.0.0.0" (ou IPv6 "::"), que significa que ela está "ouvindo" todos os endereços ativos da máquina. Claro que isso tem implicações, e novamente, não conheço a aplicação, então não sei quais implicações seriam essas.

O nginx seria uma boa forma de vc redirecionar pedidos vindos de outras máquinas para essa aplicação sem ter que reconfigurá-la. Outra alternativa, mais pesada, seria o Apache. Mas tanto um quanto o outro vão exigir de você uma configuração para isso funcionar. Acho que no momento é o que está faltando, acertar essa configuração.

Quando estiver correta, você vai conseguir acessar sua aplicação usando algo como "http://192.168.160.140/FirstApp/", ou ainda "https://192.168.160.140/FirstApp/", o que seria ainda melhor.

Minha recomendação/sugestão é que você investigue um pouco mais o nginx, acredito que será de bom proveito para seu projeto.

Dê retornos!!!
Título: Re:Abrir Porto para publico Ubuntu Desktop 21.10
Enviado por: PauloGonvalves em 12 de Dezembro de 2021, 14:14

Boas zekkerj ,

Sucesso, Consegui  :D  :D

com a dica/explicação que me deste encontrei a resposta na net;  keyword -> ip "0.0.0.0" 

Linha de commando:
./FirstApp --urls "http://0.0.0.0:5000;https://0.0.0.0:5001"

consola:
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://0.0.0.0:5000
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: https://0.0.0.0:5001
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Production

E já consigo fazer pedidos fora do servidor  :D

Muito obrigado zekkerj  !!!!
Preciso estudar "redes" para efectivamente perceber a logica dos IPs....   ::)