На физическом сервере у меня работает Apache и сервер WebDav (PyWebDav3). Это сервер Ubuntu 14.04, то есть со всеми графическими инструментами.

Сервер WebDav запускается с конфигурацией по умолчанию:

davserver -D /tmp -n

Документация показывает, что можно использовать другой хост:

-H, --host Host, где слушать (по умолчанию: localhost)

Мне нужно полное доменное имя. Итак, я выполняю:

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

И использовал это при запуске WebDav:

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

Я могу получить доступ к этому локальному серверу с помощью Firefox с помощью "localhost" в адресной строке. И удаленный с «192.168.1.101» в адресной строке.

Локально я могу получить доступ в Firefox localhost:8008. И использовать Nautilus в качестве WebClient в качестве Fileserver. Это хорошо работает.

Я отключил брандмауэр на сервере с помощью UFW, и теперь статус UFW отключен:

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

Я проверяю, какой порт открыт с:

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:~$ 

Таким образом, PyWebDav3 (который является программой на Python), кажется, открыт на порту 8008, но все же, после использования "p7" в качестве хоста только для 127.0.1.1

Когда используешь :

davserver -H 192.168.1.101 -D /tmp -n

И проверено:

bernard @ p7:~ $ sudo netstat -plnt Активные подключения к Интернету (только серверы) Proto Recv-Q Локальный адрес Send-Q Внешний адрес Состояние PID/ Имя программы 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 :::* СЛУШАТЬ 1131/ apache2
tcp6 0 0 ::1:631 :::* СЛУШАТЬ 701/ cupsd
Bernard @ p7:~ $

Удаленный телнет вызов:

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

Remote Я не могу получить доступ к 192.168.1.101:8008 через Firefox, так как клиент, кажется, зависает. Доступ с помощью Firefox - это то же самое действие, которое я выполнял на самом сервере и работал на сервере.

Затем я проверяю на сервере, что произошло (сообщение от 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
----------------------------------------

Похоже, что сервер PyWebDav3 не может обработать запрос.

На сервере в /var/log/auth.log это не видно сообщения об этом отказе.

Два вопроса:

  1. Что вызывает этот отказ
  2. Как это можно решить

2 ответа2

0

Попробуйте запустить его как слушать на всех интерфейсах:

davserver -D /tmp -H 0.0.0.0 -n

Я не смог воспроизвести проблему, как описано вначале, установка -H для моего сетевого интерфейса заставила его слушать правильный IP-порт в соответствии с netstat, аналогично установка -H для моего имени хоста также работает, но у меня есть мой Файл hosts, настроенный для обеспечения разрешения внешнего ip по умолчанию, как правило, имя хоста будет преобразовываться в localhost в окне linux.

Выполните, как указано выше, для всех интерфейсов, у меня нет проблем с установкой сервера с другого компьютера, который не был очень интересным, но не получил страницу индекса, не беспокоясь, и сервер регистрирует запрос. Так что это работает для меня.

пс. У меня есть сопровождающий для Pywebdav3, который является прямым портом pywebdav для Python 3, все функции должны работать точно так же в обоих проектах.

0

Есть две вещи, которые нужно подтвердить / попробовать: во-первых, подтвердить, что порт действительно открыт и обслуживается по удаленным адресам. Кажется, что в следующем файле определено имя хоста ... и я предполагаю, что вы не пытаетесь получить доступ к webdav с удаленного компьютера, набрав "localhost", поэтому я думаю, что решение заключается в следующем:

Обновите имя хоста до допустимого полного доменного имени:sudo nano <pywebdavroot>/server/config.ini

Вы можете подтвердить, какой адрес / порт открыт, используя netstat:sudo netstat -plnt

Позвольте мне знать, если это помогает.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .