Bağlantı noktası açık görünüyor, ancak bağlantı reddedildi


21

Ubuntu 12.04'te 3000 numaralı bağlantı noktasını açmaya çalışıyorum, çünkü orada dinleyen bir web sunucum var. Buradaki birleşme bölgesinden biraz uzaktayım ve problemi başarılı olmadan çözmek için saatlerce harcadım.

Bağlantı noktası güvenlik duvarında açık görünüyor:

$> sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
...
3000/tcp                   ALLOW       Anywhere
3000/tcp                   ALLOW       Anywhere (v6)

Sunucu bu bağlantı noktasını iyi dinliyor:

$> netstat -an | grep "LISTEN "
...
tcp        0      0 127.0.0.1:3000          0.0.0.0:*               LISTEN     
...

Ve wgetindeks sayfasını bile düzeltebilirim :

$> wget localhost:3000
Connecting to localhost (localhost)|127.0.0.1|:3000... connected.
HTTP request sent, awaiting response... 200 OK

Ve alınan dosya beklediğim şeyi içeriyor ("merhaba dünya" :).

Ancak, başka bir bilgisayardan çalışan veya zaman eğer wget mydomain.com:3000ben almak "connection refused"ve Nmap port açık olmadığını söylüyor:

$> nmap -A -T4 mydomain.com
Host is up (0.00032s latency).
...
Not shown: 999 closed ports
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 5.9p1 Debian 5ubuntu1 (protocol 2.0)
...
Service Info: OS: Linux

Bundan sonra ne denemeliyim?

DÜZENLE

İşte traceroute ne veriyor:

$> traceroute mydomain.com
traceroute to mydomain.com (176.31.x.x), 30 hops max, 60 byte packets
 1  mydomain.com (176.31.x.x)  0.034 ms  0.013 ms  0.010 ms

Ufw'yi devre dışı bırak, tekrar dene. Bu işe yaramazsa, uzaktaki bilgisayar ile sunucunuz arasında başka bir güvenlik duvarı / aygıtı vardır.
ish

Ben zaten denedim .. çözmedi :(
sebpiq

"Uzaktaki bilgisayarla sunucunuz arasında başka bir güvenlik duvarı / aygıtı var." : Bu pek mümkün değil. Sunucudan ikinci wget'i denedim, böylece ağ üzerinden bir tur attı.
sebpiq,

ha? Wget servereb.com adresini servereb üzerinden yazamaz ve bazı fantezi iptables rota sihirbazı olmadan gidiş dönüş yapamazsınız. Lütfen traceroute mydomain.comuzaktaki bilgisayarın çıkışını yapıştırın . Gizlilik için son (sunucu) IP'nin son iki basamağını ** çıkarabilirsiniz.
ish

bir traceroute ile düzenlendi
sebpiq

Yanıtlar:


24

Sunucunuz yalnızca localhost arayüzünü dinliyorsa, uzaktaki bir bilgisayardan erişemezsiniz. Netstat çıktınızda yalnızca 127.0.0.1:3000 listelenen bu sizin birincil probleminiz gibi görünüyor.

Ayrıca, "etkialanim.com" un makineniz için doğru IP adresini çözdüğünden emin olmanız gerekir; böylece makineye bağlanmanız o makinenin dış arabirimiyle iletişim kurar.


Makineye adını kullanarak sorabilirim, bu yüzden ad çözümlemesinin burada sorun olmadığını sanıyorum. Sunucunun herhangi bir yerden dinleyebilmesi için nasıl yapabilirim?
sebpiq

1
@sebpiq Bu çözünürlük programa özeldir. Programın dinleyicisini doğru arayüze isim { eth0veya benzeri bir şey), IP adresi (192.168.1.99 veya benzeri bir şey) veya MAC adresi ile bağlamanız gerekir . Bu programa bağlıdır.
Monica'yı yeniden kurun - ζ--

uugh ... kulağa çılgınca: S Bu konuda google'ı deneyeceğim. Sunucum node.js, bu yüzden bağlanmam gereken arabirim hakkında bilgi olup olmadığını kontrol edeceğim.
sebpiq

Yeepee !!! @ObsessiveFOSS ve Dobey çok teşekkür ederim! Benim node.js sunucum aslında localhost'u dinliyordu. Öyle yaptığını bilmiyordum ve dersin hiçbiri bundan bahsetmedi.
sebpiq

@sebpiq Sorun değil. :-)
Reinstate Monica - ζ--

13

Yakın zamanda bir nodejs HTTPS sunucusuyla bu problemi yaşadım ve bunun çözümü "localhost", "127.0.0.1" veya hatta etki alanı adını kullanmak değildi. "0.0.0.0" kullanmak için

Bunun bir joker karakter gibi davrandığını ve etki alanı adı üzerinden kamuoyunun çözümlenmesine izin verdiğine inanıyorum ve "localhost" ile de çalıştığını düşünüyorum.

Düzenleme: İşte 0.0.0.0 konusundaki bir sunucu hatası sayfasına bağlantı: /server/78048/whats-the-difference-between-ip-address-0-0-0-0-and- 127-0-0-1


Tam olarak nerede "0.0.0.0" kullanın?
Adaephon

@Adaephon Peki benim durumumda, Düğüm tabanlı bir web sunucusu oluşturdum. : Ben değiştirmek zorunda }).listen(3000, '127.0.0.1'); için }).listen(3000, '0.0.0.0'); benim kodda.
Sami Fouad,

@Adaephon Bu yüzden ne kadar yardımın yapıldığından emin değilim, ancak IP / Ana Bilgisayar adını tanımladığınız her yerde, bunun yerine 0.0.0.0'ı deneyin.
Sami Fouad,

Lütfen yazımı ziyaret edebilir misiniz? stackoverflow.com/questions/37922804/…
Kar19

1
0.0.0.0 (veya daha doğrusu ikili gösterim 0) soket arayüzü açısından herkesi dinliyor olarak kabul edilir. Başka bir IP verebilirsiniz ve yalnızca bu IP’ye sahip olduğunuz arayüzü dinler. Örneğin, 127.0.0.1 verirseniz, yalnızca 127. *. *. * IP'lerden (gerçekten localhost) veya sizinkine 127.0.0.1 için erişecek olan ciddi şekilde eğilmiş yönlendirme tablolarına sahip diğer bilgisayarlardan bağlantılar alabilirsiniz (bunu test etmek için). son dava!)
Paul Stelian

3

AWS veya başka herhangi bir bulut servisini kullanma şansınız var mı? Bu durumda, bağlantı noktası (OS) konfigürasyon seviyesinde veya sonrasında açılmalıdır. Özellikle AWS'de, 3000 numaralı bağlantı noktasına erişimi açmanız gereken "Güvenlik Grupları" nı aramalısınız.

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.