OS X'de 80 numaralı bağlantı noktasında ne dinlediği hakkında hiçbir fikrim yok


34

OSX Mountain Lion 10.8.3'deyim ve Mac'imi yeni bir şekilde yeniden başlattım.

Bir hizmet başlatmak istiyorum (80 numaralı bağlantı noktasındaki Apache gibi), ancak 80 numaralı bağlantı noktası ile devam eden bir şey var:

telnet localhost 80

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

Bekle, dediğini duydum, bunu lsof ya da netstat ile bulabilirsin. Orada hiçbir şey yok hariç

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

*comes back blank*

lsof -i :80 | grep LISTEN

*comes back blank

Yani, unix sistemleri hakkında bildiklerimden, bunun bir paket iletme kuralı olması gerektiğini düşünüyorum. Başka bir deyişle, paketler gelen 80 numaralı bağlantı noktasından bu hizmeti dinleyen başka bir yere iletilir.

ipfw show

65535 0 0 allow ip from any to any

Hmm, orada sıradışı bir şey yok

pfctl -s nat

No ALTQ support in kernel
ALTQ related functions disabled

Orada olağandışı bir şey yok

Sorum şu, herhangi bir paket yönlendirme kuralını nasıl görüntüleyebilirim ... Linux'ta sadece iptables -L -t NAT veya iptables -L yapabilirim. Veya alternatif olarak, herhangi bir OSX uzmanı bu sorunu teşhis etmeme yardımcı olabilir mi?


İlginç sorunuza doğrudan bir cevap değil, fakat: tarayıcınızı http: // localhost adresine yönlendirirseniz ne olur ?
Arjan

Kullandığın lsofasıltı geri dönecekti; port numaraları /etc/servicesisimlerle eşleştirilir . Deneyin lsof -i | grep http...
Nevin Williams

1
Aslında, / etc / services mapping, -i :portformat kullanıyorsanız sadece grep kullanıyorsanız sorun olmaz . Sorun ne olacak, lsofdiğer kullanıcıların süreçlerini görmek için kök ayrıcalıklara ihtiyacı var, o yüzden kullanmalısınız sudo lsof -i :80(ve grepemin olmak için bunu yapmadan denerdim ...)
Gordon Davisson

1
Herkese selam, önerileriniz için şimdiye kadar teşekkürler, ancak hiçbir şey ortaya çıkmadı - root olarak ve greps olmadan, aslında 80 numaralı bağlantı noktasını dinleyen bir şey yok.
geoff

Denediniz mi lsof -i :80hala o Telnet oturumunda bağlıyken? Ve http: // localhost / 'u denemenin dışında , belki de Telnet isteminde bir şeyler yazmak bir şeyi ortaya çıkarır ...? (Yine, biliyorum: bu şekilde çözseniz bile, sorunuzun cevabı olmazdı ...)
Arjan

Yanıtlar:


45

rootÖrneğin, diğer kullanıcıların işlemlerini göstermek için bu komutları çalıştırmanız gerekir , örneğin:

sudo lsof -i ':80'

Mac OS X, apachectlolarak kullanılarak kontrol edilebilecek bir Apache web sunucusu içerir root. Genellikle üzerinden başlar launchd, karşılık gelen yapılandırma dosyası /System/Library/LaunchAgents/org.apache.httpd.plist. O noktası 80 üzerinde çalışan bu Apache değil, büyük olasılıkla olduğu launchd , bir cin yöneticisinin Apple'ın uygulama. Wikipedia'ya göre :

Lansman iş boyunca taramalar başlattığında önyükleme sırasında istenirse, bu işler tarafından istenen tüm portları saklar ve dinler. Pistte "OnDemand" tuşu ile belirtilmişse, arka plan programı tam olarak yüklenmemiş demektir. Aksine, launchd bağlantı noktasını dinler, gerektiğinde arka planını başlatır ve gerekmediğinde kapatır. Bir arka plan programı yüklendikten sonra, launchd onu takip edecek ve gerektiğinde çalıştığından emin olacaktır.


