IPTable에 IP별 규칙을 적용하는 방법은 무엇입니까?

IPTable에 IP별 규칙을 적용하는 방법은 무엇입니까?

이러한 규칙을 전역이 아닌 IP별로 적용하려면 어떻게 해야 합니까? IP가 초당 2개 이상의 패킷을 전송하는 경우 모든 IP의 모든 패킷이 삭제되므로 초당 2개 이상의 패킷을 전송하는 IP에서만 패킷을 삭제해야 합니다.

먼저 다음 규칙을 적용합니다.

/sbin/iptables -t mangle -A PREROUTING -p udp --dport 7778 -m string --hex-string "|5341 4d50|" --algo kmp -m limit --limit 1/sec --limit-burst 2 -j ACCEPT

/sbin/iptables -I INPUT -p udp --dport 7778 -m string --hex-string "|5341 4d50|" --algo kmp -m limit --limit 1/sec --limit-burst 2 -j ACCEPT

그런 다음 다음을 적용합니다.

/sbin/iptables -I INPUT -p udp --dport 7778 -m string --hex-string "|5341 4d50|" --algo kmp -j DROP

/sbin/iptables -t mangle -A PREROUTING -p udp --dport 7778 -m string --hex-string "|5341 4d50|" --algo kmp -j DROP

감사해요

답변1

hashlimit 모듈을 사용해야 합니다.

iptables -I PREROUTING -t mangle -p udp --dport 7778 -m string --hex-string "|5341 4d50|" --algo kmp  -m hashlimit --hashlimit-mode srcip --hashlimit-above 2/sec --hashlimit-burst 1 --hashlimit-name foo -j DROP

여기서는 --hashlimit-mode로 충분합니다. 아래 매뉴얼을 참고해주세요

--hashlimit-모드 {srcip|srcport|dstip|dstport},...

고려해야 할 개체의 쉼표로 구분된 목록입니다. --hashlimit-mode 옵션이 제공되지 않으면 hashlimit는 제한처럼 작동하지만 해시 관리가 희생됩니다.

예를 들어, 다음과 같이 각 소스 IP - 대상 포트 쌍에 대한 속도를 설정할 수 있습니다.

--hashlimit 모드 srcip,dstport

관련 정보