Не удается прослушать следующее облако на порту 82 - PullRequest
3 голосов
/ 15 января 2020

Я установил nextcloud с привязкой и настроил его для прослушивания порта 82 с sudo snap set nextcloud ports.http=82, firewal также открыт на этом порту, но он не отвечает.

исследует, кажется, что это прослушивание порта 82, но только на ipv6 (pid 5231):

ubuntuadmin@ubuntu-1804-srv:~$ sudo netstat -tulpn
[sudo] password for ubuntuadmin:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:9236          0.0.0.0:*               LISTEN      2476/gitaly
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      844/systemd-resolve
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1275/sshd
tcp        0      0 127.0.0.1:3000          0.0.0.0:*               LISTEN      2464/grafana-server
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      1711/master
tcp        0      0 0.0.0.0:5050            0.0.0.0:*               LISTEN      2351/nginx: master
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      2351/nginx: master
tcp        0      0 0.0.0.0:8060            0.0.0.0:*               LISTEN      2351/nginx: master
tcp        0      0 127.0.0.1:9121          0.0.0.0:*               LISTEN      2400/redis_exporter
tcp        0      0 127.0.0.1:9090          0.0.0.0:*               LISTEN      2412/prometheus
tcp        0      0 127.0.0.1:9187          0.0.0.0:*               LISTEN      2438/postgres_expor
tcp        0      0 127.0.0.1:9093          0.0.0.0:*               LISTEN      2420/alertmanager
tcp        0      0 127.0.0.1:5000          0.0.0.0:*               LISTEN      2488/registry
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      1512/mysqld
tcp        0      0 127.0.0.1:9100          0.0.0.0:*               LISTEN      2419/node_exporter
tcp        0      0 127.0.0.1:9229          0.0.0.0:*               LISTEN      2239/gitlab-workhor
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      3156/unicorn master
tcp        0      0 127.0.0.1:9168          0.0.0.0:*               LISTEN      2418/puma 4.3.1.git
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      2351/nginx: master
tcp        0      0 127.0.0.1:8082          0.0.0.0:*               LISTEN      2368/sidekiq 5.2.7
tcp6       0      0 :::22                   :::*                    LISTEN      1275/sshd
tcp6       0      0 :::25                   :::*                    LISTEN      1711/master
tcp6       0      0 :::9094                 :::*                    LISTEN      2420/alertmanager
tcp6       0      0 ::1:9168                :::*                    LISTEN      2418/puma 4.3.1.git
tcp6       0      0 :::82                   :::*                    LISTEN      5231/httpd
udp        0      0 127.0.0.53:53           0.0.0.0:*                           844/systemd-resolve
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           4558/mdns-publisher
udp6       0      0 :::9094                 :::*                                2420/alertmanager
udp6       0      0 :::5353                 :::*                                4558/mdns-publisher

(nginx для Gitlab)

Почему ?? Что я должен изменить или добавить, чтобы сказать ему, чтобы он слушал tcp:?

С уважением,

1 Ответ

2 голосов
/ 22 января 2020

Из источника привязки , кажется, apache настроен на прослушивание IPv4-сопоставленного сокета IPv6 :

Если вы хотите Apache для обработки соединений IPv4 и IPv6 с минимальным количеством сокетов, что требует использования IPv4-сопоставленных адресов IPv6, укажите параметр конфигурации --enable-v4-mapped и используйте общие директивы c Listen, как показано ниже:

Listen 80

При использовании --enable-v4-mapped директивы Listen в файле конфигурации по умолчанию, созданном Apache, будут использовать эту форму. --enable-v4-mapped является значением по умолчанию на всех платформах, кроме FreeBSD, NetBSD и OpenBSD, так что, вероятно, именно так был построен ваш Apache.

Если вы хотите, чтобы Apache обрабатывал только соединения IPv4 независимо от того, что ваша платформа и APR будут поддерживать, укажите IPv4-адрес во всех директивах Listen, как в следующих примерах:

Listen 0.0.0.0:80 Listen 192.170.2.1:80

Эта проблема Github , кажется, также поддерживает мою теорию.

Пока это не исправлено, я вижу несколько вариантов:

  1. используйте socat для настройки переадресации с ipv4 на ipv6 (см. этот ответ SE )
  2. используйте обходной путь , предоставляемый на github (который в основном включает настройку nginx и обратное проксирование apache)
  3. , настройте файл и перестройте оснастка из источника?
...