Öyleyse benim fikrim tahmin doğru olmasıydı sudo lsof -i ':80' kudretinin aslında bu bir ishal sürece, hiçbir şey döndürmez bağlıyken Telnet oturumunda? Ancak bu komutlar olmasa bile, http: // localhost / muhtemelen Apache'ye hoş geldiniz sayfasını gösterirdi.
Arjan

(Cevabınızın muhtemelen çözüm olduğuna inanıyorum; sadece OP'nin tüm yorumları ile eşleşmiyor.)
Arjan

1
Bu mükemmel cevap için teşekkürler. Şimdi bunu çözmeyi başardım: 1. httpd.conf dosyasında bir hata oluştu, bu yüzden sudo apachectl start apache'yi başlatmıyordu. 2. Ancak launchd 80 numaralı bağlantı noktasını dinliyordu, var olmayan bir sunucuya istek iletmeye hazırdı. 3. Bununla birlikte, launchd, geleneksel anlamda dinlemiyordu - yani - sudo lsof -i: 80'in sonuçları, netstat için de aynı şekilde boştu. bir bağlantı noktası, ancak bir şekilde çekirdeği rüşvet alarak bağlantı noktasına bağlantı sağlamaya izin verir.
geoff

2
Benim için sorunu çözen şey sudo apachectl stopterminalde çalışıyordu .
MikeiLL

Bu benim için çalışmalarını yoktu, ama bu versiyon vermedi (OS High Sierra 10.13.6) koşuyordu göstermek sudo lsof -i -P | grep -i "80"dan superuser.com/questions/984919/...
RoboBear

7

Sadece kullanıcıların aradığı durumlarda gerçek cevabı netleştirmek için.

  1. launchd /System/Library/LaunchDaemons/önyüklemede tarar ve org.apache.httpd.plistapache başlatıldığında bundan 80 numaralı bağlantı noktasını yönlendirmesi gerekir.

  2. sudo apachectl start yapıldı

  3. Ancak httpd.confapache'nin başlatılmadığı anlamına gelen bir hata oluştu, ancak bu apachectlkomutla bildirilmedi .

  4. Launchd, Apache'nin sandığı gibi 80 numaralı bağlantı noktasını da dinlemeye karar verdi.

  5. Ancak herhangi bir HTTP isteğinin içeriği, bağlantının derhal kapatılmasına neden oldu.

  6. sudo lsof -i :80 cevap vermedi

  7. sudo netstat -an | grep LISTEN bağlantı noktası 80 için hiçbir yanıt vermedi

  8. 80 numaralı bağlantı noktasının kullanımda olduğunu veya dinlendiğini gösteren herhangi bir tanılama aracında söyleyebileceğim hiçbir bilgi yoktu.

  9. apache'nin httpd.conf'unu düzeltmek ve apache'yi başarıyla yeniden başlatmak, httpd'nin ps tablosunda olması, HTTP isteklerinin başarılı olmasına yol açtı.

  10. Bu yüzden apache'yi çalıştıramayacağımı söylüyordum, çünkü apache conf'in yerine port 80'i dinleyen bir şey zaten vardı.


Öyleyse httpd.conf ile yanlış olan neydi? Şimdi bu sorunu yaşıyorum ve buradaki cevabınıza göre nasıl devam edeceğimi bilmiyorum .. ??
Drew Angell

0

Ben sadece aynı sorunu OSX El Capitan ve Avast antivirüs ile karşılaştım. sudo lsof -i ':80'avast.com ile bağlantı gösterdi.

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)

Yapmak zorundaydım

  1. ile Avast'ı kaldırın /Applications/Uninstall Avast.app
  2. sudo rm -rf "/Library/Application Support/Avast" "/Applications/Avast Business Security.app" "/Applications/Uninstall Avast.app"
  3. tekrar başlat

80 numaralı bağlantı noktasını kullanmasını önlemek için.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.