Tôi đang dùng OSX Mountain Lion 10.8.3 và tôi mới khởi động lại máy Mac của mình.
Tôi muốn bắt đầu một dịch vụ (như Apache trên cổng 80), nhưng đã có điều gì đó xảy ra với cổng 80:
telnet localhost 80
Trying ::1...
Connected to localhost.
Escape character is '^]'.
Đợi đã, tôi nghe bạn nói, bạn có thể tìm thấy điều đó với lsof hoặc netstat. Ngoại trừ không có gì ở đó
netstat -an | grep LISTEN | grep '\.80'
*comes back blank*
lsof -i :80 | grep LISTEN
*comes back blank
Vậy từ những gì tôi biết về các hệ thống unix, tôi nghĩ đây phải là một quy tắc chuyển tiếp gói? Các gói tin đang được chuyển tiếp từ cổng 80 đến một thứ khác đang lắng nghe trên dịch vụ đó.
ipfw show
65535 0 0 allow ip from any to any
Hmm, không có gì bất thường ở đó
pfctl -s nat
No ALTQ support in kernel
ALTQ related functions disabled
Không có gì bất thường ở đó
Câu hỏi của tôi là, làm thế nào tôi có thể hiển thị bất kỳ quy tắc chuyển tiếp gói nào ... Trên Linux tôi có thể chỉ cần làm iptables -L -t NAT hoặc iptables -L. Hoặc cách khác, bất kỳ chuyên gia OSX có thể giúp tôi chẩn đoán vấn đề này?
lsof
grep bạn sử dụng sẽ đến trống trở lại; số cổng được ánh xạ tới /etc/services
tên. Hãy thử lsof -i | grep http
...
-i :port
định dạng, chỉ khi bạn grep. Điều gì sẽ là một vấn đề là lsof
cần có quyền riêng tư để xem các quy trình của người dùng khác, vì vậy bạn nên sử dụng sudo lsof -i :80
(và tôi sẽ thử mà không cần grep
, chỉ để đảm bảo ...)
lsof -i :80
trong khi vẫn kết nối trong phiên Telnet đó chưa? Và ngoài việc thử http: // localhost / , có thể nhập nội dung nào đó tại dấu nhắc Telnet đó sẽ tiết lộ điều gì đó ...? (Một lần nữa, tôi biết: ngay cả khi bạn tìm ra nó theo cách đó, nó sẽ không phải là câu trả lời cho câu hỏi của bạn ...)