두 Unix 시스템 간에 전송되는 데이터의 양을 계산하는 방법

두 Unix 시스템 간에 전송되는 데이터의 양을 계산하는 방법

나는 두 대의 Linux 시스템을 가지고 있으며 그들은 항상 서로 핑을 보냅니다. 각 ping 요청에 대해 응답에 패킷을 추가합니다. 핑 빈도를 확인할 수 없습니다.

네트워크를 통해 서로 전송되는 데이터의 양이 몇 기가바이트인지 어떻게 결정합니까?

답변1

경로 어딘가(엔드포인트 또는 중간에 있는 라우터)에 있는 Linux 시스템에 대한 루트 액세스 권한이 있다고 가정하면 iptables 규칙을 작성하여 애플리케이션 트래픽을 일치시키고 이를 허용하는 특정 체인으로 보낼 수 있습니다. 외부에서는 작업이 수행되지 않습니다. 모든 패킷의. 커널은 각 체인에 바이트 및 패킷 카운터를 유지합니다. IP 10.1.2.3 TCP 포트 42123에서 IP 10.7.8.9 TCP 포트 42789까지의 패킷 수를 계산한다고 가정해 보겠습니다.

iptables -I FORWARD -p tcp -s 10.1.2.3 --sport 42123 -d 10.7.8.9 --dport 42789 -j ACCEPT

소스 호스트에서는 로 FORWARD, 대상 호스트에서는 로 교체합니다. 카운터를 읽을 수 있습니다. 여기서 42는 규칙 번호입니다(첫 번째 규칙은 1번입니다).OUTPUTINPUTiptables -nvxL FORWARD 42

두 방향을 계산하려면 각 방향에 대해 이 작업을 수행하십시오. 알려진 간격으로 카운터를 읽어 대역폭 사용량을 측정합니다.

중간 체인을 생성하면 약간의 유연성을 얻을 수 있습니다.

iptables -N myapp_counter
iptables -A myapp_counter -j ACCEPT
iptables -I FORWARD -p tcp -s 10.1.2.3 --sport 42123 -d 10.7.8.9 --dport 42789 -j myapp_counter
iptables -I FORWARD -p tcp -s 10.7.8.9 --sport 42789 -d 10.1.2.3 --dport 42123 -j myapp_counter

이 설정을 사용하면 카운터 myapp_counter에 양방향 트래픽이 포함됩니다. 체인을 순회하는 또 다른 이점은 체인의 카운터를 자동으로 읽고 이를 0으로 설정할 수 있다는 것입니다 iptables -nvxZL myapp_counter. 그리고 규칙 번호를 알아낼 필요가 없으므로 자동화가 더 쉽습니다.

답변2

를 사용하여 통계를 볼 수 있습니다 ifconfig.

답변3

어떤 프로그램이 데이터를 사용하고 있는지 확인할 수 있습니다 nethogs(http://nethogs.sourceforge.net/).

관련 정보