macos – OS X のポート 80 で何を聞いているのかわからない

iptables macos networking port port-forwarding

私はOSX Mountain Lion 10.8.3に乗っていて、Macを再起動したばかりです

サービス(Apacheのようなものを80番ポートで)を起動したいのですが、すでに80番ポートで何かが起きています

telnet localhost 80

Trying ::1...
Connected to localhost.
Escape character is '^]'.

待って、あなたが言うのを聞いたわ、 lsofやnetstatで見つけられるわよ。そこには何もないことを除いては

netstat -an | grep LISTEN | grep '\.80'

*comes back blank*

lsof -i :80 | grep LISTEN

*comes back blank

私がUNIXシステムについて知っていることからすると、これはパケット転送のルールに違いないと思いますか?つまり、パケットはインバウンドポート80から他の何かに転送されていて、そのサービスをリッスンしています

ipfw show

65535 0 0 allow ip from any to any

うーん、何も変わったことはない

pfctl -s nat

No ALTQ support in kernel
ALTQ related functions disabled

何も変わったことはない

私の質問は、どのようにしてパケット転送のルールを表示することができるかということです…Linuxではiptables -L -t NAT, または iptables -Lを実行するだけかもしれません。あるいは、OSXの専門家はこの問題を診断するのに役立ちますか?

  36  geoff  2013-05-19


ベストアンサー

これらのコマンドをrootとして実行して、例えば他のユーザのプロセスを表示する必要があります

sudo lsof -i ':80'

Mac OS Xには、apachectlrootで制御できるApacheのWebサーバが含まれています。通常は launchd で起動され、対応する設定ファイルは /System/Library/LaunchAgents/org.apache.httpd.plist です。80番ポートで動いているのがこのApacheでなければ、おそらくlaunchdであり、Appleが実装したデーモンマネージャである。Wikipediaによると

launchd が起動時にジョブのplistをスキャンすると、それらのジョブによって要求された全てのポートを予約してリッスンします。plist に “OnDemand” キーが指定されている場合、デーモンは実際にはロードされません。むしろ、 launchd はポートをリッスンし、必要な時にはデーモンを起動し、必要でない時にはシャットダウンします。デーモンがロードされた後、 launchd はそれを追跡し、必要に応じて実行中であることを確認します

48  Daniel Beck  2013-05-21


ユーザーがこれを探している場合に備えて、実際の答えを明確にするためだけに

  1. launchd は起動時に /System/Library/LaunchDaemons/ をスキャンし、org.apache.httpd.plist から apache の起動時に 80 番ポートを転送する必要があることを調べます

  2. sudo apachectl startが行われました

  3. しかし、apachectlコマンドでは報告されませんでしたが、httpd.confファイルに誤りがありました

  4. Launchd は apache が起動していると思ったので、ポート 80 で聞くことにしました

  5. しかし、任意のHTTPリクエストの内容は、直ちに接続を閉じる結果となりました

  6. sudo lsof -i :80は何の答えも出なかった

  7. sudo netstat -an | grep LISTENではポート80に対する回答は得られませんでした

  8. ポート80が使用中またはリスニング中であることを示す診断ツールには、私が知る限りでは情報がありませんでした

  9. apache の httpd.conf を修正し、httpd が ps テーブルにあるように apache を再起動すると、HTTP リクエストが成功するようになりました

  10. そのため、apacheのconf自体が原因ではなく、ポート80で既に何かがリスニングしていたためにapacheを実行できなかったと勘違いしていました

8  geoff  2013-05-22


OSX El Capitan と Avast アンチウイルスで同じ問題に遭遇しました。sudo lsof -i ':80' は avast.com への接続を示しました

me@destop ~|master$ sudo lsof -i ':80'
Password:
COMMAND    PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
com.avast 7964 root   58u  IPv4 0xc4c1bba31fcc2c7f      0t0  TCP 192.168.100.111:52381->mia04-004.ff.avast.com:http (ESTABLISHED)

私がしなければならなかったことは

  1. /Applications/Uninstall Avast.appでAvastをアンインストールします
  2. sudo rm -rf "/Library/Application Support/Avast" "/Applications/Avast Business Security.app" "/Applications/Uninstall Avast.app"
  3. restart

を使用して、ポート80を使用しないようにします

0  spyle  2017-08-04


タイトルとURLをコピーしました