Приветствую! Недавно начал тестировать nat на iptables + ipt_ratelimit + ipt_netflow
Столкнулся, что на вх. интерфейс WAN=«ens1f0.49», который смотрит в интернет прилетают пакеты длинной 0 либо 40B на адреса из пула nat /25 подсети, которые пока что никто из клиентов за локальными адресами не использует, пока что тестируется один клиент из локальной сети и у него другой нат адрес, но интересно можно ли как-то это дропать такие пакеты. В этих пакетах всегда прилетает с флагом tcp S, это никак не влияет на работу доступа в интернет либо самого сервера, но засоряет netflow данные на коллекторе такими пакетами по 40B.
вот немного данных с tcpdump, первые 3 октета нат адрес скрыл xx, но по последним октетам видно, что постоянно идут запросы на нат адреса из пула, которые пока что не используются.
tcpdump -i ens1f0.49
09:00:28.547428 IP 109.205.213.119.46059 > xx.xx.xx.14.12782: Flags [S], seq 3754013231, win 1024, length 0
09:00:28.548055 IP 109.205.213.119.46059 > xx.xx.xx.21.12782: Flags [S], seq 641338050, win 1024, length 0
09:00:28.549743 IP 109.205.213.119.46059 > xx.xx.xx.62.53939: Flags [S], seq 2865560167, win 1024, length 0
09:00:28.550030 IP 109.205.213.119.46059 > xx.xx.xx.35.18270: Flags [S], seq 1831743602, win 1024, length 0
09:00:28.559638 IP 109.205.213.119.46059 > xx.xx.xx.11.57520: Flags [S], seq 825489323, win 1024, length 0
09:00:28.560243 IP 109.205.213.119.46059 > xx.xx.xx.23.42387: Flags [S], seq 2859244899, win 1024, length 0
09:00:28.565678 IP 109.205.213.119.46059 > xx.xx.xx.76.39524: Flags [S], seq 2156982538, win 1024, length 0
09:00:28.577719 IP 109.205.213.119.46059 > xx.xx.xx.73.41118: Flags [S], seq 738077019, win 1024, length 0
09:17:54.119843 IP 109.205.213.90.51638 > xx.xx.xx.38.58368: Flags [S], seq 4016141653, win 1024, length 0
09:30:39.602596 IP 198.235.24.113.50961 > xx.xx.xx.36.2323: Flags [S], seq 2040150752, win 1024, options [mss 1460], length 0
Вот сами правила iptables
#!/bin/bash
# Задаем переменные
IPT="/sbin/iptables"
WAN="ens1f0.49"
LAN="ens1f0.13"
gray_nets="10.12.0.0/16"
our_ips="10.0.0.0/8,172.16.0.0/12,xx.xx.xx.0/19"
nat_ips="xx.xx.xx.0-xx.xx.xx.128"
echo "1" > /proc/sys/net/ipv4/ip_forward
# Clear all
$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
$IPT -t mangle -P PREROUTING ACCEPT
$IPT -t mangle -P OUTPUT ACCEPT
$IPT -F
$IPT -t nat -F
$IPT -t mangle -F
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X
# NETFLOW START
$IPT -I FORWARD -j NETFLOW
$IPT -I INPUT -j NETFLOW
$IPT -I OUTPUT -j NETFLOW
echo "16777216" > /proc/sys/net/netflow/hashsize
echo "5000000" > /proc/sys/net/netflow/maxflows
echo "16777216" > /proc/sys/net/netflow/sndbuf
# DROP ALL
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
## START ##
# ----------------------------------------------------------------------
# INPUT CHAIN
# Filter lo
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -m state --state INVALID -j DROP
# Limits
$IPT -A INPUT -p tcp --syn -m connlimit --connlimit-above 1000 -j DROP
$IPT -A OUTPUT -s $gray_nets -p icmp -m connlimit --connlimit-above 100 -j DROP
$IPT -A OUTPUT -s $gray_nets -p tcp -m connlimit --connlimit-above 1000 -j DROP
# Permit to me from our nets
$IPT -A INPUT -s $our_ips -j ACCEPT
# Deny wrong traffic
$IPT -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
$IPT -A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
# ----------------------------------------------------------------------
# FORWARD CHAIN
# Speed policing
$IPT -A FORWARD -m ratelimit --ratelimit-set speed_out --ratelimit-mode src -j DROP
$IPT -A FORWARD -m ratelimit --ratelimit-set speed_in --ratelimit-mode dst -j DROP
# States
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -m state --state INVALID -j DROP
# Forward outgoing traffic for gray_nets
$IPT -A FORWARD -o $WAN -s $gray_nets -j ACCEPT
# ----------------------------------------------------------------------
# OUTPUT CHAIN
# Filter out lo
$IPT -A OUTPUT -o lo -j ACCEPT
$IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# ----------------------------------------------------------------------
# POSTROUTING CHAIN
# Rules for SNAT
$IPT -t nat -A POSTROUTING -o $WAN -s $gray_nets -j SNAT --to-source $nat_ips --persistent
## END FOR IPTABLES ##
Может надо что то в цепочке input или forawrd прописать для правила тсп пакетов с флагом syn?
пробовал в цепочке input написать -p tcp –tcp-flags SYN,ACK,FIN,RST SYN -j DROP , но он дропает такие пакеты непосредственно на сам адрес нат сервера, но не на адреса из нат пула.