cgroup을 사용하여 네트워크 계정을 수행하는 방법

cgroup을 사용하여 네트워크 계정을 수행하는 방법

프로세스 그룹에 대한 네트워크 통계를 얻으려고 합니다. 내가 아는 한, Linux의 복잡한 네트워크 회계는 일반적으로 netfilter/iptables의 회계 인프라를 사용하여 수행됩니다.

나는 그러한 그룹에 대한 상속을 갖고 싶기 때문에 cgroups좋은 일치가 될 것입니다.

classid내 가장 좋은 아이디어는 iptables가 -controller를 사용하여 설정할 수 있는 것과 일치하도록 하는 것입니다 net_cls.

하지만 iptables는세트이 값은 --set--class.

그래서: Linux에서 프로세스 그룹에 대한 (복잡하고 유연한) 네트워크 계산 및 로깅을 얻는 좋은 방법이 있습니까?

답변1

아주 좋은 질문입니다! 감사합니다. 오래됐지만 여기 있는 사람들에게 도움이 될 거예요


A. tc와 함께 cgroup을 사용할 수 있습니다. 나는 그것에 대해 들어 본 적이 없지만 인터넷 검색 결과 다음과 같은 것을 발견했습니다.

net_cls — 이 하위 시스템은 Linux 트래픽 컨트롤러(tc)가 특정 cgroup 작업에서 발생하는 패킷을 식별할 수 있도록 하는 클래스 식별자(classid)로 네트워크 패킷에 태그를 지정합니다.

이에 따르면 tc로 작업하고 거기에서 통계를 얻어야 합니다(사용 가능한 많은 도구).

http://patchwork.ozlabs.org/patch/194809/

Alexey에게 연락하세요. 아마도 그가 당신을 도울 수 있을 것입니다 :)


B. 통계를 위해 SELinux와 iptables를 사용할 수 있지만 cgroup을 사용하여 대역폭을 제한할 수 있습니다. 저는 이 접근 방식을 더 좋아합니다. 어떤 경우에는 tc가 보기에 좋지 않고 통합에 적합하지 않습니다.

SELinux에는 네트워크용 후크가 있으며 프로세스 레이블에 따라 각 패킷에 추가 데이터를 레이블로 할당할 수 있습니다. 심지어 다른 시스템으로 전송하고 통계를 필터링/로그/가져올 수도 있으며 SECMARK를 사용하여 iptables로 할 수 있는 모든 작업을 수행할 수 있습니다.

http://selinuxproject.org/page/NB_Networking

아직 SELinux에 익숙하지 않다면 RedHat/Fedora 가이드 "Security-Enhanced Linux" 및 "SELinux FAQ"를 읽어 보시기 바랍니다. 또한 매우 훌륭한 설명과 가이드, Daniel J. Walsh(Dan Walsh)의 블로그 게시물도 있습니다. - 구글에 검색해 보세요.

또한 초보자를 위한 매우 좋은(그리고 더 나은) 출발점은 YouTube의 동영상을 따르는 것입니다. 필요한 모든 것을 이해하려면 약 3시간 안에 처리할 수 있을 것이라고 확신합니다.

  • 모두를 위한 SELinux - Paul Wayper
  • 시스템 관리자를 위한 SELinux - Paul Wayper

SELINUX는 쉽습니다. 두려워하지 마세요.

답변2

최신 커널을 사용하면 iptables의 cgroup과 직접 일치시킬 수 있습니다. 다음을 참조하세요.http://lwn.net/Articles/569678/

메인라인 커널에 포함되었습니다.

관련 정보