標籤 五芒星 下的所有文章

ShadowManager 穩定版本釋出

歷時 4 個月(明明就是五天),shadowmanager的開發終於結束了。

ShadowManager 是一個用於同時維護多個不同加密的 shadowsocks 伺服器的輕量級,可擴展指令碼。

預設命令的使用方式如下:

add: 新增一個伺服器到 shadowmanager 的管理,需要 3 個參數。埠,密碼,和加密方法。
start: 啟動 shadowmanager,無需參數。
stop: 停止 shadowmanager,無需參數
restart: 重啟 shadowmanager,無需參數。
status: 檢視 shadowmanager 狀態,無需參數。
show: 顯示所有 shadowsocks 伺服器,無需參數。
remove: 移除指定 ID 的 shadowsocks 伺服器,使用 "show" 來檢視所有伺服器,需要 1 個參數,伺服器 ID。
enovr: 啟用一個或多個覆寫,可將覆寫名作為參數(可選)。
disovr: 禁用一個或多個覆寫,可將覆寫名作為參數(可選)。

Shadowmanager 的特性之一是其可擴展性,在 Shadowmanager 中,提供了覆寫(Overrides),包含(Includes)與鉤子(Hooks)。它們可以被用來修改那些未在 Shadowmanager 中給出選項的行為。包含在 Shdowmanager 載入後讀取,覆寫在 Shadowmanager 載入之前。在每個覆寫之前都有兩位字元,它們所代表的是載入的優先順序。優先順序從 00 排列至 zz,字元越往後,優先順序越高。

目前,Shadowmanager 提供這些覆寫:

  • 00-no-root:該覆寫通過替換 root 檢測函數來跳過 root 檢查,在需要臨時關閉 root 檢測時很有用。
  • 10-base64-encrypted-passwd:使用 base64 來儲存伺服器的密碼。這在你需要在密碼中使用特殊字元時有用。
  • 20-json-to-shadowmanager:該覆寫提供了一個 ‘json2manager’ 命令,可以用於將shadowsocks json 配置檔案轉換為 shadowmanager 的配置檔案。
  • 30-generate-qr-code:為 Shadowmanager 的伺服器生成二維碼。
  • 40-randpass:新增一個命令 ‘add-randpass’ 至 shadowmanager,這個命令允許使用者新增隨機密碼的 shadowsocks 伺服器。
  • 70-time-limit:以小時限制每個 shadowsocks 伺服器可以使用的時間。這個覆寫會使用 pre-add 事件鉤子,並新增一個 Cronjob 來檢查賬戶並移除過期伺服器。
  • 90-pre-server-daemon:為每個伺服器使用單獨的程序。在需要分開統計每個伺服器的流量時有用。
  • 90-screen-start:這個覆寫將替換 ‘start’ 命令原本的實現,使用該覆寫會讓 shadowsocks 伺服器在 screen 內啟動,而不是作為服務啟動。這在需要檢視伺服器日誌時有用。
  • 99-chinese-usage:這個覆寫提供了中文的幫助文字。
  • aa-wizard:為 shadowmanager 的伺服器新增、伺服器移除等操作提供一個嚮導。
  • zz-interactive-mode:這個覆寫會使得 shadowmanager 以互動式模式啟動。該方法可能會引起一些問題,故不推薦。

鉤子是在特定行為執行前後運行的函數。這些鉤子可以在 hooks/ 中定義。某些覆寫可能會按需修改鉤子來達成某些目的。在非原版的實現中也可以定義鉤子。(例如覆寫與包含,甚至鉤子本身!)

usage: hook <hooked_function>

Hook 命令會檢測函數是否存在,若存在則會將其執行。

若想要新增您自己的命令用法與解釋至 shadowmanager,您可以使用 ‘add-help’ 與 ‘add-usage’。這兩個命令都會從標準輸入讀取輸入。幫助文字的語言可以在這兩個命令的參數內定義。若留空,則會被作為預設語言顯示(當偏好語言不能被提供時使用)。

usage: echo '   <your-command>: <your-explaination>' | add-help [help-language]
usage: echo '   <your-command>: command-name <parameters>' | add-usage [help-language]

