Total Pageviews

Tuesday, 31 December 2019

年代向錢看 美國監管台灣選舉?臉書設立戰情室!美中網路大戰!


南田太空港~晉陞太空科技董事長陳彥升親自導覽解說


2020s与习近平的“中国梦”



2020元旦不仅意味着新一年,也意味着新的新的年代、新的十年的到来。回顾过去和展望未来的十年,一个关系到许多人命运的话题,就是习近平的“中国梦”。中国有许多事都适用一句古话:“其兴也勃,其亡也忽”,习近平的“中国梦”没能例外。(13年,习猪头提出“中国梦”。19年,“中国梦”寿终正寝)。作为一种引导中国人创造未来的想象力资源,习近平的中国梦来得快,去得也快。经历了2019,我相信没有多少人,包括中国人也包括外国人,会对习近平的“中国梦”再存任何积极的想象。事实上,稍有头脑的人都能看到,习已经把中国带入难以脱离的险境,他的“中国梦”完全变成了“中国噩梦”
那么,“中国噩梦”究竟对中国和世界的未来意味着什么?许多人非常悲观,更多则选择了放弃思考,因为除了带来焦虑,似乎不可能对这个问题得出任何积极的答案。应该说,这种状态本身就不是好兆头,而正是习近平要对这种状态负责。这是因为,习近平的“中国梦”虽未能赢得人心,但他“定于一尊”的集权梦却成了现实。就压制大陆青年的政治活力而言,习的手段之有效,超过了文革的毛泽东。很难想象,现在的中国会发生类似“李一哲大字报”和“四五运动”那样的政治事件。习对社会的控制虽得益于新技术,但生计环境的不同,也大大改变了知识青年的政治算术。
在这个背景下,90年代以来成长起来的自由派知识分子,多数人用沉默守住了尊严,而真左派也没有借机对往日的对手落井下石。不过,来自青年一代的“校园告密者”不断增多,如此情形不能不令人忧虑,这样的格局能维持多久。继许章润登高一呼之后,郑也夫再度发声:“财产公示,请自常委始”。我不相信,在他呼吁“中共淡出历史”之后,没有遭到当局的压力,但郑也夫还是坚持实践中国知识人的最高境界:“虽千万人,吾往矣!”
敬佩之余,也不禁想到百年来中国知识人实践这种精神为什么会得到如此矛盾的结果:一方面,若没有郑也夫这种人,很难理解中国今天凭什么能实现百年前的“强国梦”,但另一方面,这种精神的实践,并没有能让中国走出“周期律”的诅咒。未来十年的一大挑战就是,习近平的“中国梦”不仅把中国带到了悬崖边,也把世界带到了悬崖边,而在我看来,仅靠知识人的道德勇气,中国并不足以应对这个挑战。
今后一两年,影响未来十年的中国和世界大局的一个关键因素,就是习近平在他的“中国梦”破灭之后,有多大的意志和能力,继续以“同归于尽”来威慑国内外的政治对手。以往,习近平的这个威慑策略帮助他在对内集权和对外扩张方面都获得了相当程度的成功,至少在美国总统特朗普上台之前是如此。2019发生的一大转折,就是特朗普有效地遏止了习以这种策略继续获得政治成功。我认为这一转折给未来十年的中国和世界带来一个机会窗口,因为习近平在香港问题和美中贸易战问题上的退却或游移,说明他意识到了“同归于尽”的威慑策略正在给自己带来太大风险。那么中国是否能抓住这个机会避免一场浩劫呢?我不能判断,不过,我认为中国知识精英的思维方式还需要很大的调整,才有可能激发中国人的想象力,走出今天的险境。

陈破空:《反渗透法》如一面照妖镜 照出台湾人间百态

