有没有办法限制同时打开的 AF_INET 套接字的数量(仅限)?如果是这样,我该怎么做?如果超出限制,网络会如何表现?
背景:我的廉价商品路由器有点急于检测“syn 泛洪”。当它检测到时,它会崩溃(并且不会自动重新启动)。我认为将并发连接限制在 1000 个左右应该可以防止它争吵。
答案1
您可以使用 iptables 和 connlimit 模块限制一次的连接数。
来自 iptables 手册页:
# allow 2 telnet connections per client host
iptables -A INPUT -p tcp --syn --dport 23 -m connlimit --connlimit-above 2 -j REJECT
# you can also match the other way around:
iptables -A INPUT -p tcp --syn --dport 23 -m connlimit ! --connlimit-above 2 -j ACCEPT
# limit the number of parallel HTTP requests to 16 per class C sized network (24 bit netmask)
iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 16 --connlimit-mask 24 -j REJECT
# limit the number of parallel HTTP requests to 16 for the link local network
(ipv6) ip6tables -p tcp --syn --dport 80 -s fe80::/64 -m connlimit --connlimit-above 16 --connlimit-mask 64 -j REJECT