Shadowmanager 釋出於 MIT 協議。項目地址:https://github.com/MagicNAT/shadowmanager/

五芒星的故事

在遙遠的東方,有著一群受黑暗壓迫的人民。

這些人民中有著激昂的,嚮往自由的鬥士,有平庸的,過著自己逃亡生活的平民,也有連自己身處迫害中都不被察覺的愚民。

迫害著人民的罪魁禍首,是擁有者控制人民思想,阻擋光明力量的珙斧王。珙斧王有著三個得力的手下,屹東,巔馨,和鐮瞳。珙斧王的威力雖然巨大,但是僅憑他一人控制整個東方,還是頗為困難的。

實際上,屹東,巔馨,和鐮瞳本來和珙斧王不是這樣的關係。屹東,巔馨,和鐮瞳本是盅粿貞傅的的手下。但是珙斧王,他是不被粽裹蒸傅說承認的。為什麼這裡要將粽裹蒸傅專門拿出來講呢?因為粽裹蒸傅其實才是統治整個東方的勢力,控制著粽裹蒸傅的,是一個更強大的勢力,公禪黨。

粽裹蒸傅祕密的聘用了珙斧王,讓他壓迫自己的臣民。雖然這是被多數人所熟知的,但是粽裹蒸傅,依舊不承認。

再說回屹東,巔馨,和鐮瞳。他們很顯然也是瞭解珙斧王的存在的,珙斧王時常會給他們命令,讓他們觀察人民的動向,或是幫助健全其黑暗的壓迫勢力。

然而,哪裡有壓迫,哪裡就會有反抗。在珙斧王的壓迫下,追逐光明的勇士們召喚出了五芒星。五芒星為勇士們開闢出了一條通往光明的大道,在那之後,人們又可以接觸到光明的世界了。

然而,好景不長。五芒星的廣泛應用引起了珙斧王的注意,加上近期是坦克要壓馬路的重要時刻,怎能讓五芒祕術發揚?於是,珙斧王下令要封殺五芒星。最先採取行動鎮壓五芒星的人,是屹東。屹東阻斷了勇士們通往五芒星的道路,讓他們與五芒星的聯絡幾乎完全切斷。然而,但這也帶來了一些壞處。那就是,不僅僅是五芒星,其他的事物也被無意的波及了。從某種意義上來說,這反而加重了人們反抗的聲音——但是,依舊沒有人站出來打倒屹東。實際上,他們也沒有辦法打倒屹東,因為掌握著大權的珙斧王隸屬於執政者,珙斧王隨時都能將反抗者押入大牢。

巔馨也是對五芒星制壓嚴重的手下之一。巔馨與屹東不同,它雖然並不阻斷人民與五芒星之間的聯絡,但是卻用同樣惡毒的手段,黯淡了五芒星的光芒。同樣的,他們的人民們也是苦不堪言而無力反抗。

至於鐮瞳——他對五芒星的干擾很少,出了珙斧王下達的指令外,他對人民沒有額外的迫害。所以,不少屹東與巔馨管理下的人民們,轉移到了鐮瞳所在之地。但是巔馨身為年長的手下之一,自然不會希望自己的臣民全部離去,巔馨給予了部分臣民特別的許可權——他們與五芒星的聯絡不會受到限制。所以,許多的臣民都會向這些特別的人購買通往五芒星光芒的樞紐。這些人中比較出名的是金瓶王和柒夜王,他們都是些有錢的主兒,權利也大,尤其是柒夜王們,他們一部分來自西方的資本世界,這一部分人甚至珙斧王都不敢得罪。

然而,隨著珙斧王威力的增長,一位召喚五芒星的領頭者,被珙斧王的守衛們審訊了。在那之後,這位勇士隱名埋姓,銷燬了召喚五芒星的法術書,並打算不再接觸任何法術。曾經被他救贖的人們,現在也只能在他的五芒星祭壇祭奠這位勇士。

然而,倒下一位勇士,還會有千千萬萬位勇士。現在,一個又一個的勇士拿起記憶中的五芒星祕術,擔起了召喚五芒星的偉大使命。甚至有些為此不惜鉅款,逃向遙遠的西方,離開珙斧王的統治——只為了繼續研究召喚五芒星的祕術。

