部分網域名稱無法正常彈出portal問題解析

2021-07-24 20:40:26 字數 1707 閱讀 1752

前幾天線上裝置出現奇怪的現象,部分終端使用uc瀏覽器訪問部分**無法彈出portal或彈出portal比較慢,但是其他大部分終端訪問卻可以正常彈出portal,真是莫名其妙,到底是怎麼回事?

剛開始本地嘗試復現,但是一直沒有出來,線上又不好分析,一度陷入了死局。

後來想起之前有遇到過瀏覽器雲端加速導致訪問異常的情況,所以就懷疑是瀏覽器雲端加速導致的,所以立即進行測試

a. 使用uc瀏覽器,開啟雲端加速,果然portal無法彈出或彈出很慢,關閉後正常。通過抓包發現開啟時,開啟**時,瀏覽器會主動向某些位址傳送請求,埠是8081(我們是監控80埠進行彈portal的,8081請求,如果訪問的網域名稱或ip不在白名單中直接丟棄)。

b. 開啟雲端加速,將瀏覽器主動請求的位址加入白名單中,彈出portal正常。

這應該就確定跟雲端加速時,主動訪問其他網域名稱非80埠時,報文被丟棄了,所以就讓測試去蒐集不同瀏覽器雲端加速的網域名稱了。

難道真的是這個原因嗎?,如果你也這麼想,那我們都是too young了!

另外乙個同事,一直覺得不是這麼簡單,所以他後來又進行了深度的測試,詳細分析了portal彈出失敗時的報文,果然發現真的不是那麼簡單!

通過分析報文發現有兩種情況:

1)將雲端加速訪問的網域名稱加入白名單後,訪問時直接可以上網,不會彈portal

2)關閉雲端加速時,訪問某個**時,死活不彈portal

看到這裡,你應該也會納悶,怎麼回事?第一種情況:之前我們測試只是加了乙個ip,可能這個ip就只是用來探測連線的,真正資料通訊使用的是另外的ip,所以加入後可以正常彈portal(這個需要具體分析下,mark)。當把網域名稱加進去後,網域名稱對應的所有ip都正常訪問,當你訪問某個網域名稱時,瀏覽器先向雲伺服器請求,雲伺服器再向這個網域名稱請求,然後將返回的資料,返回給瀏覽器。因為雲伺服器都放行了,這時雲伺服器就像**一樣,你雖然沒有認證過,但是資料都是走雲伺服器**出去的,所以你就可以直接上網了。

針對這種情況該怎麼做呢,這個暫時還沒有方案,待詳細分析下瀏覽器雲端加速原理再說吧!
第二種情況:通過仔細分析報文,終於發現原來是請求報文分片了,並且第一片資料是在ack報文中的!**中沒有針對ack攜帶資料進行處理,因為一般都是push中才會攜帶資料。真是漲了見識,不過也暴露了自己對網路協議這塊的生疏。

這種情況就比較好解決了,只需要新增針對ack報文的處理了,但是總不能所有的ack都處理吧!如果ack沒有攜帶資料,根本就沒必要處理。

那怎麼判斷ack中有沒有資料呢?

其實很簡單,暴力點,就判斷ip頭總長度是不是大於40,如果是,就判斷ack攜帶有資料,如果不是,那肯定沒有攜帶資料。修改後,測試,完美解決,搞定!

if (1==tcph->psh

|| (1==tcph->ack && iph->tot_len > 40)) //判斷ip頭大於40,就斷定ack中攜帶有資料

...}

至於第一種情況,後面詳細分析下,再好好談論下方案!

這種情況下不解決,會嚴重影響使用雲端加速瀏覽器的使用者體驗!

Chrome Adobe Flash 無法正常使用

該 因是是google.com,被強了,所以一般打不開。故將google官方說明記錄以下 如果 adobe flash 無法正常使用,或者您看到以下錯誤訊息,請嘗試按照下文介紹的問題排查步驟操作。如果您使用的是移動裝置,那麼 flash 無法在 chrome 中使用。在計算機上開啟 chrome。在...

ZT 無法正常關機?

來自 http soft.deepin.org read.php?tid 639783 我有個老師跟我說他的電腦有點問題,就是電腦無法正常關機,也就是說 開始 關閉計算機 關閉 後,沒有任何反應,反而還能做其他的事情 就是等於沒按一樣 試試以下方法 方法一 方法二 1.點 開始 設定 控制面板 電源...

無法正常安裝Nessus

可以正常安裝nessus,第一次開啟配置時,卡在初始化介面。重啟後,顯示 no valid rapl domans found in package0 在初始化過程中彈出,物理磁碟空間不足的提醒。並且初始化每次走到不到一半,又回到原點,從新來過,如此迴圈。為虛擬機器加大磁碟空間。以下為具體步驟 ps...