Iptables 규칙을 통해 전송 속도 제한

Iptables 규칙을 통해 전송 속도 제한

나는 busybox 운영 체제와 iptables 버전 1.4.0을 지원하는 D-Link 라우터 DSL-2730U를 가지고 있습니다.

다음 명령을 사용하여 호스트의 인터넷 연결을 성공적으로 차단했습니다.

IP 주소로 차단

iptables -I  FORWARD -d 192.168.1.6 -j DROP

또는 Mac 소스를 통해

iptables -I FORWARD -m mac --mac-source bc:20:a4:ff:79:80 -j DROP

이제 내가 가진 유일한 문제는 iptables를 사용하여 MAC 주소를 통해 전송 속도(업로드 및 다운로드)를 30/kbps로 제한하는 것입니다.

나는 다음과 같은 iptables 규칙을 얻으려고 노력하고 있습니다.

iptables -I FORWARD -m mac --mac-source bc:20:a4:ff:79:80 -m state --state RELATED,ESTABLISHED -m limit --limit 100/second --limit-burst 30 -j ACCEPT

하지만 성공은 없어

노트:라우터는 파일을 수정, 삭제 또는 추가할 수 없습니다. 라우터 내에서 bash 또는 스크립트 파일을 실행할 수 없습니다. 불행히도 이 iptables 버전은 iptables connlimit 모듈도 지원하지 않습니다.

답변1

이와 같이 iptables를 통해 속도를 제한할 수 있습니다.

iptables -I FORWARD -d 192.168.1.6 -j DROP
iptables -I FORWARD -d 192.168.1.6 -m limit --limit 100/sec -m state --state ESTABLISHED -j ACCEPT

그러나 "제한"은 초당 바이트 수가 아니라 패킷을 제한하기 때문에 그다지 편리하지 않습니다. 1패킷 = 1500바이트라고 가정하면 100패킷/초 = 150KB/초입니다. 그러나 패킷 크기가 더 작은 일부 프로토콜은 더 느리게 실행됩니다. 이로 인해 갑작스러운 연결 끊김이 발생할 수도 있습니다.

그러나 라우터에서 트래픽을 제한해야 하는 경우 옵션이 많지 않습니다. 일반적으로 iptables는 이를 수행하는 라우터의 유일한 유틸리티입니다.

제한 및 제거 규칙은 올바른 순서로 되어 있어야 합니다. 첫 번째 규칙은 트래픽을 제한하고 허용하며, 두 번째 규칙은 한도를 초과하는 트래픽을 차단합니다.

답변2

제한을 초과하는 IP 주소를 차단하는 DDos-Deflate라는 프로젝트가 있습니다. 이는 상황을 해결하는 데 도움이 될 수 있습니다.

https://github.com/jgmdev/ddos-deflate

관련 정보