最近一直在使用gfw6,感覺不錯。

試着做如下黑箱分析:

  1. 阻斷ipv6反向代理地址的工作方式:阻斷地址通過計算獲得:RFC 6147中指出,dns64反向代理服務器返回的ip由服務器決定,“一般情況下,返回一個帶ipv6固定前綴的地址”;現在看來大部分dns64服務器都是按照“一般情況”,GFW6隻要將所有ipv6請求目標地址和源地址某兩個塊(一般為最後兩個塊)倒推成ipv4地址,即可選擇性地發送RST包。如此土豪的方式,果然是一坨曙光計算機撐腰的大項目啊(笑)。
  2. 阻斷固定ipv6地址的工作方式:和以前ipv4的時候是一樣的,RST攻擊。
  3. 開始污染DNS64解析感覺這個沒啥作用
  4. 有兩點值得注意:對反向代理,似乎只對請求方發送RST包;https連接沒有被RST。

實驗(與上文對應):

  1. 選定任意一個DNS64地址,用nslookup得到返回值,增加hosts條目;本例測試X望の聲(牆外)和度娘(牆內)。wireshark抓包結果發現,X望の聲的第一個返回包被reset,導致連接失敗;度娘連接正常。

解決方案:

  1. 如果能找到一個“非典型”DNS64服務器,那GFW6的TCP阻斷就痿了。假設某個DNS64服務器的算法為,最後兩個地址塊為 FFFF:FFFF-ipv4轉換地址,那麼GFW6無法確定阻斷地址,要阻斷,只能把block list中的地址一一詢問該DNS64服務器;如果算法變一下,比如之前的計算結果再和一個常數異或一下,或者再每兩天(正好和本地DNS cache的TTL重合)換一個常數,那麼GFW6將會非常苦逼。RFC6147似乎沒有明確指出“optional parameter”的含義,從5.2節來看,似乎奇葩的算法也是可以的。
  2. 西廂代理v6?括弧笑
  3. 這個好辦,反正被牆的網站只是少數,nslookup一個沒被牆的DNS64地址,按算法寫到hosts里就好了嘛
  4. 可能是一個突破口,關注中。DNS64時X望の聲有時竟然是可以上去的。

有用的資料: