리눅스에서 IP 데이터 패킷을 가로채는 방법

리눅스에서 IP 데이터 패킷을 가로채는 방법

저는 이것을 Linux에서 달성하려고 합니다(가능한지, 어떻게 하는지는 확실하지 않습니다). 인터페이스의 모든 IP 패킷을 가로채고 해당 패킷을 특정 사용자 공간 프로그램 세트에 전달하는 프로그램을 작성해야 합니다.

가로채기란 IP 패킷이 내 프로그램(커널 모듈이나 특수 사용자 공간 프로그램 등)에 의해 캡처된 다음 해당 패킷이 더 이상 IP 스택을 통과하지 않는다는 것을 의미합니다.

예를 들어 운영 체제가 A, B, C, D...등 많은 프로세스(커널 공간 또는 사용자 공간)를 실행하고 있다고 가정합니다. IP 패킷이 일부 인터페이스(예: eth2)에서 수신되면 A, B만 이 패킷을 보고 다른 모든 프로세스는 이 패킷의 존재를 알 수 있기를 바랍니다.

누구든지 나를 올바른 방향으로 인도할 수 있나요?

답변1

내 생각에 당신은TUN/TAP 인터페이스. 둘 다 사용자 공간 프로그램을 네트워크에 연결합니다. TUN 인터페이스는 IP 계층에서 작동하고 TAP 인터페이스는 이더넷 수준에서 작동합니다.

관심이 있다면 이 튜토리얼이 TUN/TAP 인터페이스를 시작하는 데 도움이 될 수 있습니다. 제목은 다음과 같습니다.Tun/Tap 인터페이스 튜토리얼.

이것이 원하는 답변이 아닌 경우 해결하려는 문제에 대한 추가 배경 정보를 제공할 수 있습니다.

관련 정보