阿里雲是用什麼技術攔截未備案的域名的?
域名在http://name.com買的,阿里雲的免費伺服器。
使用域名訪問,有很大概率(大概99%)顯示了「萬惡阻斷頁」使用chrome inspect element,看到瀏覽器請求了http://aliyun.com/alww.html200OK,不是30x跳轉啊。如果使用IP直接訪問,100%進入正常頁面。備個毛案啊,digitalocean又快又好又便宜啊。
可是,這是什麼原理啊,求大神撥開我心中的迷霧。===總之我就是被攔截了,我已經被強姦了一百遍一百遍:head, script:window.onload = function () {document.getElementById("mainFrame").src= "萬網阻斷頁";}body:&應該就是這樣。===
新問題又來了:1. 如何攔截呢?通過阿里雲的網路,還是通過阿里雲的操作系統?2. 既然攔截了,為什麼不直接返回給我最終污染後的頁面,而要返回一個通用頁面,再去請求新的頁面?原諒我就是這樣一個noob T_T
本來我一直以為是域名備案的問題,看了輪子哥@vczh的回答之後我試了一下把一個沒有備案的域名(moe)解析到一個已經綁定過備案域名的阿里雲,刷新幾次都沒有攔,所以我認為輪子哥說的實際上需要備案的是伺服器沒有錯。另外補充一點是已備案域名指向未備案主機也是可以的,只要有一個二級域名備案過其他二級域名理論上在國內都是可以用的。(基友的域名就是掛了一個http://beian.xxx.com指向阿里雲,主站並沒有放在阿里雲上)所以不如說伺服器和域名備案是邏輯上的或關係,兩個里只要有一個備案過就可以用。阿里雲有防火牆也就是所謂的雲盾一類的東西,入站的請求阿里會先過濾一遍,你說他知不知道你的域名有沒有備案呢?不過其實阿里雲的話用https就不會攔截,我備案沒下來前試過,雖然現在web server都有SNI但是阿里雲似乎沒有檢測。
備案的原理不是輪子哥說的(伺服器地址,IP地址,域名)這個 tuple ,而是 (域名,主機地址,聯繫人)這個 tuple 。聯繫人是為了出問題的時候能通知你去刪帖子的,主機地址是為了萬一你沒刪帖子的時候去拔網線的,所以會精確到機柜上的位置(當然也就精確到了某個網線插口)。
然而阿里雲說,伺服器在我手上,域名也在我手上,域名解析我也有,管局你幫我個忙,簡化一下流程吧,反正出問題了保證拔線。那麼這樣一來通過阿里雲的備案就不需要精確到哪個可用區的哪個主機去了,當然阿里自己也懶得檢查你備案時候用的那個服務號是不是實際用的那個(反正都在阿里雲我怕啥)。
這樣就能解釋為什麼【在阿里雲內部換主機不用重新備案】以及【在別的地方備案之後阿里雲不讓用】的現象了。
另外這個攔截機制跟阿里雲的代備案系統不通,因此即使在備案過程中也不會放行的。這就出現了一個矛盾:管局要求網站能正常訪問才能進行備案(我就被卡過)。為了這個矛盾他們還專門對管局的 IP 段(我猜的)做了個白名單,並且如果投訴的話通過工單可以手動放行。
【如何攔截】是通過類似於雲盾之類的一套服務進行的,請求會發到伺服器來(我打過日誌),但是返回值不會返回給瀏覽器。跟具體的操作系統沒關係,基於 HTTP 的請求都會受到影響。
【既然攔截了為什麼不直接寫進去】估計是做攔截的地方對性能要求很高,不便於處理那麼長的內容吧。用個中間頁跳轉一下也方便改提示信息。如果玩 302 跳轉並沒有什麼意義。所以如果是手動建立 TCP 連接然後再處理 HTTP 的話,只要 HTTP 頭裡面 Host 填了個備案過的域名應該也可以吧?(當然伺服器端要對這個偽裝的 Host 做處理,並且這一招對瀏覽器並沒有什麼價值)當用戶通過未備案域名訪問阿里雲主機的時候,首先要經過的是阿里雲的網關。這個時候阿里雲的網關會比對 HTTP 數據包中的 HOST 中的域名是否備案。如果沒有備案,那麼就在數據傳出去之前,給阿里雲主機發送一個 tcp rst 同時給用戶發送一個 tcp rst。如果你在阿里雲主機上 iptables 直接 drop rst 的話,瘋狂刷新用戶端,你可以發現有一定幾率可以訪問到網頁。如果你這個時候在客戶電腦上也 drop rst 你就發現可以直接訪問了。
阿里雲不提供類似http://xxx.cloudapp.net這種域名嗎?如果我就是自己開發用,不作為ICP都不行?
順便說一下,攔截很容易,http header裡面有訪問的域名,比較一下白名單就可以了。你應該備案的是那個伺服器而不是域名(你應該也不會買.cn吧,我假設)。
我覺得你只需要使用阿里雲那個服務去備案就好了,不就是跑一趟他們的辦公室嗎,很容易就搞定了。
阿里雲免費伺服器,我也試用了。你那是伺服器沒備案,每次都會被提醒。是被阿里給攔截。
最近正在處理的問題,阿里雲備案是伺服器備案。就算你用一個已經備案過的域名解析到阿里雲,當天可以訪問,第二天就攔截了。打電話問客服,說未在阿里雲備案系統有備案記錄。只要你在他們的備案系統提交備案,不管你的備案進度是怎樣的。只要在他們的備案系統有記錄,就不會進行攔截。
防火牆上對http包做了域名過濾,不在白名單就reset。https就攔截不了我的測試:https://zhuanlan.zhihu.com/p/30898336
工信部規定,大陸境內的伺服器都需要備案。所以如果阿里雲伺服器沒有備案,你用域名訪問的時候就會被阿里雲攔下。起初我也不想備案的,但是看到這句就跪了:
「如您的網站尚未備案,請您儘快登錄阿里雲備案系統提交備案申請,待備案成功後域名方可解析及訪問網站,如您的網站未成功取得備案號,將影響您的網站正常訪問。」如果用AWS的服務,就不會有這個困擾了。我不會告訴你。做個URL轉發就搞定了。
找阿里雲申請加入白名單之類.不只是阿里雲其他的IDC也是這樣的(包括淘寶上的)
首先要知道http是明文傳輸,這就意味著你的數據經過的地方都知道你在看什麼,甚至可以修改你的數據,當然你換https他就攔不掉了
首先,你的伺服器是在阿里雲那裡的,這意味著所有對伺服器的請求,阿里雲都可以攔截到,這一點沒有任何技術難度。第二,他是怎麼知道你是通過域名訪問的呢?了解http協議的人都知道,通過域名訪問時,請求頭的host欄位就是網站域名,阿里雲只要判斷這個欄位就知道了。第三,通過ip為什麼不攔截,這應該是法律的問題了。
阿里雲有個備案白名單,不申請進白名單的域名即使備案也攔。
域名備案了,但是不是委託阿里雲備案的也攔。。我們只是一個很小的服務放在阿里雲上,用了三級子域名,然後妥妥的封鎖。提示要求備案轉入,你TM在逗我。。。
推薦閱讀:
※如何評價電子科大楊宏春老師對計算機專業的言論?
※有哪些好的Linux學習資源?
※會寫 Parser、Tokenizer 是什麼水平?
※既是碼農又是設計師的大牛一般是怎樣的學習歷程?