Apache-2.2

iPhone OS 11_3 http 連接氾濫

  • September 5, 2018

我一直在嘗試將最大 TCP 連接限製到來自同一 IP 的伺服器的埠 80。我已將 iptables 用於此任務:

-A INPUT -p tcp --dport 80 -m conntrack --ctstate ESTABLISHED -m connlimit --connlimit-above 24 --connlimit-mask 32 -j LOG_THROT

該規則將數據包發送到我的 LOG_THROT 鏈,我在其中記錄它們並 tcp 重置連接。

問題是,所有被記錄的 IP(溢出 24 個並行 http 連接規則)並在 apache 的訪問日誌中找到似乎是來自Google推薦的合法使用者,來自標準移動 ISP,如沃達丰等。他們的共同點是使用者代理,它是:

Mozilla / 5.0(iPhone;CPU iPhone OS 11_3,如 Mac OS X) AppleWebKit / 605.1.15(KHTML,如 Gecko)版本 / 11.0 移動版 / 15E148 Safari / 604.1

我想知道新的作業系統/瀏覽器是否具有比標準 6 個並行連接更高的限制,它是否可能使用某種在網站上找到的連結的預載入並產生額外的連接,或者它是某種欺騙 UA 的爬蟲?

如果它是合法的,您對安全連接數限制有何建議?50、100?

你為什麼不調整你的網路並使用 HTTP/2(最終的 HTTPS)

它們都使用單個多路連接,而不是 HTTP1.x 中的多個連接,不再需要域分片技術。

解決了這個問題。答案與最佳解決方案不同。最好的解決方案是prosti的答案。

發生的事情是前面提到的 Safari/iOS 沒有重用保持連接。造成這種情況的原因可能很多,網際網路上充斥著關於這個主題的不同答案,甚至可能是其最新版本中已棄用的功能。蘋果論壇在這個話題上毫無用處。

因此,對於它必須從網站載入的每一項資產,它都會產生一個新連接,但伺服器將 conns 保持活動 X 秒數最終會達到 iptables 規則的門檻值。

幫助我的解決方案是在 httpd.conf 中添加 BrowserMatch 指令,該指令匹配所有 iphone/ipod 設備並關閉對它們的 keepalive 支持。

BrowserMatch "iPhone|iPad|iPod" nokeepalive

至於 Safari 可以產生的最大連接數,我發現在某些錯誤情況下它會高達 15000 !(https://www.wiktorzychla.com/2017/06/http2-keep-alive-and-safari-browsers.html)。但在正常情況下,根據此統計資訊,每個域或 15-30 分片的值會更多:http ://www.browserscope.org/?category=network&ua=Safari *&v=3

引用自:https://serverfault.com/questions/928970