台湾,执政的民进党在立法院推动《反渗透法》。年底就在即将进入三读之际,却突然遭到在野党和在野政治人物的猛烈攻击。
在野的国民党、亲民党、新党反对这部法律,指称这是台湾“民主倒退”、“人权倒退”,甚至说这是“绿色恐怖”,是台湾版的“麦卡锡主义”。然而,这些台湾政党,这些年却从不批评对岸的中共集团阻挡民主、践踏人权、无所不在的红色恐怖,以及比“麦卡锡主义”更“麦卡锡主义”的文字狱。
国民党总统候选人韩国瑜声言:“民进党为什么要急着推反渗透法?他们知道已失去民心,下一次总统、立委大选也有可能输掉,所以在总统大选前要通过这么敏感的反渗透法。”意思是,蔡英文和民进党力推《反渗透法》是为了选举、为了选票,为了赢得台湾民心。韩国瑜无意间证实,这部《反渗透法》符合台湾民意、民心,正是台湾民众所期盼的。蔡英文和民进党迎合民意、民心,而韩国瑜和国民党却违逆民意、民心,反对或阻挡这一法案,不惜失去选举、失去选票?果如此,或另有所图?
亲民党总统候选人宋楚瑜把《反渗透法》故意扭曲成反两岸交流,假装表示他要“自首”,因为他“在2016和2017年由蔡英文指派去APEC开会,还跟大陆领导人习近平交流”,故而属于“《反渗透法》将来要处置的对象”。宋楚瑜以这种幼稚可笑的方式来表达他对《反渗透法》的反对立场,反而泄露了他的老底。此人在两蒋时代任新闻局长期间表現反共,曾明确表示,“中共不等于中国”,而今却与中共明里往来,暗通款曲,态度暧昧。
前总统马英九认为,“强力通过《反渗透法》的行为是绿色恐怖,甚至远远超过白色恐怖,好像恢复戒严了,好像恢复动员戡乱了。”这个说法不仅夸张,而且把民主化之后的台湾抵御外敌的做法,混同于威权时代台湾的一党专政,着实令人啼笑皆非。
台湾首富、鸿海集团董事长,也是曾谋求总统候选人的郭台铭则放话:“反渗透法比服贸(两岸服贸协定)严重十倍、二十倍”,扬言将率领人马到立法院包围抗议。但,两岸服贸协定来自于对岸,是中共经济上吞并台湾的毒计;而反渗透法是台湾自己立法,捍卫台湾主权和民主制度。两者岂可同日而语?更遑论十倍、二十倍!
事实上,由执政的民进党力推的这部法律,明确针对的是对岸的敌对势力-中国共产党。他们对台湾的渗透,步步深入,步步进逼,以至于肆无忌惮,明目张胆,网络、媒体、商界、宫庙、学校、乡里、政党、政治人物……无所不至,无孔不入。这些年,多元而开放的台湾仿如门户洞开,任匪盗横行。自由台湾在明处,极权中共在暗处,不对称的制度,不对称的力量,不对称的战争,让民主台湾日益置身危险的漩涡,随时面临红色势力的颠覆
而纵观国际,先后有美国、英国、德国、澳大利亚、新西兰、加拿大等国通过类似法案,反渗透,防堵的主要对象,就是共产中国。而台湾与共产中国隔海对峙,处在遭渗透、遭威胁、遭攻击的最前线,对台湾而言,立法反渗透不仅必要,而且紧迫,更甚于他国。
就在《反渗透法》进入台湾立法院三读的关键时刻,对岸的中共集团突然跳脚抗议。中共国台办主任刘结一纠集亲共台商开会,号称“2019全国台协会长座谈会”。会上,刘结一公然动员各地台协和台商反对台湾政府。台企联会会长李政宏当场,攻击台湾《反渗透法》是箝制言论自由。在没有言论自由的中国谈言论自由,不知这位会长有没有边说话边遭打脸的感觉?
台湾部分政党、政治人物、商人反《反渗透法》,其实是自我暴露。正是在刘结一和中共的高调反对下,才有了台湾亲共、亲中人士的纷纷表态。况且,中共素有“打招呼”的党文化,即中共特色的施压手段。那些亲共、亲中的台湾政党和政治人物,也必是在中共要暗中通过各种渠道“打招呼”之后,或自愿,或不自愿;或为表功,或不得已;才纷纷站出来反《反渗透法》。这证明,包括韩国瑜在内的台湾亲共人士最在乎的,已经不是台湾的民意、民心,而是中共的党意、党心;已经不在乎台湾的选票,而更在乎中共的钞票。韩国瑜们明知道自己在台湾输定了,私下在意的便是如何经受或通过对岸“党的考验”,这便是韩国瑜们的另有所图。
穿越围绕《反渗透法》的喧嚣与雾霾,静听台湾总统蔡英文的铿锵之词:“中国自己没有民主,却批评台湾开民主倒车,好像忘了自己连车子都没有。中国自己没有民主选举,一天到晚干预台湾的民主选举,这才是荒谬可笑之处他们用金钱介入我们的选举,用假讯息误导我们的民众,用退伍军人的学长、学弟的关系来收买情报;他们利用台湾言论自由,来替没有言论自由的中国擦脂抹粉;他们利用台湾民主制度,破坏、干预我们的民主制度。

台湾的‘反滲透法’三讀 ,获得通过,違者最重處1000萬元罰金

【三立新聞網】

為防範境外敵對勢力之滲透干預,確保國家安全及社會安定,維護中華民國主權及自由民主憲政秩序,立法院今(31)日三讀通過《反滲透法》。明訂境外敵對勢力及滲透來源定義,並規定若受滲透來源之指示、委託或資助,捐贈政治獻金或公投經費,處5年以下有期徒刑,得併科1千萬元以下罰金。

