netstatでApacheが実行されていないことを確認してください


10

私はただのapacheで遊んでいると私は私がにブラウズして、サーバーに接続することができていること、仕事にそれを得たhttp://127.0.0.1http://192.168.1.5私はIPv6を実行していません

しかし、これはnetstatの結果です

$ sudo service apache2 status
 * apache2 is running
$ netstat -an | grep :80
tcp6       0      0 :::80                   :::*                    LISTEN

$ wget 127.0.0.1
--2014-06-26 01:32:15--  http://127.0.0.1/
Connecting to 127.0.0.1:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11510 (11K) [text/html]
Saving to: ‘index.html’

100%[=====================================================================================================>] 11,510      --.-K/s   in 0s      

2014-06-26 01:32:15 (161 MB/s) - ‘index.html’ saved [11510/11510]

私はそれが通常のTCPでリッスンすることを期待していたのですが、それは明らかにそうです!?

編集:

$ netstat -a | grep LISTEN
tcp        0      0 localhost:ipp           *:*                     LISTEN     
tcp        0      0 localhost:mysql         *:*                     LISTEN     
tcp6       0      0 ip6-localhost:ipp       [::]:*                  LISTEN     
tcp6       0      0 [::]:https              [::]:*                  LISTEN     
tcp6       0      0 [::]:http               [::]:*                  LISTEN     

Edit2: なぜ反対票か。誰かが詳しく説明できますか?


netstat -aを試してください。grep LISTENおよびポスト出力
Lety

結果の投稿
meccooll 2014年

試しましたnetstat -pか?
muru 2014年

最後の2行は、ポート80および443でリッスンしているapacheを参照しています。muruの提案を試して、プロセス/ pidを表示してください。
2014年

@Letizia正解ですが、最初の列にtcp6とあり、IPv6である::のIPを示していますが、IPv4で接続していますか?
meccooll 2014年

回答:


17

TL; DR

Apacheはないあなたに表示されnetstatた出力、およびそれがされて実行されています。そのため、wget通話は機能します。ただし、IPv4アドレスではなくIPv6アドレスにバインドされます。アドレスマッピングは、必要に応じて変換を処理します。

ドキュメントに行く

ここには明らかにいくつかのIPv6-IPv4フォールバックメカニズムがあります。実際のところ、ローカルネットワークではまだIPv6を使用していません。

$ netstat -tunla | grep LISTEN | grep 80
tcp6       0      0 :::80                   :::*                    LISTEN

マシンにどのように対処しても、最終的には同じサービスとポートであることに注意してください。残りは主にブラウザとDNS解決サービス次第です。ただし、Apacheがこれを処理する方法の詳細については、それらのドキュメントを参照することをお勧めします

Apache管理者にとって複雑な要因の1つは、IPv6ソケットがIPv4接続とIPv6接続の両方を処理できるかどうかです。IPv6ソケットを使用したIPv4接続の処理では、IPv4にマップされたIPv6アドレスを使用します。これらのアドレスは、ほとんどのプラットフォームでデフォルトで許可されていますが、FreeBSD、NetBSD、およびOpenBSDでは、これらのプラットフォームのシステム全体のポリシーと一致させるためにデフォルトで許可されていません。デフォルトで許可されていないシステムでは、特別な構成パラメーターによってApacheのこの動作を変更できます。

基本的に、これはクロスプラットフォームの互換性とソケット処理に関連するほとんどの問題を回避する方法でIPv4とIPv6の両方のソケットを処理することです。ご覧のとおり、UbuntuなどのLinuxプラットフォームでは、この問題はIPv4にマップされたIPv6アドレスを使用して解決されます。ドキュメントには、次のようにも記載されています。

ApacheでIPv4接続のみを処理する場合は、プラットフォームとAPRがサポートするものに関係なく、すべてのListenディレクティブでIPv4アドレスを指定します。

これはports.confファイルで次のようなものになります:

Listen 0.0.0.0:80 # Or...
Listen 127.0.0.1:80 # Or...
Listen 192.0.2.1:80

次のいずれかのnetstat出力になります...

$ netstat -tunla | grep LISTEN | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN 
$ netstat -tunla | grep LISTEN | grep 80
tcp        0      127.0.0.1:80              127.0.0.1:80            LISTEN
$ netstat -tunla | grep LISTEN | grep 80
tcp        0      192.0.2.1:80              192.0.2.1:80            LISTEN 

美しく、しかもIPv6対応ではないリスナー。上記の設定は、通常/etc/apache2/ports.conf(またはapache2.conf古いバージョンの場合は直接)に設定されています。デフォルト値はでListen 80、これは自動バインディングを実行します。つまり、ドキュメントに記載されているIPv6仕様に準拠しています。


1
Huhはアドレスマッピングについて知らなかったので、IPv6とIPv4の両方で開いているポートに注意する必要があります。
meccooll 2014

「askubuntu」に参加して、この質問と回答に賛成票を投じてください!!!
プレミア
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.