這就是五芒星與珙斧王的故事。

新時代的閉關鎖國:大牆之下的無奈之舉

身為一名大陸公民,難免的會經歷境外網站訪問受阻的問題。

在此,讓我們姑且撇開中間人攻擊等種種陋行不談(實際上對於這點,NSA乾的事一樣),單對中國政府的封鎖行為來進行分析。我也曾為此困惱過,摔過路由器,砸過電腦,在心裡也把這網路審查的全家罵了個遍。但是在此,我要維護網路審查的行為。

我處於一個較為特別的小圈子裡。說這圈子特別,就是因為這個圈子並沒有受到太多政治,(自我審查,內容遮蔽)的影響。也就是得益於這一點,我們這圈子裡的一行人能以客觀的角度來看待這些問題。

然而並不是所有的人都有這樣的運氣。中國內,過半數的人並沒有這樣的看法。(實際上,這是經濟實力的問題。多數的窮人不能以一個客觀,有遠見的看法來看待某些事情。這句話沒有任何驕傲或鄙夷的成分,只是表達個人看法。)為什麼要審查?有些資訊並不能傳入中國。並不是說那些資訊在你看來“沒有什麼”就真的沒有什麼了。的確,那些東西是“沒有什麼”可是某部分人看到那些資訊之後,可能會產生“為什麼國外的東西那麼好?憑什麼我沒有這樣的待遇”,諸如此類的想法。(舉個例子,中美護照尾頁對比,看到它的時候是否心中掠過一絲不爽呢?這樣的例子還有許多,若是大量此類資訊湧入,自然會引發些不好的效果。說政治並不大影響,並沒什麼錯,多數的人並不關注這些,但是對於某些歷史真相,知道的太多真的可能會出問題,i.e. 程式設計隨想 | 誰是最可恨的人?——寫給仇日憤青們。這個站上還有很多,不列舉。)

抵禦文化侵略,傳統思想保護,這些都是大牆的目的。身為一個歷史悠久的國家,過分的西洋文化可能會導致原本文化的喪失。這並不是玩笑——不知何時起,我總會覺得中國許多的東西很糟糕,中國一切很混亂,國產就是爛。然而後來我發現,這種想法並不正確。我們自然不能與諸如Google相比,但是近年來國產,免費的優秀產品越來越多。當我意識到這一點的時候,我才發覺自己不知何時已經被無意間洗腦了。這樣的文化侵略是在對於境外網站的訪問逐漸積累而產生的——這也就導致大牆對於部分網站時完全封閉,而不是關鍵詞遮蔽。他們想要同過這樣的方式來阻止文化的侵略。

另外,中國在這樣的環境下,生長出了一個又一個復刻的國外網站,幾乎所有被牆的網站都能在中國大陸內找到其相同形式的網站。若是沒有大牆,這些網站可能要比現在發展的艱難得多,甚至根本不會出現。

看起來似乎大牆並不壞,那麼對於大牆為什麼會罵聲一片呢?從一則引用我們來分析一下這個問題。

首先,在校學生翻牆人數中的比例很高,對網際網路資訊審查和資訊封鎖造成極大威脅。據“調查”顯示,“翻牆的人群裡,將近50%是在校學生”。這就是說,傳說中每年花費幾百億的GFW工程差不多有一半是用來對付在校學生的。

接近半數都是學生,這意味著什麼?作為學生的其中一員,使用國外網站做的,也就是查查資料,瞭解技術罷了。相信其他的學生也不過如此。至少——至今我還未見到大陸學生利用翻牆技術進行反動之類。這麼一大片的學生,查著正經的學術內容的時候,被牆了,心中產生對審查的厭惡很容易理解。然而,這就是防火牆所必需付出的代價,若是要阻止文化侵略,西洋思想洗腦,就得放棄一些。魚與熊掌,不可兼得。