《反滲透法》全文如下:

第一條
為防範境外敵對勢力之滲透干預,確保國家安全及社會安定,維護中華民國主權及自由民主憲政秩序,特制定本法。

第二條
本法用詞定義如下:
一、境外敵對勢力:指與我國交戰或武力對峙之國家、政治實體或團體。主張採取非和平手段危害我國主權之國家、政治或團體,亦同。
二、滲透來源:
(一)境外敵對勢力之政府及所屬組織、機構或其派遣之人。
(二)境外敵對勢力之政黨或其他訴求政治目的之組織、團體或其派遣之人。
(三)前二目各組織、機構、團體所設立或實質控制之各類組織、機構、團體或其派遣之人。

第三條
任何人不得受滲透來源之指示、委託或資助,捐贈政治獻金,或捐贈經費供從事公民投票案之相關活動。違反前項規定者,處五年以下有期徒刑,得併科新臺幣一千萬元以下罰金。

第四條
任何人不得受滲透來源之指示、委託或資助,為總統副總統選舉罷免法第四十三條或公職人員選舉罷免法第四十五條各款行為。違反前項規定者,處五年以下有期徒刑,得併科新臺幣一千萬元以下罰金。

第五條
任何人不得受滲透來源之指示、委託或資助,進行遊說法第二條所定之遊說行為。違反前項規定者,處新臺幣五十萬元以上五百萬元以下罰鍰。違反第一項規定,就國防、外交及大陸事務涉及國家安全或國家機密進行遊說者,處三年以下有期徒刑,得併科新臺幣五百萬元以下罰金。第二項所定之罰鍰,由遊說法第二十九條規定之機關處罰之。

第六條
任何人受滲透來源之指示、委託或資助,而犯刑法第一百四十九條至第一百五十三條或集會遊行法第三十一條之罪者,加重其刑至二分之一。

第七條
受滲透來源之指示、委託或資助,而犯總統副總統選舉罷免法第五章、公職人員選舉罷免法第五章或公民投票法第五章之罪者,加重其刑至二分之一。

第八條
法人、團體或其他機構違反第三條至第七條規定者,處罰其行為負責人;對該法人、團體或其他機構,並科以各條所定之罰金或處以罰鍰。

第九條
滲透來源從事第三條至第七條之行為,或指示、委託或資助他人從事違反第三條至第七條之行為,依各該條規定處斷之。任何人受滲透來源指示、委託或資助而再轉指示、委託或資助者,亦同。

第十條
犯本法之罪自首或於偵查或審判中自白者,得減輕或免除其刑;自首並因而防止國家安全或利益受到重大危害情事者,免除其刑。

第十一條
各級政府機關知有違反第三條至第九條之情事者,應主動移送或函送檢察機關或司法警察機關偵辦。

第十二條
本法自公布日施行。

民進黨團:是建立基本防衛機制

三讀過後,民進黨立法院黨團也召開記者會,黨團總召柯建銘表示,修法過程中,民進黨思考的絕對不是挑釁、對立,蔡英文有智慧維持兩岸和平與經濟發展。

民進黨立法院黨團幹事長管碧玲則說,《反滲透法》是台灣同胞最大的後盾,在中國大陸進行各種交流有很大後盾,可以婉拒種種不合理的要求。

對於國民黨表示將在三讀後提出釋憲,民進黨立法院黨團書記長李俊俋表示,他不知道哪裡違憲,但他們要提只能尊重。

民進黨立法院黨團幹事長管碧玲說,我們擔心《反滲透法》綁架我們的明年度總預算以及戰機特別預算,因此我們先護送總預算出委員會以及戰機預算通過。我們把選舉放兩邊把台灣放中間走過修法,我們選舉領先下還被抹黑成這樣,我們一路在承擔完成這個修法。

她說,要用選舉語言說民進黨恐嚇台商、抹黑修法,遭受到很不公平的待遇,《反滲透法》是台灣同胞最大的後盾,在中國大陸進行各種交流有很大後盾,可以婉拒種種不合理的要求。她還說,《反滲透法》通過後,退將吳斯懷還有理由婉拒,不必去十月一日的中國大陸國慶。

年代向錢看 川普.習近平貿易戰攻防台灣! 2019北京不好過!台灣/美國是股市匯市大贏家


又一款可以套上一层socks proxy的dns代理程序-anotherproxy

