iptables를 통해 패킷 속도 제한 설정

iptables를 통해 패킷 속도 제한 설정

내 인터넷 공급자는 패킷 속도 제한(초당 최대 10)을 설정합니다. 제한을 초과하면 연결이 끊어지기 때문에 AceStream 플레이어를 사용하려는 경우 문제가 됩니다.

이 프로그램에 대한 인터넷 액세스를 어떻게 제한합니까?

제안된 명령을 시도했습니다.

iptables -A OUTPUT -m limit --limit 10/s -j ACCEPT

하지만 치명적인 오류 메시지가 나타납니다.

FATAL: Error inserting ip_tables (/lib/modules/3.2.0-67-generic/kernel/net/ipv4/netfilter/ip_tables.ko): Operation not permitted
iptables v1.4.12: can't initialize iptables table `filter': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.

관리자 권한이 있는 경우:

sudo iptables -A OUTPUT -m limit --limit 10/s -j ACCEPT

더 이상 오류 메시지가 없습니다. 하지만 여전히 작동하지 않고 연결이 끊어집니다.

명령줄에 오류가 있나요? 아니면 iptables의 다른 매개변수를 사용해야 합니까?

다음은 공급자의 한도를 초과했을 때 받은 실제 메시지입니다.여기에 이미지 설명을 입력하세요.

지금까지 나는 다양한 방법을 시도했지만 그 중 아무 것도 작동하지 않았습니다.

sudo iptables -A INPUT -p tcp --syn --dport 8621 -m connlimit --connlimit-above 10 --connlimit-mask 32 -j REJECT --reject-with tcp-reset

sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -m limit --limit 9/second --limit-burst 10 -j ACCEPT

sudo iptables -A INPUT -p tcp --destination-port 8621 --syn -m state --state NEW -m limit --limit 9/s --limit-burst 10 -j ACCEPT

이 접근 방식은 앱을 계속 사용하는 데 도움이 되지 않는 것 같습니다. 그래서 또 다른 질문을 게시했습니다.iptables를 통해 연결 제한 설정.

답변1

찾은 솔루션이 정확합니다.

iptables -A OUTPUT -m limit --limit 10/s -j ACCEPT

그러나 기본 정책은 DROP 또는 REJECT로 가정하는데, 이는 OUTPUT에서는 일반적이지 않습니다. 다음을 추가해야 합니다.

iptables -A OUTPUT -j REJECT

ACCEPT 규칙 뒤에 이 규칙을 추가해야 합니다. 이 순서대로 실행하거나 -I대신 ACCEPT를 사용하십시오 -A.

또한 애플리케이션에 따라 연결이 종료될 수도 있습니다. 이 경우REJECT 대신 DROP을 사용해 보세요.또는 다른 포트를 사용해 보십시오 --reject-with(기본값은 icmp-port-unreachable).

방금 텔넷을 사용하여 DVR 서버를 테스트했는데 연결이 끊어지지 않았습니다. 물론, 새로운 연결은 나가는 패킷이기 때문에 REJECT를 사용하면 제한에 도달한 직후에 다시 연결을 시도하면 즉시 실패합니다.

귀하의 ISP가 INPUT 패킷을 제한하기를 원한다는 의견을 수집했습니다. 귀하는 그렇게 할 수 없습니다. 당신이 그들을 차단할 수 있을 때쯤에는 당신의 NIC에 이미 도달한 것입니다. 즉, 당신의 ISP가 이미 그들을 점유하고 있다는 뜻입니다. OUTPUT을 제한하면 대부분의 ACK가 완료되지 않아 많은 재전송이 발생하므로 INPUT 패킷 수도 크게 늘어납니다.

초당 10개의 패킷은 미친 짓입니다.

답변2

동기식 홍수 방지:

# iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

비밀 포트 스캐너:

# iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

죽음의 평화:

# iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

관련 정보