Apache2はIPv4 TCPポートで実行されません


23

Debian 7サーバーでApache2を実行する必要があります。ただし、tcpv4ポートではなく、tcpv6ポートでのみ実行されます。apt-get installでインストールしました。localhostまたは127.0.0.1またはサーバーのIPv4アドレスにアクセスしても、Webサイトは表示されません。

私の/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
をに変更しListen 80てみてくださいListen 0.0.0.0:80。詳細については、ドキュメントhttpd.apache.org/docs/2.2/bind.htmlを参照してください。
pradeepchhetri

@pradeepchhetriありがとうございます。できます。どのコンピューターからでもサーバーアドレスにアクセスでき、コンテンツ(IPアドレス/some.php)を表示しますが、このサーバーからsome.phpにはアクセスしません。localhost、127.0.0.1、および他のPCから機能する外部IP:ポート番号を試しました...しかし、機能しません。
マット

1
sudo iptables -nvLand の出力を投稿できますsudo sestatusか?防げているローカルファイアウォールがあると思います。
pradeepchhetri

@Mato明確にする必要があるのは、コンテンツは表示されているが機能していない場合、実行する代わりに生のPHPを表示するということですか?その場合、PHPモジュールを有効にする必要があります。a2enmod php5あなたのためにやるべきだと思う。
robbat2

3
Linuxマシンは通常、IPv6アドレスをリッスンする背後にデュアルスタックIPv4 + IPv6ソケットを隠します::
パベルシメルダ14

回答:


32

ここでnetstatがtcp6のみを表示するという事実は問題ではありません。リッスンするアドレスを指定しない場合、Apacheは単一のソケットを使用してサポートされているすべてのアドレスファミリをリッスンします(設計上の理由により、sshdはアドレスとアドレスファミリごとに一意のソケットを使用するため、netstat出力に2回表示されます)。

ここに私のシステムの1つがあります。これは、tcp6ソケットしか持たないApacheを示していますが、IPv4と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]
...

wget http://127.0.0.1/ -O -サーバーで実行するとどうなりますか?接続に成功しましたか?期待どおりにあなたのウェブサイトの生のHTMLを返しますか?


おかげで、今は動作しますが、まだ小さな問題が1つしかありません。私はそれについて上に書いた。
マット

クレイジーなことは、これが常に私の経験であるということです。当然。ネットワークプログラマとして、私はについてよく知っているINADDR_ANYIN6ADDR_ANY_INIT。しかし、今日、私はいくつかの本当に奇妙な行動を見てきました。ファイアウォールの変更、Apacheの変更はありませんが、リモートホストはIPv6経由でのみ接続できます。これは、IPv6をまだ持っていない人にとっては問題です。それは確かに私が解決するものですが、あなたは絶対に正しいです(ただし、残念ながら私の場合はあなたの呼び出しは適用できません)。
プリフタン


1
  1. 127.0.0.1はマシンに対してのみローカルです。ローカルループバックIP /アドレスを使用するには、ブラウザーでサーバー自体にアクセスする必要があります。

  2. ポートをブロックするファイアウォールがある場合があります。

  3. Apacheが正常に動作していることを確認し、エラーログを確認してください。

  4. すべてのApache設定を再確認してください。

  5. ルートwwwまたはユーザーpublic_htmlディレクトリからホスティングしていますか?

  6. 所有者と権限を再確認してください。


ほぼ2019年(未来へようこそ):

  • デフォルトでは、世界のほとんどでipv6が使用され、失敗した場合はipv4にフォールバックします。

  • 現在、ipv6を介したipv4トンネル、およびその逆があります。

  • 現在、ほとんどのOS、プログラム、クライアント、およびサーバーがほとんどこれを行っています。

  • これ以上のNATの世界へようこそ。今ではデバイスのファイアウォール/フィルターに依存する必要があります。

  • システムをすべてデュアルスタックにして、ipv4とipv6の両方を同時にサポートすることをお勧めします。そのため、マジックスイッチが発生しても、稼働し続けます。私のOS、ネットワーク、私のISPでさえ、エンドツーエンドのデュアルスタックです。必要に応じてipv4を完全にオフにすることもできますが、ipv4からipv6に戻るトンネルが存在しない場合は動作しなくなる可能性があります。


あなたは「フォルダ」という言葉を使っていたので、私はあなたに+1を与えるかどうかの決定にかかっていました。ただし、IPv6を無効にしないという考え方は非常に重要です。これは、ファイアウォールがIPv6用に適切に構成されていることを確認することです。多くの人がNATをセキュリティだと思っていることを知っていますが、せいぜいそれは幻想です(多くのサービスにとっても問題です)。それとあなたの他のポイントはすべて有効なので、+ 1を持っています。
プリフタン

申し訳ありませんが、ディレクトリを意味しました:-P
cdmlb

そのため、できればもう1つ+1を差し上げます。私はあなたがそれを変えるだろうとかなり驚き、謙虚でもあります。私は純粋主義者だと言えるのです。ある会社がそれを修正してから「フォルダ」に変更したことは、私を楽しませてくれます。まあ、それは人々にとってより「友好的」にするためかもしれませんが、それはよりよく知っているべき他の人にとって正しい言葉として受け入れられたようです。知りません。とにかく、あなたのリスト全体は、もっと多くの人に理解してもらいたいものです!
残念ながら、

-1

*

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

*は、IPv4またはIPv6を処理しないローカルサーバーへの接続を表します。localhost(または127.0.0.1)をこのサーバーの実際のIPv4 IPアドレスに変更すると、接続が拒否されるため、何も取得できません。

設定ファイルでIPを説明してください:NameVirtualHost:80 Listen:80

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.