先挂个vpn,然后,
cd $GOPATH
go get -u -v github.com/zeroshirts/anotherproxy/
which anotherproxy
没有显示内容。说明以上的操作还不够,还需:
cd src/github.com/zeroshirts/anotherproxy/
go build
(在当前目录下,会生成可执行文件anotherproxy)
cp anotherproxy /usr/local/bin/
which anotherproxy
显示:
/usr/local/bin/anotherproxy
因此,可以直接运行anotherproxy了。
anotherproxy -h
显示:
Usage of anotherproxy:
  -alsologtostderr
    log to standard error as well as files
  -httpproxy string
    Address:port for local HTTP proxy (default "127.0.0.1:8080")
  -localdns string
    Address:port for local DNS requests (default "127.0.0.1:53")
  -log_backtrace_at value
    when logging hits line file:N, emit a stack trace
  -log_dir string
    If non-empty, write log files in this directory
  -logtostderr
    log to standard error instead of files
  -remotedns string
    Address:port of upstream DNS servers (comma seperated for multiple values) (default "8.8.8.8:53,8.8.4.4:53")
  -socks5 string
    SOCKS5 address:port
  -stderrthreshold value
    logs at or above this threshold go to stderr
  -v value
    log level for V logs
  -vmodule value

     comma-separated list of pattern=N settings for file-filtered logging


所以,
cd ~
sudo anotherproxy -localdns 127.0.0.1:53 -remotedns "8.8.8.8:53,8.8.4.4:53" -socks5 127.0.0.1:1080
(你需先运行一个本地的socks proxy,比如ss客户端)

实际使用例子:
sudo wg-quick up wg0

sudo networksetup -setdnsservers "Wi-Fi" 127.0.0.1
(在运行完wg命令后,等2分钟才运行本命令,方能成功修改本机的dns server地址为127.0.0.1)

sudo anotherproxy -localdns 127.0.0.1:53 -remotedns "8.8.8.8:53,8.8.4.4:53" -socks5 127.0.0.1:1080

项目地址:https://github.com/zeroshirts/anotherproxy


何清涟:2019年中国年度汉字:幻

每到年末,在使用中文的国度,比如日本、台湾等地,人们喜欢用一个字来概括这一年本国的社会生态。从一个旁观者的角度,我觉得用“幻”字来描绘2019年的中国社会生态比较合适。

“中国梦”化成幻影(这得感谢川金毛)
中国梦,是对中共总书记习近平于2012年11月提出的“实现中华民族伟大复兴,就是中华民族近代以来最伟大梦想”的简要概括。据官方解说,“中国梦”的核心目标也可以概括为“两个一百年”的目标,也就是:到2021年中共成立100周年和2049年中共建政100周年时,逐步并最终顺利实现中华民族的伟大复兴,具体表现是国家富强、民族振兴、人民幸福,实施手段是政治、经济、文化、社会、生态文明五位一体建设。
一年多中美贸易战打下来,支撑“中国梦”的经济基础受到沉重打击。这里不提那老百姓吃猪肉难的非洲猪瘟等柴米油盐之事,只提北京最在意的赶超美国战略破产。中国的国家富强、民族振兴、人民幸福,几乎全以赶超战略为轴心。贸易战打到后来,离赶超目标越来越远,正如我在《美国之胜:将中国从进攻逼回防御状态》一文中所说,美国取得三重胜利,而美国之胜就是中国之败。
一是对外扩张成梦幻:“一带一路”所需要的巨大投资难以为继。根据华府智库企业研究所(AEI)开设的一个“中国全球投资追踪”(China Global Investment Tracker,CGIT)项目,根据这个项目的统计2019年上半年,中国全球范围对外投资和建设项目额为275亿美元,较2018年同期锐减约50%。分析称,这种趋势很可能在未来几年不会改变。
二是世界工厂的残梦彻底破碎:全球产业链不再以中国为中心,随着大量专做出口业务的外企迁出。今年上半年,中国失去了全球第一出口大国地位,美国则夺回了全球第一出口大国的位置,中国过去二十年作为全球主要出口国的地位受到了打击。
三是将美国知识产权盗来就用的梦想成幻:在美盗窃知识产权的“千人计划”的偷窃之手被斩断,赶超美国的愿景化成泡影。
对外扩张、世界工厂、知识产权的拿来主义全成梦幻,“两个百年”的中国梦自然也就提前两年化为幻影。

