![Linux 터미널(netem)에서 패킷을 손상시키는 중 오류가 발생했습니다.](https://linux55.com/image/209280/Linux%20%ED%84%B0%EB%AF%B8%EB%84%90(netem)%EC%97%90%EC%84%9C%20%ED%8C%A8%ED%82%B7%EC%9D%84%20%EC%86%90%EC%83%81%EC%8B%9C%ED%82%A4%EB%8A%94%20%EC%A4%91%20%EC%98%A4%EB%A5%98%EA%B0%80%20%EB%B0%9C%EC%83%9D%ED%96%88%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
다음 규칙은 패킷의 임의 오프셋에 1비트 오류를 도입하여 패킷의 5%를 손상시킵니다.
sudo tc qdisc 변경 dev ens8 루트 netem 손상 5%
하지만 최근에 다음과 같은 오류가 발생했습니다.
오류: Qdisc를 찾을 수 없습니다. 생성하려면 NLM_F_CREATE 플래그를 지정하세요.
패킷 손상을 시뮬레이션할 수 있는 다른 방법을 제공하거나 도움을 줄 수 있습니까? 오류 감지 메커니즘이 얼마나 잘 작동하는지 확인하기 위해 패킷 손상을 시뮬레이션하려고 합니다.
답변1
초기 기본값큐 디스크커널에 의해 설정된 특수 핸들은 0:
수정되거나 참조될 수 없습니다. 새 파일로만 덮어쓸 수 있습니다.큐 디스크. change
기존 참고자료 활용뿌리 큐 디스크, 그러나 이는 기본 커널의 qdisc가 될 수 없으므로 이는 버그입니다.
그래서 이번이 처음이에요네템 큐 디스크사용하는 경우 add
키워드를 사용해야 하며 이는 아마도 과거 어느 시점에 수행된 작업이었을 것입니다. 그런 다음 키워드를 통해 참조하는 것으로 충분 change
하므로 나중에 키워드를 사용하여 일부 매개변수(예: 손상 비율)를 변경할 수 있습니다 .root
바로 가기가 replace
시도되므로 change
실패하면 실행됩니다 add
.
따라서 결국 이 명령은 처음과 다음 몇 번 작동합니다.
sudo tc qdisc replace dev ens8 root netem corrupt 5%
이걸 삭제하고 싶어큐 디스크이 작업은 한 번 수행해야 합니다(기본적으로 다시 수행되므로 두 번째에는 실패합니다).큐 디스크커널에 의해 설치되며 금지됨):
sudo tc qdisc delete dev ens8 root
add
, change
, replace
(예: change
또는 else add
) 의 사용법은 delete
다른 많은 경우에서도 유사한 패턴을 따릅니다.IP 경로 2주문하다.