Apache2 tidak berjalan pada port tcp IPv4

23

Saya perlu menjalankan Apache2 di server Debian 7 saya. Tapi itu berjalan hanya pada port tcpv6, bukan pada port tcpv4. Saya menginstalnya dengan apt-get install. Jika saya pergi ke localhost atau 127.0.0.1 atau alamat IPv4 server saya tidak menampilkan situs web apa pun.

Saya /etc/apache2/ports.conf:

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz

NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
 # If you add NameVirtualHost *:443 here, you will also have to change
 # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
 # to <VirtualHost *:443>
 # Server Name Indication for SSL named virtual hosts is currently not
 # supported by MSIE on Windows XP.
 Listen 443
</IfModule>

<IfModule mod_gnutls.c>
 Listen 443
</IfModule>

netstat -plntu:

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      3558/sshd       
tcp        0      0 0.0.0.0:3466            0.0.0.0:*               LISTEN      2820/mysqld     
tcp6       0      0 :::80                   :::*                    LISTEN      2097/apache2    
tcp6       0      0 :::22                   :::*                    LISTEN      3558/sshd       
Mato
sumber
3
Coba ubah Listen 80ke Listen 0.0.0.0:80. Anda dapat merujuk ke dokumentasi httpd.apache.org/docs/2.2/bind.html untuk informasi lebih lanjut.
pradeepchhetri
@pradeepchhetri Terima kasih. Berhasil. Saya dapat mengakses ke alamat server saya dari komputer mana pun dan menampilkan konten (alamat IP / some.php), tetapi saya tidak dapat mengakses some.php dari server ini. Saya telah mencoba localhost, 127.0.0.1 dan IP eksternal: nomor port yang berfungsi dari PC lain ... Tetapi tidak berfungsi.
Mato
1
Bisakah Anda memposting output dari sudo iptables -nvLdan sudo sestatus? Saya pikir Anda memiliki beberapa firewall lokal yang mencegah.
pradeepchhetri
@ Mato Anda perlu mengklarifikasi, ketika itu menampilkan konten tetapi tidak berfungsi, maksud Anda bahwa itu menunjukkan PHP mentah Anda alih-alih menjalankannya? Jika demikian, Anda perlu mengaktifkan modul PHP. Saya pikir a2enmod php5harus melakukannya untuk Anda.
robbat2
3
Mesin Linux biasanya menyembunyikan soket IPv4 + IPv6 dualstack di belakang mendengarkan pada alamat IPv6 ::.
Pavel Šimerda

Jawaban:

32

Fakta bahwa netstat hanya menunjukkan tcp6 di sini bukanlah masalah. Jika Anda tidak menentukan alamat untuk didengarkan, apache akan mendengarkan semua keluarga alamat yang didukung menggunakan soket tunggal (untuk alasan desain, sshd menggunakan soket unik per keluarga alamat & alamat, maka muncul dua kali dalam output netstat Anda).

Inilah salah satu sistem saya, menunjukkan apache hanya memiliki soket tcp6, namun masih berfungsi dengan baik melalui IPv4 dan IPv6.

woodpecker ~ # netstat -anp |grep apache
tcp6       0      0 :::80    :::*       LISTEN      1637/apache2        
tcp6       0      0 :::443   :::*       LISTEN      1637/apache2        
woodpecker ~ # wget http://127.0.0.1/ -O /dev/null
--2013-12-25 08:52:38--  http://127.0.0.1/
Connecting to 127.0.0.1:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 45 [text/html]
...
# wget http://[::1]/ -O /dev/null
--2013-12-25 08:53:00--  http://[::1]/
Connecting to [::1]:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 45 [text/html]
...

Jika Anda menjalankan wget http://127.0.0.1/ -O -di server apa yang terjadi? Apakah itu berhasil terhubung? Apakah ini mengembalikan HTML mentah ke situs web Anda seperti yang diharapkan?