民营企业:廿年富贵一场梦
中国梦化为幻影,那些依靠官场致富、并被选进政协、人大营造“精英共和”的富商、民营企业家的一场富贵,自然也化为梦幻。这几年,中国富商、民企的日子不好过,正如我在《寻找污点将成公私合营2.0版的突破口》(2019年10月1日)一文中所说,中国官方近几年一直在营造舆论,欲将反腐扩张至民营企业,据法律人士介绍,民企涉及的腐败犯罪共包括15个罪名,其中最主要的就是单位行贿罪、职务侵占罪、挪用资金罪、非国家工作人员受贿罪和行贿罪。腾讯、京东、华为、阿里巴巴、腾讯、百度等多家大型民营企业纷纷加入内部反腐的阵营。中国民营企业家积累财富基本依靠在各种灰色地带寻找机会并运营,用行贿、非法经营、逃税等三者入手整治商界,中国当局驾轻就熟。近几年使用的方式主要有两种,一是软禁拘押或采用政治高压,让有政治靠山的超级金融大鳄们将转移至境外的财产转回国内,吴小晖、肖建华、王健林都属于这类情况。二是马云模式,通过各种方式让他们主动交班,将自己的公司“献给国家”。就连香港富豪也在北京压力下纷纷捐地。
整治大民企让中国政府得了不少资金,中国政府食髓知味,今年连续两个大动作:一是国务院于9月12日发布《关于加强和规范事中事后监管的指导意见》,规定在企业及其他机构建立吹哨人制度,鼓励内部人揭露供职机构的违法违规行为;二是公开恫吓,12月3日,最高检察长张军公开声称:“对涉嫌犯罪的民营企业负责人能不捕的不捕,能不诉的不诉,能缓刑的缓刑”,并引用数据证明政府的“宽大”:“今年前10个月,对非国有公司企业人员犯罪不捕率是29%,比总体刑事犯罪高6.9个百分点”。这个中国独创的“犯罪不捕率”,将民营企业家置于准罪犯状态。
江泽民时期的三个代表、让资本家入党,并在中央、省、地县数级政协、人大吸收民营企业营造的精英共和,终成一场梦幻。马云是党的知心小弟,从不言难,2017他说“今天的中国,今天的时代是最佳经商时代”;2018年,马云仍然坚持认为“中国有两个优势,我们国家是世界上最安全的国家,这个国家的经商环境是最好的”。但最近,马云终于承认:“大家都过得很不容易,今年大部分企业都遇上困难,只是开端。”我猜想,就连马云也看到一代人的财富梦将化成烟云。

民间的安慰剂:权力幻觉与环境幻觉
1、权力幻觉集大成:《庆余年》
今年据说中国影视业大萧条,但一部《庆余年》却很卖座。
观看《庆余年》纯粹是因为陈道明参演,开始看觉得纯粹瞎掰,但因觉得陈道明从不接烂片,于是耐着性子看下去,发现作者还真是洞察中国人性的高手,通过“科幻”小说形式让一个在现实生活中的残疾人“回到”或者“去往”一个不同的纪元,成为一个皇帝与游走于神人两界的仙女的私生子,养父是户部尚书兼皇帝的发小(其母是与皇帝很有亲情感的乳母),监察院长(兼中纪委书记与国安部长两种职能)是其母亲的铁杆粉丝与朋友。仙女母亲是经商天才,留下了巨额财富,加上“天脉者”的遗传基因,两世为人的借诗便利,这种比《鹿鼎记》主角韦小宝高贵的出身,比韦小宝要牛N倍的天赋,自然是要风得风、要雨得雨,凡女子不管出身贵贱,不论能力高低,人见人爱。这种身兼仙侠人物的神奇存在,亦正亦邪,有点坏坏的潇洒,远比西方只能做好人好事的“超人”更吸引中国人。一句话,《庆余年》里塑造的范闲,是集朝廷之权力、江湖之神秘、宫斗剧、武侠小说兼影视的权力幻觉集大成者。
塑造出范闲这个人物有社会根源,中国是个身份型社会,一个人的命运在很大程度上由出身的家庭决定。近十几年来,大学生毕业即失业,社会上升通道严重梗阻。于是制造出一个不是韦小宝、胜过韦小宝的范闲,也算是安慰一下在现实中找不到上升通道的社会中下层。
2、污染国度的环境幻觉:李子柒视频
前几年国内尽是环境污染的各种新闻报道:江河湖海尽污染,土地更是被重金属严重污染,最后是雾霾漫天。这两年相关报道少些,当然不是环境改善了多少而是舆论控制。因为对环保稍有了解者都明白,除了雾霾可能因工厂停产、农村改用燃气而非煤炭、柴草等燃料而改善,水与土地不可能短期内改善。
但是,饮用清洁的水,住在干净舒适的环境里是人权的一种。西方国家早就将环境权列入基本人权之一,这对中国人而言当然是种奢望。而随着中国当局对NGO的打压,大量环保NGO在中国消失,再加上环保部门的行业腐败不断曝光,中国人似乎离环境权的距离更显遥远。李子柒的田园生活视频一下走红网络,还出现了“柒军”这种规模不小的粉丝团。他们不在意李子柒是营造幻象,只在意视频为他们营造了一片虚幻美景。更有一位叫做DDC @Iang0606认为,“李所呈现出来的生活需要和平、自由、富足、勤劳、人与自然和谐共处,体现了普世价值”——西方国家的环境权要的是实体环境的美好,而这位推友独特的理解为普世价值在中国的普及,开辟了一条通道:网上虚构即可,现实全无也行。中国民主化遥遥无期,不妨在网上做场全民投票,选出国家元首,等于现实中实现了民主。
对中国人而言,用“幻”字作为2019年的年度字有点无情但却真实:中国梦化作幻影,财富梦日渐虚幻,在权力幻觉与环境幻觉支撑下,人们进入2020年。
--------

