ufw desativado, mas ainda assim a conexão é recusada

0

Em um servidor físico, tenho o Apache e um servidor WebDav (PyWebDav3) em execução. Este é um servidor Ubuntu 14.04, portanto, com todas as ferramentas gráficas.

O servidor WebDav é iniciado com a configuração padrão:

davserver -D /tmp -n

A documentação mostra que um host diferente pode ser usado:

-H, --host Host where to listen on (default: localhost)

Eu preciso de um FQDN. Então eu executo:

bernard@p7:~$ hostname -f
p7
bernard@p7:~$ 

E usou isso ao iniciar o WebDav:

bernard@p7:/etc$ davserver -D /tmp -n -H "p7"
2016-07-27 15:42:32,716 WARNING Authentication disabled!
Listening on p7 (8008)

Eu posso acessar este servidor local com o Firefox com "localhost" na URLbar. E remoto com "192.168.1.101" na URLbar.

Localmente, posso acessar no Firefox localhost: 8008. E use o Nautilus como WebClient como servidor de arquivos. Isso funciona bem.

Eu desativei o firewall no servidor com o ufw, e agora o status do ufw está desativado:

bernard@p7:~$ sudo ufw status
Status: inactive
bernard@p7:~$ 

Verifico qual porta está aberta com:

bernard@p7:~$ sudo netstat -plnt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN      1087/dnsmasq    
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      701/cupsd       
tcp        0      0 127.0.1.1:8008          0.0.0.0:*               LISTEN      3465/python3    
tcp6       0      0 :::80                   :::*                    LISTEN      1131/apache2    
tcp6       0      0 ::1:631                 :::*                    LISTEN      701/cupsd       
bernard@p7:~$ 

Então PyWebDav3 (que é um programa em Python) parece estar aberto na porta 8008, mas ainda assim, depois de usar o "p7" como host apenas para 127.0.1.1

Ao usar:

davserver -H 192.168.1.101 -D /tmp -n

e testado:

bernard @ p7: ~ $ sudo netstat -plnt Conexões ativas da Internet (somente servidores) Proto Recv-Q Enviar-Q Endereço local Estado do endereço externo PID / Nome do programa tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN 1087 / dnsmasq
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 701 / cupsd
tcp 0 0 192.168.1.101:8008 0.0.0.0:* LISTEN 3743 / python3
tcp6 0 0 ::: 80 ::: * ESCUTE 1131 / apache2
tcp6 0 0 :: 1: 631 ::: * ESCUTE 701 / cupsd
bernard @ p7: ~ $

Chamada telnet remota:

bernard@vbox11:~$ telnet 192.168.1.101 8008
telnet: Unable to connect to remote host: Connection timed out
bernard@vbox11:~$

Remoto eu não posso acessar 192.168.1.101:8008 com o Firefox como cliente parece travar. O acesso com o firefox é a mesma ação que fiz no próprio servidor e funcionou no servidor.

Então eu verifico no servidor o que aconteceu (mensagem do PyWebDav3):

Exception happened during processing of request from ('192.168.1.66', 42801)
Traceback (most recent call last):
  File "/usr/lib/python3.4/socketserver.py", line 617, in process_request_thread
    self.finish_request(request, client_address)
  File "/usr/lib/python3.4/socketserver.py", line 344, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/usr/lib/python3.4/socketserver.py", line 673, in __init__
    self.handle()
  File "/usr/lib/python3.4/http/server.py", line 398, in handle
    self.handle_one_request()
  File "/usr/lib/python3.4/http/server.py", line 368, in handle_one_request
    self.raw_requestline = self.rfile.readline(65537)
  File "/usr/lib/python3.4/socket.py", line 374, in readinto
    return self._sock.recv_into(b)
ConnectionResetError: [Errno 104] Connection reset by peer
----------------------------------------

Portanto, parece que o servidor PyWebDav3 não é capaz de lidar com o pedido.

No servidor em /var/log/auth.log, não aparece uma mensagem sobre essa recusa.

Duas perguntas:

  1. O que causa essa recusa
  2. Como isso pode ser resolvido
por Bernard 27.07.2016 / 13:21

2 respostas

0

Existem 2 coisas para confirmar / tentar: Em primeiro lugar, confirme se a porta está realmente aberta e sendo servida para endereços remotos. Parece que no arquivo a seguir há um nome de host definido ... e eu estou supondo que você não está tentando acessar o webdav de uma máquina remota, digitando "localhost", então eu acho que a solução é:

Atualize o nome do host para um FQDN válido por: sudo nano <pywebdavroot>/server/config.ini

Você pode confirmar qual endereço / porta está aberto usando o netstat: sudo netstat -plnt

Deixe-me saber se isso ajuda.

    
por 27.07.2016 / 13:43
0

Tente usá-lo para ouvir em todas as interfaces:

davserver -D /tmp -H 0.0.0.0 -n

Eu não consegui reproduzir o problema como descrito inicialmente, definindo -H para minha interface de rede fez com que ele ouvisse na ip: porta correta conforme netstat, da mesma forma configurando -H para meu nome de host também, mas eu tenho meu arquivo hosts configurado para garantir que o ip externo seja resolvido por padrão, normalmente um nome de host será resolvido para localhost em uma caixa linux.

Executar como acima em todas as interfaces, não tenho problemas em enviar o servidor de outro computador, o que não era muito interessante, mas não tive nenhuma página de índice, e o servidor registra a requisição. Então está funcionando para mim.

ps. Eu tenho o mantenedor do Pywebdav3 que é uma porta direta do pywebdav para o python 3, todos os recursos devem funcionar exatamente da mesma maneira em ambos os projetos.

    
por 28.07.2016 / 03:56