robbat2
sumber
terima kasih, sekarang berfungsi, tetapi saya hanya memiliki satu masalah kecil. Saya sudah menulisnya di atas.
Mato
Anda tahu yang gila adalah ini selalu menjadi pengalaman saya. Tentu saja. Sebagai seorang programmer jaringan saya tahu betul tentang INADDR_ANYdan IN6ADDR_ANY_INIT. Tetapi hari ini saya telah melihat beberapa perilaku yang sangat aneh. Tidak ada perubahan firewall, tidak ada perubahan Apache tapi entah bagaimana host jarak jauh hanya dapat terhubung melalui IPv6 - yang merupakan masalah bagi mereka yang masih tidak memiliki IPv6. Ini pasti sesuatu yang saya akan kerjakan tetapi Anda benar-benar benar (meskipun doa yang Anda berikan tidak berlaku dalam kasus saya sayangnya).
Pryftan
1
  1. 127.0.0.1 hanya bersifat lokal untuk mesin, Anda harus berada di server sendiri di browser untuk menggunakan ip / address loopback lokal;

  2. Anda mungkin memiliki firewall yang memblokir port;

  3. Pastikan apache berjalan dan berfungsi dengan baik, periksa log kesalahan;

  4. Periksa ulang semua konfigurasi apache Anda;

  5. Apakah Anda hosting dari root www atau direktori public_html pengguna?

  6. Periksa pemilik dan izin.


Hampir tahun 2019 (Selamat datang di masa depan):

  • Secara default sebagian besar dunia menggunakan ipv6 dan jika gagal, kembali ke ipv4;

  • Kami sekarang memiliki terowongan ipv4 di atas ipv6, dan sebaliknya;

  • Sebagian besar OS, program, klien, dan server kebanyakan melakukan ini sekarang;

  • Selamat datang di dunia tanpa NAT lagi dan harus bergantung pada firewall / filter langsung ke perangkat Anda;

  • Saya akan merekomendasikan mencoba untuk menjaga sistem Anda semua ditumpuk ganda, mendukung ipv4 dan ipv6 pada saat yang sama, jadi ketika sakelar ajaib terjadi, Anda masih dapat menjalankannya. OS saya, jaringan, bahkan ISP saya adalah dual stack end to end. Saya bisa mematikan ipv4 sepenuhnya jika saya mau, tapi apa yang ada di luar sana yang mungkin tidak berfungsi lagi jika tidak ada terowongan kembali ke ipv6 dari ipv4.

cdmlb
sumber
Saya bingung apakah akan memberi Anda +1 atau tidak - karena Anda menggunakan kata 'folder'. Tetapi gagasan untuk tidak menonaktifkan IPv6 sangat penting - seperti memastikan firewall Anda dikonfigurasi dengan benar untuk IPv6. Saya tahu bahwa banyak orang berpikir NAT adalah keamanan tetapi paling-paling itu ilusi (itu juga masalah bagi banyak layanan). Itu dan poin Anda yang lain semuanya valid sehingga memiliki +1.
Pryftan
Maaf saya maksud direktori :-P
cdmlb
Nah untuk itu saya akan memberi Anda +1 lagi jika saya bisa. Saya agak terkejut dan juga rendah hati bahwa Anda akan mengubahnya. Saya seorang purist adalah saya pikir semua bisa saya katakan. Ini membingungkan saya dan membuat saya kesal karena perusahaan tertentu menggunakannya dengan benar dan kemudian mengubahnya menjadi 'folder'. Yah mungkin itu untuk membuatnya lebih 'ramah' kepada orang-orang tetapi kemudian tampaknya telah diterima sebagai kata yang tepat untuk orang lain yang seharusnya lebih tahu Saya tidak tahu Pokoknya seluruh daftar Anda adalah sesuatu yang saya benar-benar berharap lebih banyak orang akan mengerti! Sayangnya banyak yang tidak ...
Pryftan
-1

*

wget http://127.0.0.1/ -O / dev / null

* mewakili koneksi ke server lokal tanpa menangani IPv4 atau IPv6, jika Anda mengubah localhost (atau 127.0.0.1) menjadi alamat IP IPv4 nyata dari server ini, Anda tidak dapat kehilangan apa pun karena koneksi ditolak.

Cobalah untuk menggambarkan IP Anda dalam file konfigurasi: NameVirtualHost: 80 Dengarkan: 80

Tamu
sumber