所以,这种流氓国家真不是人待的地方,还是趁早离开的好。

Monday, 30 December 2019

generate-CA.sh, 生成ca的脚本

https://github.com/owntracks/tools/blob/master/TLS/generate-CA.sh

wget https://github.com/owntracks/tools/raw/master/TLS/generate-CA.sh
-------------

wget https://github.com/TommyStarK/easy_nginx/raw/master/generate_tls_certificate.sh

from https://github.com/TommyStarK/easy_nginx/blob/master/generate_tls_certificate.sh
--------------------

https://github.com/mattbodholdt/OpenSSLCA

树莓派安装Mosquitto,轻量级MQTT Broker ,连接各种物联网设备

Mosquitto 是一個開放原始碼 MQTT broker,安裝於樹莓派中就可以把所有的感測器、運算與控制設備連結起來,打造一個整合性的物聯網架構。
在物聯網的應用中,有許多的感測器會產生各種的資料,這些資料可能會傳送至資料庫中儲存、交給運算伺服器分析、或是直接傳遞至使用者端即時顯示,而物聯網中的各種設備也需要接收來自於使用者或自動控制程式程式的指令,進行各種智慧化的動作,要讓整個物聯網環境具備互相溝通的能力,就需要有一個資訊傳遞的機制。
MQTT 是一種 machine-to-machine(M2M) 的輕量級通訊協定,可以讓各種設備互相溝通,而其所需要的運算與傳輸頻寬很低,非常適合用於物聯網中的各種應用。
在 MQTT 的通訊架構之下,會有一台設備專門負責所有訊息的派送工作,這個角色就稱為 broker,所有的訊息在傳遞時都會經過 broker,由 broker 來負責處理每一則訊息該如何遞送。

MQTT 通讯协定与物联网IOT 应用整合概念
MQTT broker的实作有非常多种,例如ActiveMQ ApolloHiveMQMoscaMosquittoRabbitMQ等,基本上来说不管使用那一个实作版本都可以,功能上不会差太多。
这里我们以树莓派的Linux环境为例,介绍Mosquitto这一个MQTT实作版本的安装与使用方式,也就是把树莓派打造成一个MQTT broker的角色,负责所有物联网设备之间的相互沟通。
名称:Mosquitto
描述:开放原始码MQTT Broker
网址:Mosquitto官方网站

安装Mosquitto

在树莓派的Raspbian Linux中我们可以使用apt直接安装mosquitto套件,同时也顺便安装mosquitto-clients这个MQTT clients的套件,方便测试:
apt-get install mosquitto mosquitto-clients
正常来说,安装完成后mosquitto服务会自动启动,我们可以使用service指令检查一下mosquitto服务的状态:
service mosquitto status
服务的状态呈现绿色的active就表示Mosquitto有在正常运作,接着就可以开始使用MQTT Broker的功能了。

使用Mosquitto MQTT Broker

在MQTT 的架构中,设备可分为三种:
  • Publisher:发送讯息者。
  • Subscriber:接收讯息者。
  • Broker:转送讯息者。
