Node.js'ye Ubuntu'daki harici IP'lerden erişilemiyor


18

Eminim bu çok asil, affet beni. Ubuntu 10.04'ün 8080 numaralı bağlantı noktasında bir node.js sunucusu çalıştırmaya çalışıyorum.

İşte sunucudaki iptables -L'nin sonucu:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Ve işte nmap -p 8080 (ip adresini düzenledi çünkü her şey açık ya da açık olmalı)

nmap 173.203.xxx.xxx -p 8080 -A

Starting Nmap 5.00 ( http://nmap.org ) at 2011-05-19 22:52 PDT
Interesting ports on xxx (173.203.xxx.xxx):
PORT     STATE  SERVICE    VERSION
8080/tcp closed http-proxy

Neden dünyada 8080 kapalı olarak görülüyor? Bunu eklemek yardımcı olmadı:

iptables -A OUTPUT -p tcp  --dport 8080 -j ACCEPT
iptables -A INPUT -p tcp  --dport 8080 -j ACCEPT

Gerçekten kafam karıştı.

Bunu ekleyeceğim, yardımcı olması durumunda, ama bilmiyorum

 netstat -pan | grep 80
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN          16785/node      
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      16471/apache2

Apache'de 80 numaralı bağlantı noktasından çalışan normal web siteme erişebilirim, ancak node.js sunucusuna dışarıdan erişilemez. Sunucunun kendisinden erişmek iyi çalışıyor.

Benim sorum şu: Bunu hata ayıklamaya nasıl giderdim? Bazı bağlantı noktalarını engelleyen iptables'dan başka bir şey olabilir mi? Ne olduğunu nasıl öğrenebilirim?

Herhangi bir yardım çok takdir!


Buraya Google aracılığıyla gelenlere: Google bulutunda hizmet barındırdıysanız ve bu sorunla karşılaşıyorsanız, önce bağlantı noktasını bulut güvenlik duvarı istisna kurallarına ve işletim sistemi güvenlik duvarına eklediğinizden emin olun
Atul

Yanıtlar:


30

Son netstat çıktısını eklediğiniz için teşekkürler, gerçekten yardımcı oldu. 127.0.0.1 gibi yerel ana bilgisayar IP'sini dinlediği için node.js'ye dışarıdan erişemezsiniz. Node.js dosyasını 0.0.0.0'da dinleyecek şekilde yapılandırmanız gerekir, böylece makinenizin tüm IP'lerindeki bağlantıları kabul edebilir.

var http = require('http');

http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\n');
}).listen(8080, "0.0.0.0");
console.log('Server running at http://0.0.0.0:8080/');

Bundan şüpheliydim, ama daha önce hiç 0.0.0.0 ile karşılaşmadım, bu yüzden dikkate almadım. Düzeltmenizi uyguladım ve başardı, teşekkürler!
Mikael Gramont

Benim de bu problemim var. Bu kodu izledim ancak nodejs sunucuma dışarıdan hala erişilemiyor.
xybrek

Evet, burada da aynı.

1
benim için çalışmadı
Jitendra Pancholi

Düğüm v8.1.3 ile MacOS Sierra'da benim için çalışmadı
Liran H

4

Netstat çıkışınıza göre, 8080 numaralı bağlantı noktası yalnızca localhost olan 127.0.0.1 için açıktır, bu nedenle sunucudan (localhost olan) erişim başka bir yerden değil, çalışır.

Doğru çıktı,

0.0.0.0:8080

0

Aynı sorunu yaşadım.

Aşağıdakileri yaptım

  1. Google Cloud Console'da Nodejs için kullandığınız bağlantı noktalarını etkinleştirmeniz gerekir
  2. Ubuntu Sunucusunda aynı bağlantı noktalarını etkinleştirmek için aşağıdaki bağlantıyı kullanın https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-14-04

  3. Ve sonuncusundan sonra eksik olduğum şey Ağ Oluşturma -> Güvenlik Duvarı Kuralları -> default-allow-internal -> tüm IP adresleri 0.0.0.0/0

bu resme bak

Bitti

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.