然而,作為一名學生,對於這些事情我比沒辦法有太深入的瞭解。到底審查是對是錯?我給不出肯定的答案。然而,按照我的思想,我更傾向與相信它是有利的。它並沒有把事情做絕?不是嗎。表面上封禁著,若是要看,還是可以檢視的。但是往往有著這些翻牆知識的人,不會去翻看那些(自我審查,內容遮蔽)的內容,即使是看到了,也不過一笑了之,為何要在意這些呢?將翻牆想象為看世界的考驗,既控制了國外能流傳進國內資訊的數量及其觀測者,又阻止了某些素質不佳的人想國際網際網路增添垃圾,從這樣的角度看中國並沒有做錯。

至於思想以及文化這種無形的入侵——我想,恐怕並不是那麼容易解決的。若是真想解決,那麼一開始就應該如朝鮮一樣——建立國家區域網。或是早前沒意識到問題,或是不希望人民變得愚昧,中國並沒有這麼做,不管是什麼原因,這很值得我們慶幸。

從幾次的某會來看,中國完全有著封禁一切的能力,某會召開期間,幾乎所有的較為明顯的協議都被封鎖,甚至協議特徵不明顯的ShadowSocks與OpenVPN也遭到封禁,在前些年更是有全境外封禁的例子,大牆已經像人們證明了它的實力。(對於企業之類的說法其實並沒有什麼用,中國只是徘徊於政治與經濟兩項的抉擇之中。放棄外企,抑或是縱容翻牆。中國只是在探索著,希望在這兩者之間尋找一個平衡點。若是政治問題嚴重到了覆蓋過經濟所帶來的益處,大牆大概會發揮出它的真正實力。)

曾經我是無比的憎恨大牆,但是當我真正深入思考後剩下的卻是悲哀。這悲哀一份是中國仿若歷史倒退一般的閉關鎖國,一份是對這導致閉關鎖國的愚昧人民無知的無奈。閉關鎖國到底是否正確?放開管制到底會導致什麼?中國在這兩個選擇之中做出了看起來穩妥的選項,即使這樣可能導致落後,即使這樣可能導致無知,但這就是中國人,中庸,保守的中國人。我不知道自己為什麼會認為網路審查有利,也許,因為我是中國人。

渴望自由是人類的本性,然而人們卻還喜歡控制。當控制者發現自由威脅到了他們的控制之時,自由便不復存在。若人們真的渴望自由,他們需要做的,便是服從控制。從控制中獲得些許的自由是最保守的做法,控制者很顯然也明白這一點,即使他們有做絕的能力,他們並不喜歡把事情做到絕對,這裡面的原因已經頗為明顯。那麼,讓我們祈禱這樣的和諧狀態能持續下去吧。


EDIT:對於往GitHub的DDoS我還是要譴責的。我只是支援適量的網路審查,而並不是無腦憤青。最近郵箱被Greatfire Github Repo的各種吵架填滿,一部分人持著趕走Greatfire的念在Github issue裡就撕了起來(真厲害…)。這樣看來,也許這樣的“和諧”狀態不能持續太久了。Amazon CloudFront那邊似乎也做起了自我審查,說是“The Amazon CloudFront distribution is configured to block access from your country. ”,對此我也很無奈。Greatfire&GFW最終誰會勝利?結果沒有人能知道。

對GitHub的大規模DDoS攻擊已超過80個小時,攻擊者此舉顯然是為了迫使GitHub移除反審查項目Greatfire。DDoS攻擊產生的史翠珊效應(Streisand effect)反而讓更多人知道了Greatfire。攻擊者先後使用了四種DDoS技術攻擊GitHub(未完全確認):第一波是創造性的劫持百度JS檔案利用中國海外使用者的瀏覽器每2秒向託管在GitHub上的兩個反審查項目發出請求,這一手段被GitHub用彈出JS警告alert()防住;第二輪是跨域 攻擊,被GitHub檢查Referer擋住;第三波是DDoS攻擊GitHub Pages;第四波是正在進行中的TCP SYN洪水攻擊,利用TCP協議缺陷傳送大量偽造的TCP連線請求,讓GitHub耗盡資源。對於Greatfire所實現的collateral freedom(PDF),也有許多人對此表達了不滿,Greatfire的做法讓一些CDN服務商遭到了封殺,而GitHub是最新的受害者。

然而很明顯,這攻擊對這名受害者並沒有什麼卵用。反倒是攻擊者,自己打了自己一巴掌。