패킷이 커널을 통해 흐르는 방식

패킷이 커널을 통해 흐르는 방식

나는 패킷 필터링/관리와 관련하여 커널 내부에서 무슨 일이 일어나고 있는지 실제로 알지 못했습니다. 사용자 공간(커널 공간 하위 시스템 수정)이나 커널 공간에서 직접 패킷에 대해 작업을 수행할 수 있는 다양한 도구가 있습니다.

각 도구와 다른 도구의 상호 작용이나 해당 도구의 기능을 문서화할 수 있는 곳이 있나요? 커널 코드를 읽을 만큼 기술적이지 않은 사람들을 위해 무슨 일이 일어나고 있는지를 나타내는 다이어그램이 어딘가에 있어야 한다고 생각합니다.

내 예는 다음과 같습니다.

내 네트워크 인터페이스 중 하나가 패킷을 수신하고 다음과 같은 결과를 얻었습니다.

  • 극세사 묶음
  • iptables
  • IPv4 하위 시스템(라우팅)
  • IPV
  • 전자 BPF

좋아, 나는 UFW가 iptables의 프런트엔드이고 iptables가 Netfiler의 프런트엔드라는 것을 알고 있습니다. 이제 우리는 커널 공간에 있으므로 도구는 Netfiler, IPV, IPv4 및 eBPF입니다.

마찬가지로 Netfilter와 IPv4 하위 시스템 간의 상호 작용은 매우 오래된(끔찍하지 않은) 하위 시스템이므로 쉽게 찾을 수 있으므로 문서가 부족한 것이 이상합니다. 이 다이어그램은 상호 작용의 개요입니다. 여기에 이미지 설명을 입력하세요.

하지만 IPV와 eBPF는 어떻습니까? 이 두 패킷이 커널에 있을 때 커널 하위 시스템이 패킷에 대해 작업을 수행하는 실제 순서는 무엇입니까?

나는 항상 안으로 들어가서 다른 사람들이 이해하도록 도우려고 노력하는 훌륭한 사람들을 찾습니다.http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.filter_rules.html

하지만 이것은 좀 더 공식적인 방법으로 문서화되어야 하지 않나요? 저는 여기서 이러한 하위 모듈이 어떻게 상호 작용하는지에 대한 설명을 찾고 있는 것이 아닙니다. 검색을 통해 직접 찾을 수 있다는 것을 알고 있습니다. 내 질문은 좀 더 일반적입니다. 왜 이러한 커널 하위 시스템 내부에서 무슨 일이 일어나고 있는지 실제로 설명하려고 시도하는 공식 문서가 없는 걸까요? 내가 모르는 곳에 기록되어 있는 걸까요? 이러한 도구를 설명하지 않을 이유가 있나요?

제가 이해가 안 됐다면 사과드립니다. 저는 이제 막 이런 것들을 배우기 시작했어요.

답변1

내가 아는 Linux 네트워킹 스택을 사용하는 대부분의 사람들은 아래 다이어그램을 사용합니다.위키피디아에서CC BY-SA 3.0에 따라 라이센스가 부여됨).

여기에 이미지 설명을 입력하세요.

보시다시피 netfilter 후크 외에도 XFRM 처리 지점 및일부eBPF 후크 포인트. tc eBPF 프로그램은 qdiscs 시작 및 종료의 일부로 실행됩니다. XDP 및 tc(예: 소켓 수준) 이외의 BPF 네트워크 후크 지점은 여기에 문서화되어 있지 않습니다.

내가 아는 한, IPVS는 netfilter 위에 구축되었으므로 여기에 직접 표시되지는 않습니다.

관련 정보