나는 두 대의 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번입니다).OUTPUT
INPUT
iptables -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/).