Làm thế nào để di chuyển một ổ cắm tên miền unix cho phép socat giám sát lưu lượng?


12

socat có thể được sử dụng để giám sát lưu lượng trên một ổ cắm tên miền Unix:

sudo mv /path/to/sock /path/to/sock.original
sudo socat -t100 -x -v UNIX-LISTEN:/path/to/sock,mode=777,reuseaddr,fork UNIX-CONNECT:/path/to/sock.original

Tôi hoàn toàn không hiểu cơ chế này hoạt động như thế nào, hy vọng ai đó có thể giải thích một chút. Cụ thể, làm thế nào để di chuyển tệp ổ cắm hoạt động nếu một quá trình đã lắng nghe nó? Ngoài ra, sau khi di chuyển: không phải lsof /path/to/sockvà cũng không /path/to/sock.originaltrả lại bất kỳ kết quả.

Câu trả lời:


11

Các lệnh đó phải được chạy khi máy chủ bạn muốn theo dõi hiện đang nghe /path/to/sock. Sau đó, nếu bạn đổi tên /path/to/sock, máy chủ sẽ không bị ảnh hưởng.

Các socatlệnh chèn một man-in-the-middle. Nó lắng nghe /path/to/socksvà chuyển tiếp tất cả lưu lượng truy cập của khách hàng /path/to/socks.original(và ghi lại nó trong quá trình với -v).

Điều đó chỉ hoạt động đối với các loại ổ cắm luồng (sử dụng UNIX-RECVFROM/ UNIX-RECVcho ổ cắm datagram ) và chỉ khi các máy khách chỉ sử dụng read/write/send/recvtrên các ổ cắm đó, không phải sendmsg()với dữ liệu phụ trợ và những thứ ưa thích khác.

lsofsẽ chỉ báo cáo các quy trình nghe ( socatvà máy chủ cho các ổ cắm nghe và được chấp nhận). Nói chung, không thể liên kết một ổ cắm được kết nối trên máy khách với đường dẫn của ổ cắm.

Nếu bạn làm điều đó trước khi bắt đầu các máy chủ, sau đó sẽ không làm việc như máy chủ sẽ cố gắng lắng nghe trên /path/to/socksvà thất bại như socatđã được nghe về điều đó. Hoặc bạn cần nói với máy chủ để lắng nghe /path/to/sock.originalthay thế.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.