“Bağlantı reddedildi” - “Barınacak yol yok”


20

Bir sunucuda çalışan bir Apache sunucum var:

[root@te-srv2 ~]# ps -ecf|grep httpd
root       698 32047 TS   19 10:45 pts/24   00:00:00 grep httpd
root     32081     1 TS   19 10:16 ?        00:00:00 /usr/sbin/httpd
apache   32083 32081 TS   19 10:16 ?        00:00:00 /usr/sbin/httpd
apache   32084 32081 TS   19 10:16 ?        00:00:00 /usr/sbin/httpd
....

Ancak, yerel ana bilgisayara bağlanmaya çalıştığımda "Bağlantı reddedildi" iletisi alıyorum:

[root@te-srv2 ~]# wget http://127.0.0.1
--2014-02-24 10:46:16--  http://127.0.0.1/
Connecting to 127.0.0.1:80... failed: Connection refused.

Yerel IP adresine bağlanmaya çalıştığımda da aynı şey olur:

[root@te-srv2 ~]# wget http://132.70.6.157
--2014-02-24 10:46:40--  http://132.70.6.157/
Connecting to 132.70.6.157:80... failed: Connection refused.

Öte yandan, aynı ağdaki başka bir bilgisayardan aynısını denediğimde, farklı bir hata alıyorum "Ana bilgisayar yolu yok":

[erelsgl@erel-biu ~]$ wget http://132.70.6.157
--2014-02-24 10:49:11--  http://132.70.6.157/
Connecting to 132.70.6.157:80... failed: No route to host.

Neden bu hataları alıyorum? Aynı sunucudan ve ağdaki diğer bilgisayarlardan http sunucusuna bağlanabilmek için ne yapmalıyım?

GÜNCELLEMELER: Yorum ve cevaplara dayanarak, biraz daha bilgi:

[root@te-srv2 ~]# traceroute 132.70.6.157
traceroute to 132.70.6.157 (132.70.6.157), 30 hops max, 60 byte packets
 1  te-srv2 (132.70.6.157)  0.082 ms  0.007 ms  0.005 ms

[erelsgl@erel-biu ~]$ traceroute 132.70.6.157
traceroute to 132.70.6.157 (132.70.6.157), 30 hops max, 60 byte packets
 1  te-srv2 (132.70.6.157)  0.446 ms !X  0.431 ms !X  0.420 ms !X

[root@te-srv2 ~]# netstat -lnp|grep http
tcp        0      0 :::443                      :::*                        LISTEN      5756/httpd          

Eğer Can traceroute 132.70.6.157hem sunucularından ve çıkış karşılaştırın?
Werner Henze

1
443, SSL bağlantı noktalarıdır (https). Http bağlantı noktası 80'i dinlediğinizden emin olmak için yapılandırmanızı kontrol edin.
Mikpa

Yanıtlar:


13

Çıktısını göster netstat -lnp, böylece hangi işlemlerin sunucudaki hangi bağlantı noktalarını gerçekten dinlediğini ve hangi IP adreslerine bağlı olduklarını görebiliriz.

İkinci bilgisayar ile ilgili olarak, ağ bağlantısı kopmuş görünüyor. netstat -rnorada sorun hakkında bir fikir verecektir.

Daha iyi önerilerde bulunmak için, her iki bilgisayarda da genel ağ yapılandırması ve IP yapılandırması hakkında daha fazla ayrıntı gerekir.

Düzenle:

Apache yapılandırmanızı SSL sunucusu değil, HTTP sunucusu olacak şekilde değiştirmeniz gerekir. Yapılandırma dosyaları çoğu zaman / etc / apache2 altında bulunur.

Diğer sorunu analiz etmek için IP yapılandırması ve ağ yapılandırması bilgileri hala gereklidir. Traceroute bilgisi hiçbir şey ortaya koymadı.


Gerçekten de, 80 numaralı bağlantı noktasını dinleyen bir işlem yoktur! Apache sunucusu 443 numaralı bağlantı noktasını dinler. Peki bu neden?
Erel Segal-Halevi

@ErelSegalHalevi: genellikle, 80 HTTP, 443 HTTPS'dir (bu varsayılan bağlantı noktalarını değiştirmediğiniz sürece). Belki de uygulama sadece HTTPS bekliyor?
Olivier Dulac

Netstat sayesinde, bunun gerçekten Apache'de bir yapılandırma sorunu olduğunu öğrendik.
Erel Segal-Halevi

26

"Bağlantı reddedildi", hedef makinenin bağlantıyı aktif olarak reddettiği anlamına gelir. Bağlam olarak 80 numaralı bağlantı noktasında, aşağıdakilerden biri büyük olasılıkla sebebidir:

  • 127.0.0.1:80 ve 132.70.6.157:80'de hiçbir şey dinlemiyor
  • Hiçbir şey dinlemiyor *: 80
  • Güvenlik duvarı REJECT ile bağlantıyı engelliyor

Bu yüzden Apache ve iptables yapılandırmanızı kontrol edin.

"Barınacak yol yok" bir ağ sorununu belirtir. Öyle değil hedef makineden bir cevap.


bir ağ sorunu mu var? Öyleyse aynı etki alanı bir kişi için "bağlantı reddedildi" ve aynı etki alanındaki başka bir bağlantı noktası için "barındırılacak yol yok" döndürür?
phil294

Belki güvenlik duvarınız veya proxy'niz diğer bağlantı noktasını engelliyor, bu yüzden ağ sorunu var?
croraf

3

Bir Public Cloud bilgi işlem düğümünde nodejs kullanarak basit bir http sayfası kurmaya çalışırken karşılaştığım sorunu açıklayan bu gönderiyi buldum.

Bu komut benim için hile yaptı:

iptables -F

Bu komut, Linux sistemi içinde ayarlanmış güvenlik duvarı kurallarını temizler.

Dikkat kelimesi: Public Cloud VCN'nin bir parçası olan dağıtılmış güvenlik duvarını kullandığım için işletim sistemimin güvenlik duvarını gerçekten kullanmadım. Harici bir güvenlik duvarınız yoksa, iptables'a bir güvenlik duvarı kuralı eklediğinizden emin olun.


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.