ओएस एक्स में पोर्ट 80 पर क्या सुन रहा है, इसका कोई अंदाजा नहीं है


34

मैं OSX माउंटेन लायन 10.8.3 पर हूं, और मैंने अपने मैक को नए सिरे से रीबूट किया है।

मैं एक सेवा शुरू करना चाहता हूं (जैसे पोर्ट 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

तो मुझे यूनिक्स सिस्टम के बारे में क्या पता है, मुझे लगता है कि यह एक पैकेट फॉरवर्डिंग नियम होना चाहिए? Ie पैकेट को इनबाउंड पोर्ट 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 पर इंगित करते हैं ?
अर्जन

lsofग्रेप तुम वापस खाली आएगा इस्तेमाल किया; पोर्ट नंबरों को /etc/servicesनाम से मैप किया जाता है। कोशिश करो lsof -i | grep http...
नेविन विलियम्स

1
वास्तव में, यदि आप -i :portप्रारूप का उपयोग करते हैं, तो / etc / Services की मैपिंग कोई समस्या नहीं है , केवल अगर आप grep करते हैं। क्या समस्या होगीlsof अन्य उपयोगकर्ताओं की प्रक्रियाओं को देखने के लिए रूट प्राइवेट की आवश्यकता होती है, इसलिए आपको इसका उपयोग करना चाहिए sudo lsof -i :80(और मैं इसके बिना प्रयास करूंगा grep, बस यह सुनिश्चित करने के लिए ...)
गॉर्डन डेविसन

1
हाय सब, अब तक के सुझावों के लिए धन्यवाद, लेकिन कुछ भी नहीं निकला है - यहां तक ​​कि रूट के रूप में, और बिना greps के, वास्तव में पोर्ट 80 को सुनने के रूप में सूचीबद्ध कुछ भी नहीं है।
जियोफ़

क्या आपने lsof -i :80उस टेलनेट सत्र में जुड़े रहने के दौरान प्रयास किया था ? और http: // localhost / को आज़माने के अलावा , शायद उस टेलनेट प्रॉम्प्ट पर कुछ टाइप करने से कुछ पता चलता है ...? (फिर से, मुझे पता है: यहां तक ​​कि अगर आप इसे इस तरह से समझ लेते हैं, तो यह आपके सवाल का जवाब नहीं होगा ...)
अर्जन

जवाबों:


45

rootउदाहरण के लिए, आपको अन्य उपयोगकर्ताओं की प्रक्रियाओं को दिखाने के लिए इन कमांडों को चलाने की आवश्यकता है :

sudo lsof -i ':80'

मैक ओएस एक्स में एक अपाचे वेब सर्वर शामिल है जिसे निम्न के apachectlरूप में उपयोग करके नियंत्रित किया जा सकता हैroot । यह आमतौर पर launchdइसी विन्यास फ़ाइल के माध्यम से शुरू किया जाता है /System/Library/LaunchAgents/org.apache.httpd.plist। यदि यह पोर्ट 80 पर चलने वाली अपाचे नहीं है, तो यह शायद लॉन्च किया गया है , एप्पल एक डेमन मैनेजर का कार्यान्वयन। विकिपीडिया के अनुसार :

जब लॉन्च के समय जॉब के माध्यम से स्कैन बूट समय पर जमा होता है और यह उन नौकरियों द्वारा अनुरोधित सभी बंदरगाहों पर सुनता है। यदि "ओनडेमांड" कुंजी द्वारा प्लिस्ट में इंगित किया गया है, तो डेमन वास्तव में समय पर लोड नहीं होता है। बल्कि, लॉन्च पोर्ट पर सुनेगा, जरूरत पड़ने पर डेमॉन शुरू करेगा और जब ऐसा नहीं होगा तो इसे बंद कर देगा। एक डेमॉन लोड होने के बाद, लॉन्चड इसका ट्रैक रखेगा और सुनिश्चित करेगा कि यह जरूरत पड़ने पर चल रहा है।


तो फिर मुझे लगता है कि मेरा विचार सही था जो वास्तव में कुछ भी नहीं लौटा sudo lsof -i ':80' सकता है, जब तक कि टेलनेट सत्र में जुड़े रहने के दौरान कोई भी ऐसा न करे ? लेकिन उन आदेशों के बिना भी, http: // localhost / शायद अभी भी कुछ अपाचे स्वागत पृष्ठ दिखाया होगा?
अर्जन

(मेरा मानना ​​है कि आपका जवाब शायद समाधान है; यह सिर्फ ओपी से सभी टिप्पणियों से मेल नहीं खाता है।)
अर्जन

1
इस शानदार जवाब के लिए धन्यवाद। मैं अब इसे हल करने में कामयाब रहा हूं: 1. httpd.conf में एक गलती थी, इसलिए sudo apachectl स्टार्ट अपाचे शुरू नहीं हो रही थी। 2. लेकिन लॉन्चड पोर्ट 80 पर सुन रहा था, एक गैर-मौजूद सर्वर के लिए अनुरोधों के लिए तैयार। 3. हालांकि लॉन्चड पारंपरिक अर्थों में नहीं सुनाई दे रहा था - वह है - सुडो lsof -i के परिणाम: 80 रिक्त था, इसी तरह netstat 4. मुझे लगता है कि लॉन्च xinetd की तरह कुछ जादू करता है कि यह आधिकारिक तौर पर नहीं सुनता है एक पोर्ट, लेकिन किसी तरह कर्नेल को रिश्वत देकर पोर्ट से कनेक्शन की अनुमति देता है।
ज्यॉफ

2
मेरे लिए जो समस्या हल sudo apachectl stopहुई वह टर्मिनल में चल रही थी ।
मिकीएलएल

यह मेरे लिए काम नहीं किया था, लेकिन इस संस्करण था दिखाती हैं, जो (ओएस उच्च सिएरा 10.13.6) चला रहा था sudo lsof -i -P | grep -i "80"से superuser.com/questions/984919/...
RoboBear

7

उपयोगकर्ताओं को इसके लिए खोज रहे हैं, बस वास्तविक उत्तर को स्पष्ट करने के लिए।

  1. लॉन्चड /System/Library/LaunchDaemons/बूट पर स्कैन करता है और इससे काम करता है org.apache.httpd.plistजब एपाचे शुरू होता है तो इसे उस पर पोर्ट 80 को अग्रेषित करने की आवश्यकता होती है।

  2. sudo apachectl start किया गया

  3. हालाँकि, httpd.confफ़ाइल में एक गलती थी जिसका अर्थ अपाचे शुरू नहीं किया गया था, हालांकि यह apachectlकमांड के माध्यम से रिपोर्ट नहीं किया गया था ।

  4. लॉन्चड ने पोर्ट 80 पर सुनने का फैसला किया क्योंकि उसे लगा कि अपाचे ऊपर है।

  5. लेकिन किसी भी HTTP अनुरोध की सामग्री के परिणामस्वरूप कनेक्शन तुरंत बंद हो गया।

  6. sudo lsof -i :80 कोई जवाब नहीं मिला

  7. sudo netstat -an | grep LISTEN पोर्ट 80 के लिए कोई जवाब नहीं मिला

  8. अब तक कोई जानकारी नहीं थी क्योंकि मैं किसी भी नैदानिक ​​उपकरण में बता सकता था जो दिखा रहा था कि पोर्ट 80 का उपयोग या सुनना था।

  9. Apache के httpd.conf को ठीक करना और Apache को सफलतापूर्वक पुनरारंभ करना ताकि httpd ps तालिका में था, HTTP अनुरोधों को सफल बनाने का नेतृत्व किया।

  10. इसलिए मैं गलत सोच रहा था कि मैं अपाचे नहीं चला सकता क्योंकि पोर्ट 80 पर पहले से ही कुछ सुनने को मिल रहा था, बजाय इसके कि अपाचे कॉन्फिडेंट ही कारण था


तो httpd.conf में क्या गलत था? मुझे अब यह समस्या हो रही है और मुझे यकीन नहीं है कि यहाँ आपके उत्तर के आधार पर कैसे आगे बढ़ना है .. ??
ड्रू एंगेल

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 का उपयोग करने से रोकने के लिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.