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


Eminim bu çok kötülüktür, bu yüzden beni affet. Ubuntu 10.04'ümün 8080 numaralı portunda bir node.js sunucusu çalıştırmaya çalışıyorum.

İşte sunucuda 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 burada nmap -p 8080'in sonucu (her şey açık veya geniş olması gerektiğinden ip adresini düzenledik)

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 yeryüzünde 8080 kapalı olarak görülüyor? Bunun eklenmesi 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

Normal web sitemde 80 numaralı porttan apache'ye erişebiliyorum, ancak node.js sunucusuna dışarıdan erişilemiyor. Sunucudan erişilmesi iyi çalışıyor.

Benim sorum şu: Bu hata ayıklama hakkında nasıl giderim? Bazı bağlantı noktalarını engelleyen iptables'den başka bir şey olabilir mi? Ne olduğunu nasıl bulabilirim?

Herhangi bir yardım çok takdir!


12
2018-05-20 06:08


Menşei


Google aracılığıyla buraya gelenlere: Google bulutunda hizmet verdiyseniz ve bu sorunla karşılaşırsanız portu istisna kurallarına eklediğinizden emin olun. bulut güvenlik duvarı işletim sistemlerinin yanı sıra güvenlik duvarı - Atul


Cevaplar:


Son netstat çıktısını eklediğiniz için teşekkürler, gerçekten yardımcı oldu. Node.js'ye dışarıdan erişebilirsiniz çünkü localhost IP i.e 127.0.0.1'de dinliyor. Node.js'yi 0.0.0.0 dinleyecek şekilde yapılandırmanız gerekir, böylece makinenizin tüm IP'lerinde bağlantıları kabul edebileceksiniz.

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/');

24
2018-05-20 06:26



Bundan şüphelendim, ama daha önce hiç 0.0.0.0 ile karşılaşmadım, o yüzden göz ardı ettim. Fikrini uyguladım ve bu yaptı, teşekkürler! - Mikael Gramont
Benim de bu problemim var. Bu kodu takip ettim ancak nodejs sunucum hala dışarıdan erişilemiyor. - xybrek
Evet, burada aynı. - hayavuk
benim için çalışmadı - Jitendra Pancholi
Node v8.1.3 ile MacOS Sierra'da benim için çalışmadı - Liran H


Netstat çıkışınıza göre, 8080 portu sadece localhost olan 127.0.0.1 için açıktır, bu nedenle sunucu çalışmalarından (localhost) erişir, ancak başka bir yerden değildir.

Doğru çıktı gibi görünmeli

0.0.0.0:8080

4
2018-05-20 06:19





Aynı sorunu yaşadım.

Ben yaptım

  1. Google Cloud Console'da, Nodejs için kullandığınız bağlantı noktalarını etkinleştirmeniz gerekiyor
  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 bu sonuncundan sonra neyim eksikti  Ağ -> Güvenlik Duvarı Kuralları -> varsayılan izin-iç -> tüm IP adresi 0.0.0.0/0

see this image 

tamam


0
2018-04-05 11:30