Назад | Перейти на главную страницу

Нет маршрута к хосту на порту 80, но порт открыт

Я пытаюсь сделать свою страницу состояния nginx с машины A (Ubuntu 16.04) доступной с машины B (Ubuntu 20.04), но получаю сообщение об ошибке port 80: No route to host при попытке доступа к странице.

Обе машины подключены через внутреннюю сеть с адресами 10.3.1.1 и 10.3.2.201.

ping работает в обоих направлениях, и я настроил свой файл конфигурации nginx следующим образом:

server {
    listen 127.0.0.1;
    listen 10.3.1.1:80;
    root /home/www/public_html;
    index index.html;

    location /basic_status {
      stub_status on;
      allow 127.0.0.1;
      allow 10.3.2.201;
      allow 10.3.1.1;
      deny all;
    }
}

По какой-то причине я могу получить доступ к /basic_status страница на машине A с машины A, но не с машины B:

ubuntu@machine-a:~$ curl http://10.3.1.1/basic_status
Active connections: 1
server accepts handled requests
 187325 187325 2010480
Reading: 0 Writing: 1 Waiting: 0

ubuntu@machine-a:~$ curl http://127.0.0.1/basic_status
Active connections: 1
server accepts handled requests
 187326 187326 2010481
Reading: 0 Writing: 1 Waiting: 0
ubuntu@machine-b:~$ curl http://10.3.1.1/basic_status
curl: (7) Failed to connect to 10.3.1.1 port 80: No route to host

ufw настроен на машине A для приема входящих подключений к порту 80 из любого места:

ubuntu@machine-a:~$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
80                         ALLOW       Anywhere
443                        ALLOW       Anywhere
80 (v6)                    ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

На данный момент я не знаю, какие еще настройки могут вызывать это ...

После дальнейшего расследования выяснилось, что UFW «говорил правду» - но он просто создает правила для iptables от вашего имени ... и уже существовала куча правил iptables, заменяющих UFW. После хорошей очистки теперь работает.