SOHO와 같은 네트워크 환경에서 컴퓨터의 IP 또는 MAC 주소를 기반으로 네트워크 대역폭 사용량을 모니터링할 수 있는 도구가 있습니까? 이를 통해 우리는 어떤 사용자가 가장 높은 대역폭 사용량을 가지고 있는지 알 수 있습니다. 가능하다면 IP 또는 MAC 주소를 기반으로 각 컴퓨터의 사용량을 계산할 수도 있습니다.
답변1
도움이 될 수 있는 여러 도구가 있으며, 가장 주목할만한 것은 iftop
배포판의 공식 저장소에서 사용할 수 있다는 것입니다. 이는 Curs 인터페이스를 사용하여 각 IP에 대한 대역폭 정보를 보고합니다 libpcap
.
tcpdump
필터를 수정하기 위해 -style 매개변수를 허용합니다 . 예를 들어 iftop -f "port http"
필터에는 포트 80에서 끝나는 트래픽만 포함됩니다.
답변2
iftop 즉시 볼 수 있는 상단과 유사한 인터페이스입니다.
ntop은 웹 인터페이스를 통해 광범위한 통계를 제공합니다.
argus 위와 동일하며 CLI 인터페이스가 있습니다.
또한 연결 추적기로 추적되는 정보는 Linux의 iptstate를 참조하세요.
답변3
이를 달성하기 위해 iptables 방화벽을 사용할 수 있습니다.
각 필터 규칙에 대한 바이트 및 패킷 수가 있습니다. 그래서 아이디어는 네트워크의 모든 IP에 대해 필터링 규칙을 갖는 것입니다. iptables 개수는 지속되지 않으므로(4GB에서 오버플로됨) 주기적으로 카운터를 읽고 재설정하는 크론 작업을 만듭니다.
속도:
인바운드 및 아웃바운드 트래픽에 대한 통계 테이블 추가
iptables -N acct_in
iptables -N acct_out
기본 규칙 설정(상위 항목으로 반환)
iptables -A acct_in -j RETURN
iptables -A acct_out -j RETURN
각 클라이언트 IP에 대해 입력 및 출력 규칙을 추가합니다.
iptables -I acct_in -d 192.168.x.y
iptables -I acct_out -s 192.168.x.y
마지막으로 acct_* 체인을 FORWARD 체인에 추가합니다.
iptables -A FORWARD -j acct_in
iptables -A FORWARD -j acct_out
이것이 기본 iptables 설정이어야 합니다.
다음을 사용하여 카운터 값을 읽을 수 있습니다.
iptables -v -L acct_in # for inbound traffic
iptables -v -L acct_out # for outbound traffic
...다음을 사용하여 카운터를 재설정합니다.
iptables -Z acct_in
iptables -Z acct_out
카운터 값을 읽고 재설정하고 파일에 저장하려면 cronjob으로 실행되는 스크립트를 작성하는 것이 좋습니다. -x
작업하기 더 쉬울 수 있는 정확한 값을 얻으려면 이 플래그를 사용하십시오 .
아니면 내 이전 프로젝트 중 하나를 살펴보라고 추천할 수 있습니다.nf_quota. 오랫동안 사용했는데 당시에는 월 3GB의 데이터 제한이 있었습니다. 매우 안정적으로 실행되지만 코드는 몇 년 동안 업데이트되지 않았습니다.
커널에서 netfilter 플러그인 역할을 합니다. 단점은 직접 컴파일해야 한다는 것입니다.
장점은 IP가 자동으로 추가되고, IP당 또는 전체 제한을 설정할 수도 있으며, 통계를 읽을 수 있는 깔끔한 명령줄 도구가 있다는 것입니다.
/편집하다: 방금 코드를 직접 확인해 보니, 내부적으로 뭔가 변경되었기 때문에 최신 커널로 컴파일되지 않는 것으로 나타났습니다. 따라서 나는 자신이 무엇을 하고 있는지 알지 않는 한 이 프로젝트를 사용하지 않는 것을 권장합니다(그러나 패치는 환영합니다;))
답변4
게이트웨이 장치에 대한 모니터링이 필요한 것 같습니다. 방화벽/라우터가 snmp 데이터를 제공할 수 있는 경우 Spiceworks 또는 Solar Wind를 사용하여 필요한 데이터를 수집하는 것이 좋습니다.