OS X에서 포트 80에서 수신 대기하는 내용이 없습니다.


34

OSX Mountain Lion 10.8.3을 사용 중이며 Mac을 새로 부팅했습니다.

서비스 (예 : 포트 80에서 Apache와 같은)를 시작하려고하지만, 이미 포트 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

그래서 내가 유닉스 시스템에 대해 알고있는 것으로부터, 이것은 패킷 포워딩 규칙이되어야한다고 생각한다. 즉, 인바운드 포트 80에서 해당 서비스를 수신중인 다른 패킷으로 패킷이 전달되고 있습니다.

ipfw show

65535 0 0 allow ip from any to any

흠, 거기 특이한 건 없어요.

pfctl -s nat

No ALTQ support in kernel
ALTQ related functions disabled

그다지 이상한 것은 없다.

내 질문은 어떻게 모든 패킷 전달 규칙을 표시 할 수 있습니다 ... 리눅스에서 난 그냥 iptables -L -t NAT, 또는 iptables -L 할 수도 있습니다. 또는 OSX 전문가가이 문제를 진단하는 데 도움을 줄 수 있습니까?


흥미로운 질문에 대한 직접적인 대답은 아니지만, 브라우저에서 http : // localhost ?
Arjan

lsof당신이 사용 했던 grep은 비어있게됩니다. 포트 번호는 /etc/services이름 에 매핑됩니다 . 시도해보십시오 lsof -i | grep http...
Nevin Williams

1
실제로 -i :portgrep 인 경우에만 형식 을 사용하면 / etc / services 매핑이 문제가되지 않습니다 . 무슨 문제가있다 할 것이다 lsof다른 사용자의 프로세스를 볼 루트 privs 및 필요, 그래서 당신은 사용해야합니다 sudo lsof -i :80(그리고 나는이없이 그것을 시도 할 것입니다 grep단지 만들기 위해, 확인 ...)
고든 데이비슨

1
안녕 모두, 제안까지 주셔서 감사합니다,하지만 아무 것도 나타나지 않았습니다 - 심지어 루트로서, 그리고 greps없이 포트 80을 실제로 듣고 아무것도 나열되어 있지 않습니다.
geoff

lsof -i :80텔넷 세션에 연결되어있는 동안 시도해 보셨습니까 ? 그리고 http : // localhost / 를 시도하는 것과는 별개로 , 텔넷 프롬프트에서 무언가를 입력하면 뭔가가 나타납니다 ...? (다시, 나는 알고있다 : 당신이 그것을 그 방법으로 파악하더라도 그것은 당신의 질문에 대한 답이 될 수 없다 ...)
Arjan

답변:


45

root다른 사용자의 프로세스를 표시 하려면 다음 명령을 실행해야합니다 . 예를 들면 다음과 같습니다.

sudo lsof -i ':80'

Mac OS X에는 apachectlas를 사용하여 제어 할 수있는 Apache 웹 서버가 포함되어 있습니다 root. 보통 via를 통해 시작되며 launchd해당 구성 파일은 /System/Library/LaunchAgents/org.apache.httpd.plist입니다. 포트 80에서 실행되는이 Apache가 아니라면 Apple의 데몬 관리자 구현 인 launchd 일 것입니다 . Wikipedia 에 따르면 :

launchd가 부팅시 작업 plists를 검색하면 해당 작업에서 요청한 모든 포트를 예약하고 수신 대기합니다. "OnDemand"키로 plist에 표시되면 데몬이 실제로로드되지 않습니다. 오히려 launchd는 포트에서 수신 대기하고 필요한 경우 데몬을 시작하며 그렇지 않은 경우 종료합니다. 데몬이로드 된 후, launchd는 데몬을 추적하고 필요할 경우 실행 중인지 확인합니다.


그래서 나는 내 생각이 맞아되었다 추측 sudo lsof -i ':80' 할 수 하나를 실행하지 않는 한, 실제로 아무것도 반환하지 그 연결 상태 텔넷 세션에서? 하지만 이러한 명령이 없어도 http : // localhost / 는 아마도 일부 Apache 환영 페이지를 표시했을 것입니까?
Arjan 2015 년

(귀하의 답변은 아마도 해결책이라고 생각합니다, 그것은 단지 OP의 모든 의견과 일치하지 않습니다.)
Arjan

1
이 멋진 대답에 감사드립니다. 나는 그것을 해결할 수 있었다. 1. httpd.conf에 실수가 있었기 때문에 sudo apachectl start가 아파치를 시작하지 못했다. 2. 그러나 launchd는 존재하지 않는 서버에 요청을 전달할 준비가 된 포트 80에서 수신 대기 중입니다. 3. launchd는 일반적인 의미에서 듣지 않았다. 즉 sudo lsof -i : 80의 결과는 netstat 4와 마찬가지로 비어있다. xinetd와 같은 마법은 공식적으로 듣지 않는다. 포트이지만 어떤 식 으로든 커널에 뇌물을 제공하여 포트에 대한 연결을 허용합니다.
geoff

2
나에게이 문제를 해결 한 sudo apachectl stop것은 터미널에서 실행 되고 있었다 .
MikeiLL,

이것은 나를 위해 작동하지 않았지만,이 버전은 않았다 (OS 높은 시에라 10.13.6)을 실행중인 것을 보여 sudo lsof -i -P | grep -i "80"에서 superuser.com/questions/984919/...
RoboBear

7

사용자가이 문제를 검색하는 경우 실제 답변을 명확하게 작성하십시오.

  1. launchd /System/Library/LaunchDaemons/는 부트를 검사하여 org.apache.httpd.plist아파치가 시작될 때 포트 80을 포트 80으로 전송해야합니다.

  2. sudo apachectl start 끝났다.

  3. 그러나 httpd.conf아파치가 시작되지 않았 음을 의미 하는 파일에 실수가있었습니다 apachectl. 명령을 통해보고되지는 않았지만 .

  4. Launchd는 아파치가 올라간 것으로 생각하여 포트 80을 듣기로 결정했습니다.

  5. 그러나 HTTP 요청의 내용으로 인해 연결이 즉시 종료되었습니다.

  6. sudo lsof -i :80 대답이 없음

  7. sudo netstat -an | grep LISTEN 80 번 항구에 대한 답변 없음

  8. 포트 80이 사용 중이거나 청취 중임을 보여주는 진단 도구에서 말할 수있는 정보가 없습니다.

  9. apache의 httpd.conf를 수정하고 아파치를 성공적으로 다시 시작하여 httpd가 ps 테이블에 있었기 때문에 HTTP 요청이 성공적으로 수행되었습니다.

  10. 그래서 아파치 conf 자체가 원인이 아니라 포트 80에서 이미 듣고있는 것이 있기 때문에 나는 아파치를 실행할 수 없다는 착각을하고 있었다.


그래서 httpd.conf에 무엇이 잘못 되었습니까? 나는 지금이 문제가 있고 나는 당신의 대답에 기초하여 진행하는 방법을 모르겠다. .. ??
드류 엔젤 (Drew Angell),

0

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. 다음과 함께 Avast를 제거하십시오. /Applications/Uninstall Avast.app
  2. sudo rm -rf "/Library/Application Support/Avast" "/Applications/Avast Business Security.app" "/Applications/Uninstall Avast.app"
  3. 재시작

포트 80을 사용하지 못하도록합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.