TL;DR

  • Linux용 netbadtcnetem을 감싸 네트워크 장애를 의도적으로 적용해 소프트웨어의 대응을 시험하는 도구임.
  • 패킷 손실, 지연, 순서 변경, 복제, 손상, 대역폭 제한을 간단한 명령으로 설정함.
  • 인터페이스 지정, 자동 복구 시간 설정, 기존 설정 대체, 드라이런을 지원함.
  • 권한이 필요한 시점에 sudo를 요청하며, status, list, clear 명령으로 상태를 확인하고 초기화함.
  • 송신 트래픽에만 영향을 주고 인터페이스의 모든 트래픽에 적용되며, 재부팅 후에는 설정이 유지되지 않음.

netbad가 필요한 이유

  • tc 명령을 반복해서 검색하고 이해하지 않은 명령을 복사해 붙여 넣는 일을 줄이려고 netbad를 만듦.
  • netbad는 Linux의 tcnetem을 감싼 도구이며 Linux에서만 작동함.
  • 사용 환경에 맞을 수도, 맞지 않을 수도 있는 도구임.

설치

사용법

  • netbad drop 10%: 패킷의 10%를 손실시킴.
  • netbad delay 100ms: 지연 시간 100밀리초를 추가함.
  • netbad shuffle 10%: 패킷의 10%를 순서와 다르게 전달함.
  • netbad duplicate 5%: 패킷의 5%를 두 번 전송함.
  • netbad corrupt 1%: 패킷의 1%에서 비트를 뒤집음.
  • netbad limit 1mbit: 대역폭을 제한함.
  • netbad status: 현재 적용 중인 상태를 확인함.
  • netbad list: 모든 인터페이스와 각 상태를 확인함.
  • netbad clear: 네트워크를 정상 상태로 되돌림.
  • 별도의 sudo 명령은 필요하지 않으며, 필요한 경우 netbad가 권한을 요청함.

추가 옵션

  • netbad drop 10% on eth0: 적용할 인터페이스를 지정하며, 기본값은 인터넷에 연결된 인터페이스임.
  • netbad drop 10% for 30s: 30초 후 설정을 자동으로 되돌림.
  • netbad delay 100ms --only: 설정을 누적하는 대신 현재 적용된 설정을 대체함.
  • netbad drop 10% --dry-run: 변경 없이 실행할 tc 명령을 표시함.
  • 장애 설정은 누적됨. netbad drop 10% 다음에 netbad delay 100ms를 실행하면 두 설정이 모두 적용됨.

알아둘 점

  • netem의 작동 방식에 따라 송신 트래픽에만 영향을 줌.
  • 특정 앱이나 포트가 아니라 인터페이스의 모든 트래픽에 영향을 줌.
  • SSH 연결에서 사용할 때는 주의가 필요하며, 30초로 설정하면 자동으로 복구됨.
  • 설정은 재부팅 후 유지되지 않음. 잊고 남겨 둔 설정은 netbad clear all로 모두 초기화함.