Ao ouvir uma porta (taskserver), o endereço local deve ser 'localhost' ou '0.0.0.0'?

3

Estou tentando fazer com que um servidor taskd funcione em meu computador (Arch Linux) por dias. O problema que estou enfrentando agora é que a documentação de configuração do taskd ( link ) diz que eu tem que usar a saída de hostname -f como um endereço (eu não sei o que 'CN' abrevia). Eu também tentei com meu endereço IP local começando com 192.168 , mas isso me deu o erro de handshake que você pode encontrar no guia de solução de problemas que eu vinculei.

Comecei a investigar um pouco, porque não consegui acessar meu servidor de tarefas de outras máquinas. Eu encontrei isto:

Quando ouço a porta que uso, seja 54000 , usando nc -l -p 54000 , posso ver isso como a saída de ss -lntu | grep 54000 :

tcp    LISTEN   0        10                0.0.0.0:54000          0.0.0.0:*

Considerando que quando inicio taskd , que escuta na mesma porta, ss me dá:

tcp    LISTEN   0        4               127.0.0.1:54000          0.0.0.0:*

Agora de uma máquina diferente, tentei verificar a porta enquanto ouço com nc -vv 192.168.x.y 54000 (com o endereço IP do servidor) e descobri que quando o endereço local é 0.0.0.0 , a porta é exibida como aberta. Caso contrário, aparece como fechado. Eu acho que isso é porque 127.0.0.1 é essencialmente localhost e não consigo ver isso da minha rede?

taskd também possui um arquivo de configuração com uma opção de servidor na qual eu inseri a saída de hostname -f , que é watermelon.localdomain , conforme instruído pela documentação. Eu suponho que é o que é traduzido para localhost , certo?

Eu agradeceria muito sua ajuda, obrigado antecipadamente!

ATUALIZAÇÃO 2018/04/21

Consegui resolver o problema definindo a variável server na configuração para 0.0.0.0:54000 , assim, eu obtive taskd para ouvir qualquer endereço na porta 54000 . Agora tudo funciona lindamente. A documentação do taskd foi um pouco vaga no tópico, eu acho.

    
por bertalanp99 17.04.2018 / 21:51

1 resposta

4

Os soquetes são configurados para escutar em um IP e porta específicos. Normalmente, há duas configurações principais que você usaria para um soquete e uma terceira que não é tão comum, mas é útil.

1) Permitir apenas a comunicação da máquina que executa o serviço

Isso é configurado quando você vê 127.0.0.1:54000 . SOMENTE a máquina host pode acessar este serviço. Você pode usar algo como um proxy reverso para permitir o acesso externamente, mas nada na rede poderá se conectar a ele.

2) Para todas as máquinas em qualquer rede acessível a partir do servidor

Isso é configurado quando você vê 0.0.0.0:54000 . Isso permite que qualquer coisa fale com esse serviço, desde que os pacotes possam chegar até ele.

3) Para apenas uma rede específica, o servidor é associado a

Isso é configurado quando você vê 192.168.0.2:54000 (ou qualquer IP). Isso significa que SOMENTE essa sub-rede dessa rede tem permissão de acesso.

Se você quiser permitir que seu serviço esteja conectado a partir de outras máquinas na rede, ele precisa estar vinculado a 0.0.0.0 ou ao IP local.

    
por 17.04.2018 / 23:45