而不同的讯息可能会需要传递给不同的接收者,所以讯息在发送的时候,发送者(publisher)必须标示这则讯息的主题(topic),而转送讯息者(broker)则会依照这则讯息的主题,将讯息传递给有订阅该主题的接收者(subscriber),这就是MQTT 基本的讯息传递架构。
在物联网的应用中,一个设备可以是讯息的接收者,接收从其他设备发送过来的讯息,同时也可以讯息的发布者,发送讯息给其他设备。
了解这个MQTT的基本架构之后,我们可以开启一个虚拟终端机视窗,使用mosquitto_sub指令来订阅指定的主题,也就是成为一个讯息的接收者:
mosquitto_sub -t gtwang/test
这里的-t参数就是指定要订阅的主题(topic),而后面的gtwang/test就是主题的名称。
MQTT 的主题在使用时不需要事先设定,直接在发布或订阅时指定自己要的主题名称即可。
MQTT中的主题名称类似一般的档案系统,是采用阶层的方式命名,我们可以自己决定命名的规则,要使用几层都可以,善用有条理的命名方式可以让讯息更好管理,例如sensors/COMPUTER_NAME/temperature/HARDDRIVE_NAME这样就是一个不错的命名方式。
接着再开启另外一个虚拟终端机视窗,作为讯息的发送者,使用mosquitto_pub将讯息发送至gtwang/test这个主题:
mosquitto_pub -t gtwang/test -m  " Hello, world! "
这里的-m参数就是指定要送出的讯息内容,执行这行指令之后,就会将讯息传送至broker,在由broker将讯息送给gtwang/test主题的订阅者,也就是另外一个虚拟终端机视窗,所以这时候就可以在另外一个视窗中看到这行讯息。
以上就是基本MQTT讯息传递的传送方式。

订阅多个主题

MQTT 的主题设计成阶层式的架构,主要是为了可以支援比较复杂的订阅规则,最简单的主题订阅方式就是直接指定完整的主题名称,例如:
sensors/my_computer/temperature/my_hd
除了这种方式之外,我们可以利用加号+这个万用字元来匹配任意的名称,例如:
sensors/+/temperature/+
这样的话就会接收到所有第一层为sensors而第三层为temperature的讯息。
假设有一个主题名称为a/b/c/d,则以下这几种主题指定方式都可以匹配该主题:
  • a/b/c/d
  • +/b/c/d
  • a/+/c/d
  • a/+/+/d
  • +/+/+/+
但是以下这几种就不会与a/b/c/d批配:
  • a/b/c
  • b/+/c/d
  • +/+/+
另外一种万用字元是井字号#,这个万用字元专门用于结尾处,可以匹配之后所有的阶层,以下几种写法都可以匹配a/b/c/d
  • #
  • a/#
  • a/b/#
  • a/b/c/#
  • +/b/c/#

使用者认证

预设的Mosquitto 服务是允许匿名登入使用的,也就是说任何人都可以透过MQTT 的协定传送与接收资料,若是在封闭的网路环境之下是没有问题,但若是开放性的网路,最好就要上一些安全机制。
最基本的安全机制就是设定登入的帐号密码,只有经过认证的使用者可以透过Mosquitto 服务传送或是接收资料,以下是Mosquitto 设定帐号与密码的步骤。
STEP 1
建立Mosquitto用的帐号密码档案,并新增gtwang这个使用者:
mosquitto_passwd -c /etc/mosquitto/passwd gtwang
执行这行指令后,接着要设定gtwang的密码。
STEP 2
编辑/etc/mosquitto/mosquitto.conf设定档,加入以下设定:
# 设定帐号密码档案
password_file /etc/mosquitto/passwd

#禁止匿名登入 
allow_anonymous false
STEP 3
重新启动mosquitto服务:
service mosquitto restart
STEP 4
以设定好的帐号密码登入,订阅gtwang/test主题:
mosquitto_sub -t gtwang/test -u gtwang -P secret123
以设定好的帐号密码登入,发送讯息至gtwang/test主题:
mosquitto_pub -t gtwang/test -u gtwang -P secret123 -m  " Hello, world! "
设定好使用者认证机制之后,接下来还要设定安全加密连线.

安全加密 TLS 連線

在安全性的考量上,僅僅只有加上帳號密碼是不夠的,至少還要有安全加密的保護,才能達到基本的防禦效果,否則讓帳號與密碼以明碼的方式在網路上傳遞,跟沒有設定帳號密碼是差不多的。
以下是 Mosquitto 設定安全加密 TLS 連線的步驟。
STEP 1
建立一個只有自己能讀取的目錄,隨後我們要在這個目錄中產生伺服器用的金鑰檔案。
mkdir myCA
chmod 700 myCA
cd myCA
STEP 2
產生金鑰的過程可以參考 mosquitto-tls 的 man page,而更快速的方式是使用 generate-CA.sh 這一個已經寫好的指令稿:
wget https://github.com/owntracks/tools/raw/master/TLS/generate-CA.sh
bash generate-CA.sh
執行 generate-CA.sh 之後,會自動產生伺服器用的金鑰。
STEP 3
將金鑰複製到 Mosquitto 的目錄之中:
sudo cp ca.crt /etc/mosquitto/ca_certificates/
sudo cp raspberrypi.crt raspberrypi.key /etc/mosquitto/certs/
STEP 4
重新啟動 Mosquitto 服務:
service mosquitto restart
如果重新啟動 Mosquitto 服務時,/var/log/mosquitto/mosquitto.log 出現這樣的錯誤:
Error: Unable to load server key file "/etc/mosquitto/certs/raspberrypi.key". Check keyfile.
通常是因為檔案權限不足的問題,只要修改一下檔案的擁有者即可:
sudo chown mosquitto /etc/mosquitto/certs/raspberrypi.key
STEP 5
檢查伺服器的金鑰是否正常運作:
mosquitto_sub -t '$SYS/broker/bytes/#' \
  -u gtwang -P secret123 \
  --cafile ca.crt -v
