답변:
두 소켓 사이의 게이트웨이 역할을하는 앱을 만들고 흐르는 모든 데이터를 로깅하여 그렇게 주장하는 사람이 있습니다. 따라서 소켓을 탭 할 수는 없지만 서비스를 다시 시작 하고이 녀석 앱을 사용하도록 조정하면 모든 트래픽을 볼 수 있습니다.
게시물에 대한 링크는 다음과 같습니다. Unix Socket Sniffer
소켓에 연결된 프로세스 ID를 찾은 다음 lsof를 사용하여 소켓의 파일 설명자를 찾은 다음 strace를 사용하여 파일 설명자를 누르십시오.
클라이언트 / 서버가 소켓을 사용하는 것을 중단하고 재구성 할 수 있다면 항상 첫 번째 방법, 두 번째 방법을 권장하는 것이 까다 롭고 일부 응용 프로그램에서는 충돌을 일으킬 수있는 현재 프로세스를 탭해야합니다.
누군가가 anoter 방식으로 우리를 계몽하기를 바랍니다 :)
행운을 빕니다
socat을 사용할 수 있습니다.
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
위에서 일어나는 일 : 먼저 원래 소켓을 sock.original로 옮깁니다. Socat은 원본 위치에 새로운 소켓 ( 'UNIX-LISTEN')을 생성하고 모든 것을 원본 ( 'UNIX-connect')으로 전달합니다. -v는 socat에게 출력을 STDERR로 인쇄하도록 지시합니다.
소켓 양쪽의 프로세스 중 하나에서 strace를 사용해보십시오. 이는 쓰기 / 읽기 내용을 볼 수 있기 때문입니다. 나는 프로덕션 환경에서 socat이 없지만 strace가 있습니다.
유용한 목적을 위해, -s를 큰 것으로 설정하는 것은 필수입니다.
strace -p <pid>
실행중인 프로세스를 보는 데 사용 합니다.
strace -s9999 -f $(for i in $( pidof php5-fpm ) ; do echo -n " -p $i "; done ) 2>&1 | tee /tmp/php.log
그리고 테스트를 실행하십시오. 로그가 너무 큰지 천천히 확인하는 /tmp/php.log가 있습니다. 트래픽이 너무 많은 경우 이름이나 쿼리 문자열을 사용하여 로그에서 검색 할 수 있도록 요청하십시오
printf
반복을 처리 할 수 있습니다 . printf " -p %s" $(pidof php5-fpm)
각 pid 인수 앞에 접두사 -p
를 쓰고 훨씬 더 실용적입니다.
// backup the socket
sudo mv /var/run/docker.sock /var/run/docker.sock.original
// use tcp port 8089 proxy the original socket
sudo socat TCP-LISTEN:8089,reuseaddr,fork UNIX-CONNECT:/var/run/docker.sock.original
// use the new socket to proxy the 8089 port
sudo socat UNIX-LISTEN:/var/run/docker.sock,fork TCP-CONNECT:127.0.0.1:8089
그때:
sudo tcpdump -i lo -netvv port 8089