~에서그 기사, 나는 깨달았다:
UNIX 도메인 소켓은 파일 경로에 바인딩됩니다.
socat
따라서 다음을 통해 DGRAM Unix 소켓을 스니핑 해야 합니다.여기. 그러나 이 목적을 위해 경로를 검색하려고 하면 대상 응용 프로그램이 파일 경로가 없는 소켓을 사용하는 것으로 나타났습니다.
이 ss -apex
명령은 파일 경로가 있거나 없는 결과를 표시합니다. 예:
u_dgr UNCONN 0 0 /var/lib/samba/private/msg.sock/32222 1345285 * 0 users:(("nmbd",pid=32222,fd=7))
u_dgr UNCONN 0 0 * 8567674 * 0 users:(("gnome-shell",pid=16368,fd=23))
~에서SS 매뉴얼 페이지* 8567674
파일 경로가 없다는 것이 무슨 뜻인지 모르겠습니다 .
따라서 두 가지 질문이 있습니다.
- 어떤 경우에는 Unix 소켓에 대한 파일 경로가 없는 이유는 무엇입니까?
socat
파일 경로 없이 Unix DGRAM 소켓을 스니핑하는 방법은 무엇입니까?
답변1
질문 1
Q1: ss 매뉴얼 페이지에서 그 의미를 찾을 수 없습니다. 예를 들어 *8567674에는 파일 경로가 없습니다.
~에서설명하는 문서주소:포트는 다음과 같습니다:
발췌형식과 의미주소 모드주소 계열에 따라 다릅니다.
- 인트라넷-주소 모드이는 IP 접두사, 그 뒤에 선택적 콜론 및 포트로 구성됩니다. 접두사 또는 포트 부분이 누락되었거나 *로 대체된 경우 와일드카드 일치가 표시됩니다.
- 인트라넷 6-와 마찬가지인트라넷, 접두사만 IPv6 주소를 나타냅니다. 같지 않은인트라넷콜론은 모호해지기 때문에 ss는 주소가 [ ... ]로 뒷받침되는 URL에 사용되는 것과 같은 체계의 사용을 허용합니다.
- 유닉스-주소 모드쉘 스타일 와일드카드입니다.
- 가방- 형식은 다음과 같습니다.인트라넷, 포트가 아닌 인터페이스 인덱스만 유지되며, 주소가 아닌 링크 계층 프로토콜 ID만 유지됩니다.
- 인터넷 연결- 형식은 다음과 같습니다.인트라넷, 포트가 아닌 소켓 pid만 유지되며 주소가 아닌 netlink 채널만 유지됩니다.
포트문법적으로는 그렇죠주소 모드와일드카드 주소 부분 포함. 물론 UNIX 소켓에서는 정의되지 않습니다.
마지막 문장이 당신의 대답입니다.
질문 2
Q2: 어떤 경우에는 유닉스 소켓에 대한 파일 경로가 없는 이유는 무엇입니까?
다음 Q&A를 참조하세요.소켓 파일을 생성하지 않고 Unix 도메인 소켓을 사용하는 방법.
발췌"추상 소켓 주소"를 사용하여 Unix 도메인 소켓을 만들 수 있습니다. 바인딩하기 위해 전달된
sun_path
문자열의 첫 번째 문자를 에 설정하기 만 하면 됩니다. 이 초기 문자 뒤에 나머지 문자열을 쓰고 (또는 무엇이든) 채우십시오.sockaddr_un
'\0'
NUL
sun_path
UNIX_PATH_MAX
NULs
이런 방식으로 생성된 소켓에는 파일 시스템 항목이 없습니다.
질문 #3
Q3: 파일 경로 없이 socat을 통해 Unix DGRAM 소켓을 스니핑하는 방법은 무엇입니까?
이러한 항목이 무엇인지 알고 나면 Google 검색을 더 수행해 보세요.socat 문서.
발췌
- 요약 - 들어보세요:
- 요약 - 보내기:
- 요약-RECVFROM:
- 요약-RECV:
- 요약 - 클라이언트: >
추상 주소는 파일 시스템 기반 소켓을 처리하지 않고 대신 대체 UNIX 도메인 주소 공간을 처리한다는 점을 제외하면 관련 UNIX 주소와 거의 동일합니다. 이를 보관하기 위해 소켓 주소 문자열에는 내부적으로 "\0" 접두사가 붙습니다. 이 기능은 Linux에서만 사용할 수 있습니다. 옵션 그룹은 연관된 UNIX 주소와 동일하지만 ABSTRACT 주소는 NAMED 그룹의 구성원이 아닙니다.