我一直试图将最大TCP连接限制在来自同一个IP的我的服务器的端口80。我已将iptable用于此任务:
-A INPUT -p tcp --dport 80 -m conntrack --ctstate ESTABLISHED -m connlimit --connlimit-above 24 --connlimit-mask 32 -j LOG_THROT该规则将数据包发送到我的LOG_THROT链,并在其中记录它们并重置连接。
问题在于,所有登录的IP(超过24条并行http连接规则)和apache的访问日志中找到的IP似乎都是合法的用户,它们来自google,来自标准移动ISP的vodafone等。他们的共同之处是用户代理,而且是:
Mozilla/5.0 ( iPhone;CPU iPhone OS 11_3,类似Mac ) AppleWebKit/605.1.15 (KHTML,类似壁虎)版本/11.0Mobile/15E148Safari/604.1
我想知道新的OS/浏览器是否比标准的6并行conns有更高的限制,它是否使用了在网站上找到的链接的某种预装并产生额外的连接,或者它是某种欺骗UA的爬虫?
如果它是合法的,你对安全连接计数限制有什么建议? 50,100?
发布于 2018-09-05 01:51:25
这件事解决了。不过,答案与最佳解决方案不同。最好的解决办法是由prosti来回答。
正在发生的情况是,前面提到的Safari/iOS没有重用,保持活跃的连接。原因可能很多,互联网上充斥着关于这个话题的不同答案,甚至可能是他们最新版本中一个不受欢迎的特性。苹果论坛在这个话题上是没用的。
因此,对于它必须从网站加载的每一项资产,它都会产生一个新的连接,但是服务器使康涅狄格服务器保持X秒的存活时间,最终达到iptables规则的阈值。
帮助我的解决方案是在httpd.conf中添加BrowserMatch指令,该指令与所有iphone/ipod设备匹配,并关闭对它们的保持活力支持。
BrowserMatch "iPhone|iPad|iPod" nokeepalive就最大连接而言,Safari可以生成,我发现在某些错误情况下,它将高达15000!( https://www.wiktorzychla.com/2017/06/http2-keep-alive-and-safari-browsers.html )。但在正常情况下,每个域的值为4-8,或从以下统计数据判断为15-30分片:http://www.browserscope.org/?category=network&ua=Safari*&v=3。
https://serverfault.com/questions/928970
复制相似问题