Проблема с настройкой правила брандмауэра входа виртуальной машины Google Compute Engine

#google-compute-engine #firewall

#google-compute-engine #брандмауэр

Вопрос:

У меня есть небольшая настройка виртуальной машины GCE с npm и node.js приложение, работающее на порту 8080. Я могу сделать:

«‘curl http://localhost:8080 «‘

и верните страницу индекса, чтобы сервер был запущен.

Я сделал IP-адрес статическим (не эфемерным).

Вот настройки правила фильтрации:

введите описание изображения здесь

Однако я не могу подключиться извне, и он просто говорит, что сайт недоступен, а сервер отказался подключаться. Я включил ведение журнала для правила брандмауэра, но не вижу там никакого трафика, поэтому озадачен тем, что это может означать. Я предполагаю, что трафик даже не попадает в правило?

Спасибо за любую помощь.

Комментарии:

1. Отредактируйте свой вопрос и покажите свой код, который создает сервер и настраивает прослушивание. Скорее всего, ваш сервер прослушивает localhost 127.0.0.1 все интерфейсы или вместо 0.0.0.0 них.

2. Привет, Джон, это было оно. Если вы добавите это в качестве ответа, я подтвержду. Спасибо!

Ответ №1:

Скорее всего, ваш node.js приложение прослушивает localhost , или 127.0.0.1 (IPv4) или [::1] (IPv6). Эти адреса назначаются интерфейсу обратной связи, что означает, что принимаются только подключения изнутри компьютера.

Решение заключается в изменении вашего кода для прослушивания всех сетевых интерфейсов. Это определяется как псевдоадрес 0.0.0.0 .

В следующем примере обратите внимание на строку, которая содержит listen(8080, "0.0.0.0"); . Это определяет, какие интерфейсы приложение прослушивает для подключений.

 var http = require('http');

http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello Worldn');
}).listen(8080, "0.0.0.0");
console.log('Server is running and listening on all interfaces');