5개의 로컬 네트워크를 제외한 속도 제한 및 NAT 패킷 삭제

5개의 로컬 네트워크를 제외한 속도 제한 및 NAT 패킷 삭제

기본적으로 방화벽 수준에서 메일 서버에 대한 요청 속도를 제한하려고 하지만 여러 회사 소유 IP 범위를 허용 목록에 추가하려고 합니다. 화이트리스트에 올릴 수 있어요하나IP 주소 범위는 다양하지만 "첫 번째 일치 규칙이 패킷을 사용합니다"라는 특성으로 인해 여러 개는 아닙니다.

-I현재 제가 가지고 있는 것은 다음과 같습니다... ( 와 를 섞어서 죄송합니다 -A)

# Send traffic to rate-limiter before allowing it to continue to the mail server.
iptables -t nat -I PREROUTING -d 20.87.6.71 -p tcp --destination-port 25 -j DNAT --to-destination 192.168.250.71:25
iptables -t nat -I PREROUTING -d 20.87.6.71 -p tcp --destination-port 143 -j DNAT --to-destination 192.168.250.71:143
iptables -t nat -I PREROUTING -d 20.87.6.71 -p tcp --destination-port 993 -j DNAT --to-destination 192.168.250.71:993
iptables -t mangle -I PREROUTING -d 20.87.6.71 -p tcp --destination-port 25 -j rate-limiter
iptables -t mangle -I PREROUTING -d 20.87.6.71 -p tcp --destination-port 143 -j rate-limiter
iptables -t mangle -I PREROUTING -d 20.87.6.71 -p tcp --destination-port 993 -j rate-limiter

# Create a new chain, which logs all traffic then drops it.
# We make sure that localnets are not part of this...
iptables -t mangle -N rate-limiter
iptables -t mangle -A rate-limiter -p tcp --syn -d 20.87.6.71 ! -s 192.168.254.0/24 -m state --state NEW -m recent --set --name MailRateLimiter --rsource
iptables -t mangle -A rate-limiter -p tcp --syn -d 20.87.6.71 ! -s 20.87.6.0/24 -m state --state NEW -m recent --set --name MailRateLimiter --rsource

iptables -t mangle -A rate-limiter -p tcp --syn -d 20.87.6.71 ! -s 192.168.250.0/24 -m state --state NEW -m recent --rcheck --seconds 60 --hitcount 20 --name MailRateLimiter --rsource -j LOG --log-prefix 'RATE EXCEEDED' --log-level 4
iptables -t mangle -A rate-limiter -p tcp --syn -d 20.87.6.71 ! -s 192.168.250.0/24 -m state --state NEW -m recent --rcheck --seconds 60 --hitcount 20 --name MailRateLimiter --rsource -j DROP

iptables -t mangle -A rate-limiter -p tcp --syn -d 20.87.6.71 ! -s 20.87.6.0/24 -m state --state NEW -m recent --rcheck --seconds 60 --hitcount 20 --name MailRateLimiter --rsource -j LOG --log-prefix 'RATE EXCEEDED' --log-level 4
iptables -t mangle -A rate-limiter -p tcp --syn -d 20.87.6.71 ! -s 20.87.6.0/24 -m state --state NEW -m recent --rcheck --seconds 60 --hitcount 20 --name MailRateLimiter --rsource -j DROP

따라서 첫 번째 규칙은 패킷과 일치한 다음 이를 최근 테이블에 표시하므로 I 에서 cat /proc/self/net/xt_recent/MailRateLimiter화이트리스트에 추가해야 하는 IP가 표시됩니다.

src=20.87.6.200 ttl: 57 last_seen: 56654988107 oldest_pkt: 8 56654320106, 56654370481, 56654426548, 56654480458, 56654564349, 56654565421, 56654952936, 56654988107
src=20.87.6.5 ttl: 63 last_seen: 56655077970 oldest_pkt: 9 56654962465, 56654962465, 56654978465, 56655024835, 56655031038, 56655037096, 56655048206, 56655059305, 56655077970, 56654768325, 56654777150, 56654802008, 56654807677, 56654816481, 56654842497, 56654846996, 56654855809, 56654886875, 5665489136

어리석은 일이었다면 용서하세요... 긴 하루였고, 제가 이런 일에 빠져들게 되었습니다...

답변1

체인 상단에 다음을 작성하여 원하는 것을 화이트리스트에 추가할 수 있습니다.

iptables -t mangle -A rate-limiter <rule to match whitelisted> -j RETURN

POSTROUTING화이트리스트에 있는 네트워크와 일치하는 패킷은 수정 없이 반환됩니다 .

관련 정보