$SYS/broker/bytes/# 這個主題每隔 10 秒會輸出統計資訊,類似這樣:
$SYS/broker/bytes/received 1008
$SYS/broker/bytes/sent 253
$SYS/broker/bytes/received 1092
$SYS/broker/bytes/sent 325
有收到訊息就表示正常。
STEP 6
使用密碼配合 TLS 安全加密,訂閱 gtwang/test 主題:
mosquitto_sub -t gtwang/test -u gtwang -P secret123 \
  --cafile ca.crt
使用密碼配合 TLS 安全加密,發送訊息至 gtwang/test 主題:
mosquitto_pub -t gtwang/test -u gtwang -P secret123 \
  -m "Hello, world!" --cafile ca.crt

連接手機與電腦

在 Mosquitto 的 MQTT broker 伺服器架設好之後,任何支援 MQTT 協定的設備都可以直接連線進來傳送或是接收訊息,這裡我們以一台 Android 手機作為示範,將樹莓派上的訊息傳送至手機,並同時也可以將手機上的訊息傳回樹莓派。
在 Andorid 手機上有非常多 MQTT client 的 app,這次我選擇 IoT MQTT Dashboard 這一款支援加密的 MQTT client app 來做示範,而這個 app 在建立加密連線時需要讀取 BKS 格式的憑證檔案,所以我們要先把自己的 ca.crt 轉為 BKS 檔。
STEP 1
從 bouncycastle.org 下載 bcprov-ext-jdk15on-156.jar
wget http://bouncycastle.org/download/bcprov-ext-jdk15on-156.jar
STEP 2
將 ca.crt 轉換為 BKS 檔:
keytool -importcert -v -trustcacerts -file ca.crt \
  -alias IntermediateCA -keystore android.bks \
  -provider org.bouncycastle.jce.provider.BouncyCastleProvider \
  -providerpath bcprov-ext-jdk15on-156.jar \
  -storetype BKS -storepass mysecret
其中 mysecret 可以換成自己的密碼。
STEP 3
將 轉換好的 BKS 檔 android.bks 複製到 Android 手機上,然後開啟 IoT MQTT Dashboard 進行設定,填入樹莓派的基本資訊(左圖)。
Server 欄位就填入樹莓派的 IP 位址(可用 ifconfig 指令查詢),連接埠(Port)預設是 1883,Username 與 Password 就是剛剛上面新增的Mosquitto 帳號與密碼,將 SSL 打勾之後,並填入剛剛產生的 BKS 檔,還有 BKS 檔的密碼.
Android 手機 MQTT Dashboard
設定好 MQTT 伺服器之後,新增一個 Subscribe 設定,也就是訂閱一個主題,這裡我以 gtwang/test 這個主題做示範。
STEP 4
在樹莓派中執行以下指令,送出兩則測試訊息。
mosquitto_pub -t gtwang/test -u gtwang -P secret123 \
  -m "Hello, world!" --cafile ca.crt
mosquitto_pub -t gtwang/test -u gtwang -P secret123 \
  -m "This is a test." --cafile ca.crt
STEP 5
查看 Android 手機上的 MQTT Dashboard 訊息,正常的話這樣就可以收到從樹莓派發送出來的兩則訊息了。
STEP 6
讓 Android 手機發布訊息至樹莓派中,在 MQTT Dashboard 中新增一個 Publish 設定,發送訊息至 gtwang/test 主題。
這時候在樹莓派中就可以使用 Mosquitto 的 client 接收這個來自於 Android 手機的訊息:
Mosquitto client
這裡我們是將 Android 手機發送的訊息也送進 gtwang/test 主題中,而 Android 手機本身也是這個主題的訊息訂閱者,所以自己也會收到這則訊息,如果不想讓自己也收到訊息的話,可以更換訊息的主題(例如 gtwang/test2),要如何設計訊息的主題就要看實際的需求而定。
基本上不管訊息要從哪個設備發送,以及從哪個設備接收,只要依循 MQTT 的協定、設定好訊息主題,任何設備都可以非常容易地互相溝通,因此 MQTT 在物聯網的應用上可以說是相當有發展性的技術。