“Sambungan ditolak” vs. “Tidak ada rute ke tuan rumah”


20

Saya memiliki server Apache yang berjalan di server:

[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
....

Namun, ketika saya mencoba untuk terhubung ke host lokal saya mendapatkan "Sambungan ditolak":

[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.

Hal yang sama terjadi ketika saya mencoba terhubung ke alamat IP lokal:

[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.

Di sisi lain, ketika saya mencoba yang sama dari komputer lain di jaringan yang sama, saya mendapatkan kesalahan berbeda "Tidak ada rute untuk dihosting":

[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.

Mengapa saya mendapatkan kesalahan ini? Dan apa yang harus saya lakukan untuk dapat terhubung ke server http dari komputer yang sama dan komputer lain di jaringan?

PEMBARUAN: Berdasarkan komentar dan jawaban, berikut adalah beberapa informasi lebih lanjut:

[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          

Bisakah Anda traceroute 132.70.6.157dari kedua server dan membandingkan output?
Werner Henze

1
443 adalah port-SSL (https). Periksa konfigurasi Anda untuk memastikan Anda mendengarkan http port 80.
Mikpa

Jawaban:


13

Tampilkan outputnya netstat -lnp, jadi kita bisa melihat proses mana yang benar-benar mendengarkan port mana di server, dan alamat IP apa yang terikat padanya.

Mengenai komputer kedua, konektivitas jaringannya terlihat rusak. netstat -rnakan memberikan beberapa wawasan tentang masalah di sana.

Untuk memberikan saran yang lebih baik, diperlukan lebih banyak detail mengenai konfigurasi jaringan umum dan konfigurasi IP pada kedua komputer.

Edit:

Anda harus mengubah konfigurasi Apache Anda sehingga itu adalah server HTTP, bukan server SSL. File konfigurasi terletak di / etc / apache2 hampir sepanjang waktu.

Konfigurasi IP dan informasi konfigurasi jaringan masih diperlukan untuk menganalisis masalah lainnya. Informasi traceroute tidak mengungkapkan apa pun.


Memang, tidak ada proses mendengarkan port 80! Server Apache mendengarkan pada port 443. Tapi mengapa ini?
Erel Segal-Halevi

@ ErelSegalHalevi: biasanya, 80 adalah HTTP, 443 adalah HTTPS (kecuali jika Anda mengubah port default itu). Jadi mungkin aplikasi hanya mengharapkan HTTPS?
Olivier Dulac

Berkat netstat, kami mengetahui bahwa ini benar-benar masalah konfigurasi di Apache.
Erel Segal-Halevi

26

"Koneksi ditolak" berarti bahwa mesin target secara aktif menolak koneksi. Dengan port 80 sebagai konteksnya, salah satu dari hal-hal berikut kemungkinan alasannya:

  • Tidak ada yang mendengarkan pada 127.0.0.1:80 dan 132.70.6.157:80
  • Tidak ada yang mendengarkan pada *: 80
  • Firewall memblokir koneksi dengan REJECT

Jadi periksa konfigurasi Apache dan iptables Anda.

"No route to host" mengacu pada masalah jaringan. Ini bukan balasan dari mesin target.


masalah jaringan? jadi bagaimana bisa domain yang sama mengembalikan "koneksi ditolak" untuk satu dan "tidak ada rute untuk menampung" untuk port lain, pada domain yang sama?
phil294

Mungkin firewall atau proxy Anda memblokir port lain sehingga itu sebabnya masalah jaringan?
croraf

3

Saya menemukan posting ini menggambarkan masalah yang saya hadapi ketika mencoba mengatur halaman http sederhana menggunakan nodejs pada simpul komputasi Cloud Publik.

Perintah ini membantu saya:

iptables -F

Perintah ini flushes yaitu menghapus aturan firewall yang diatur di dalam sistem Linux.

Peringatan: Karena saya menggunakan firewall terdistribusi yang merupakan bagian dari Public Cloud VCN, saya tidak benar-benar menggunakan firewall OS saya. Jika Anda tidak memiliki firewall eksternal, pastikan untuk menambahkan aturan firewall di iptables.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.