Як переміщення сокета домену Unix дозволяє socat контролювати трафік?


12

socat можна використовувати для контролю трафіку через сокет домену 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

Я не зовсім розумію, як працює цей механізм, сподіваючись, що хтось може це трохи пояснити. Зокрема, як працює переміщення файлу сокета, якщо процес вже слухає його? Крім того, після переїзду: lsof /path/to/sockні /path/to/sock.originalповернути жодних результатів.

Відповіді:


11

Ці команди потрібно запустити, коли сервер, який ви хочете контролювати, зараз слухає /path/to/sock. Тоді, якщо ви переймените /path/to/sock, сервер не вплине.

socatКоманда вставляє людина-в-середині. Він прослуховує /path/to/socksі передає клієнтам увесь трафік /path/to/socks.original(і записує його в процесі роботи з -v).

Це працює лише для потокових типів сокетів (використання UNIX-RECVFROM/ UNIX-RECVдля сокетів дейтаграми ) і лише в тому випадку, якщо клієнти тільки read/write/send/recvна цих сокетах, а не sendmsg()з додатковими даними та іншими модними речами.

lsofбуде повідомляти лише про процеси прослуховування ( socatі сервер для прослуховування та прийнятих сокетів). Зазвичай підключити підключений сокет на клієнті до шляху сокета неможливо .

Якщо ви зробите це , перш ніж запустити сервер, то це не буде працювати як сервер буде намагатися слухати на /path/to/socksі не так socatвже слухає на цьому. Або вам потрібно сказати серверу слухати /path/to/sock.originalзамість цього.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.