Apache2 IPv4 tcp portunda çalışmıyor


23

Debian 7 sunucumda Apache2 çalıştırmam gerekiyor. Ancak tcpv4 portunda değil, sadece tcpv6 portunda çalışır. Apt-get install ile kurdum. Localhost veya 127.0.0.1 veya sunucumun IPv4 adresine gidersem, hiçbir web sitesi görüntülenmez.

Benim /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       

3
Değiştirmeyi deneyin Listen 80To Listen 0.0.0.0:80. Daha fazla bilgi için httpd.apache.org/docs/2.2/bind.html belgelerine bakabilirsiniz .
pradeepchhetri

@pradeepchhetri Teşekkürler. İşe yarıyor. Sunucu adresime herhangi bir bilgisayardan erişebiliyorum ve içeriği gösteriyor (IP adresi / some.php), ancak bu sunucudan some.php'ye erişemiyorum. Localhost, 127.0.0.1 ve harici IP: diğer bilgisayarlardan çalışan port numaralarını denedim ... Ama çalışmıyor.
Mato

1
Eğer çıktısını gönderebilir miyim sudo iptables -nvLve sudo sestatus? Sanırım önleyen bazı yerel güvenlik duvarlarınız var.
pradeepchhetri

@Mato açıklamanız gerekir, içerik gösterdiğinde ancak çalışmadığında, onu çalıştırmak yerine ham PHP'nizi gösterdiğini mi kastediyorsunuz? Öyleyse, PHP modülünü etkinleştirmeniz gerekir. Bence a2enmod php5senin için yapmalıyım.
robbat2

3
Linux makineleri tipik olarak IPv6 adresini dinlemenin arkasındaki dualstack IPv4 + IPv6 yuvasını gizler ::.
Pavel Šimerda

Yanıtlar:


32

Netstat'ın burada sadece tcp6'yı göstermesi sorun değil. Dinlemek için bir adres belirtmezseniz, apache tüm desteklenen adres ailelerini tek bir soket kullanarak dinler (tasarım nedeniyle, sshd adres ve adres ailesi başına benzersiz bir soket kullanır, bu nedenle netstat çıktınızda iki kez gösterilir).

İşte sistemimden biri, apache'nin sadece tcp6 soketlere sahip olduğunu ve yine de hem IPv4 hem de IPv6 üzerinden iyi çalıştığını gösteriyor.

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

wget http://127.0.0.1/ -O -Sunucuda çalıştırırsanız ne olur? Başarıyla bağlandı mı? Web siteniz için ham HTML’yi beklendiği gibi döndürüyor mu?


teşekkürler, şimdi işe yarıyor ama henüz küçük bir sorunum var. Bunun hakkında yukarıda yazdım.
Mato

Biliyorsun ki çılgınca bir şey bu hep benim deneyimim. Doğal olarak. Bir ağ programcısı olarak INADDR_ANYve hakkında çok şey biliyorum IN6ADDR_ANY_INIT. Ama bugün gerçekten garip davranışlar gördüm. Güvenlik duvarı değişikliği yok, Apache değişikliği yok ancak bir şekilde uzaktaki ana bilgisayarlar yalnızca IPv6 üzerinden bağlanabilir; bu, hala IPv6'ya sahip olmayanlar için bir sorun. Bu kesinlikle benim çalışacağım bir şey ama kesinlikle haklısınız (verdiğiniz çağrı maalesef geçerli değildir).
Pryftan


1
  1. 127.0.0.1 yalnızca bir makineye yerel, yerel geridöngü ip / adresini kullanabilmek için sunucunun kendisinde bir tarayıcıda olmanız gerekir;

  2. Bağlantı noktalarını engelleyen bir güvenlik duvarı olabilir;

  3. Apache'nin düzgün çalıştığından ve çalıştığından emin olun, hata günlüklerini kontrol edin;

  4. Tüm apache yapılandırmalarınızı bir kez daha kontrol edin;

  5. Kök www'den mi yoksa public_html dizininden mi ev sahipliği yapıyorsunuz?

  6. Sahip ve izinleri iki kez kontrol edin.


Neredeyse 2019 yılı (Geleceğe Hoş Geldiniz):

  • Varsayılan olarak dünyanın çoğu ipv6 kullanır ve başarısız olursa ipv4'e geri döner;

  • Şimdi ipv6 üzerinden ipv4 tünellerimiz var, bunun tersi de geçerlidir;

  • Çoğu işletim sistemi, program, müşteri ve sunucu çoğu zaman bunu şimdi yapar;

  • Artık NAT olmayan ve cihazınıza doğrudan güvenlik duvarına / filtrelere bağlı olmak zorunda olan dünyaya hoş geldiniz;

  • Hem ipv4'ü hem de ipv6'yı aynı anda destekleyen, sistemlerinizi çift yığın halinde tutmaya çalışmanızı öneririm, bu yüzden sihirli anahtar gerçekleştiğinde, hala çalışıyor ve çalışıyorsunuz. İşletim sistemim, ağım, ISS'm bile çift uçtan uca yığılmış durumda. İstediğimde ipv4'ü tamamen kapatabilirdim, ama ipv4'ten ipv6'ya geri tünel kalmadığında artık işe yaramayacak olan şey var.


'Klasör' kelimesini kullandığınızdan beri size + 1 verip vermeme konusunda konuşmacı oldum. Ancak IPv6'yı devre dışı bırakmama fikri çok önemlidir - güvenlik duvarınızın IPv6 için doğru bir şekilde yapılandırıldığından emin olun. Birçok insanın NAT'ın güvenlik olduğunu düşündüğünü biliyorum ama en fazla bu bir yanılsamadır (aynı zamanda birçok hizmet için de bir sorun). Bu ve diğer noktaların hepsi geçerlidir, bu yüzden + 1'e sahipsin.
Pryftan

Üzgünüm dizini kastediyorum :-P
cdmlb

Bunun için sana bir + 1 daha verebilirim. Ben oldukça şaşırdım ve onu değiştireceğini de umursuyorum. Ben bir safkanım, söyleyebileceğim her şeyi düşünüyorum. Beni şaşırtıyor ve bana belli bir şirketin bunu düzeltmek için alıştıktan sonra 'klasör' olarak değiştirdiğini söylüyor. Belki de bu, insanları daha 'arkadaşça' yapmaktır, ancak daha sonra bilmesi gereken başkaları için doğru kelime olarak kabul edilmiş gibi görünmektedir. Bilmiyorum. Her neyse, listenin tamamı gerçekten daha fazla insanın anlayabilmesini istediğim bir şey! Ne yazık ki pek yok ...
Pryftan

-1

*

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

* IPv4 veya IPv6 kullanmadan yerel sunucuya bağlantıyı gösterir, eğer yerel sunucuyu (veya 127.0.0.1) bu sunucunun gerçek IPv4 IP adresine değiştirirseniz, bağlantı reddedildiğinden hiçbir şey yazamazsınız.

IP'yi config dosyalarında tanımlamaya çalışın: NameVirtualHost: 80 Dinle: 80

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.