프로세스 그룹에 대한 네트워크 통계를 얻으려고 합니다. 내가 아는 한, 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/
메인라인 커널에 포함되었습니다.