Normal view

There are new articles available, click to refresh the page.
Before yesterdayMain stream

新闻自由度低且审查严格 中国培训肯尼亚记者引争议

17 December 2024 at 02:18

中国作为新闻审查最严格的国家之一,却由官方培训外国记者,在新闻倡导者的眼中备具讽刺意味。美国之音周一报道,近期,中国驻肯尼亚大使馆邀请当地大约70名记者和编辑参加培训,并称目的是促进新闻专业度与诚信。

中国驻肯尼亚公使衔参赞张执中开幕致词时表示,新闻工作者是引领个国家或民族走向正确方向的关键。

本台此前报道显示,中国不是第一次以培训之名,让非洲国家的记者撰写有利于中国的文章。国际人权组织自由之家(Freedom House)2022年末公布的《北京的全球媒体影响力》报告指出,中国政府2019年以来便积极扩张对于各国媒体的影响力。

美国国家民主基金会研究员乌梅杰伊(Emeka Umejei)曾告诉本台,中国的新闻媒体以及中国驻非洲各使馆与非洲的新闻媒体时常有密切合作,这使有利于中国的讯息更容易在非洲传播。此外,中国还帮助非洲建立一万个卫星电视节目接受项目,使得农村地区也能接收相关内容。

乌梅杰伊认为,非洲国家必须意识到中国对非洲媒体的渗透,才能提高警觉对抗中国政府的宣传。

不过,肯尼亚国家广播公司总编辑马伊纳(Simon Maina)告诉美国之音,由于资源有限,他们无法避免地将接受中国政府的赞助,但这不意味着编辑决策会受到影响或被干涉。据国际新闻工作者联合会(International Federation of Journalists)2021年的报告指出,中国政府针对非洲等发展中国家记者,是因为中国在这些国家拥有深厚的经济利益。四分之三的非洲受访者认为,他们与中国实体的合作是积极的,尤其是在媒体基础设施不足的地方。

责编:梒青 网编: 洪伟

© 法新社资料图片

新闻记者在肯尼亚内罗毕的国家媒体集团编辑部工作

【重温】“与党国斗,与权贵斗,其乐无穷”——2021年度人物:编程随想

15 December 2024 at 08:32

CDT编者按:本文最初发表于2021年12月,当时编程随想已消失半年。很长一段时间内,互联网上没有关于这位传奇反共技术博主下落的任何确切消息,直至2023年3月下旬,网络上开始流传一份刑事判决书,其中虽只字未提“编程随想”的博客名,但指控被告人阮晓寰在2009年6月至2021年5月期间,“编写百余篇造谣、诽谤的煽动性文章,内容涉及攻击我国现行政治体制、煽动颠覆国家政权、意图推翻社会主义制度,并通过境外网络平台予以发布,造成大量网民浏览、评论、转发、效仿等恶劣后果。” 熟悉编程随想的网友猜测,阮晓寰就是编程随想的真实身份。判决书显示,阮晓寰1977年出生于福建泉州,于2021年5月10日遭上海市杨浦区公安局抓捕并被刑事拘留,6月17日被上海市检察院第二分院批准逮捕。2023年2月10日,他被上海市第二中级人民法院以“煽动颠覆国家政权罪”判处有期徒刑七年,没收财产人民币两万元。

阮晓寰与妻子贝震颖同为华东理工大学化学专业学生,酷爱计算机的阮晓寰后来放弃大学文凭,从事了喜欢的网络技术工作,并担任2008年北京奥运会信息安全总工程师。而贝震颖在媒体采访中表示,她是在丈夫被捕一年多后,才辗转获知“编程随想”即是她的丈夫阮晓寰,“因为从拘捕到判刑,全过程完全是暗箱操作。”

今年4月在一次采访中谈及阮晓寰,贝震颖说:“贫瘠的土壤上,长出来的就是这样的政治现状。你得先种草,把土壤养肥,接着才能种庄稼,一步步土壤肥力上去了,才能种出更好的东西。阮晓寰做的就是这个事情。”

12月13日,上海高院二审维持原判。贝震颖表示,开庭全过程仅持续七分钟。

file
file
file
file
file

file

以下为中国数字时代《“与党国斗,与权贵斗,其乐无穷”——2021年度人物:编程随想》全文。


从2021年5月9日起,知名反共技术博主[编程随想](https://chinadigitaltimes.net/space/%E7%BC%96%E7%A8%8B%E9%9A%8F%E6%83%B3 "编程随想")突然不告而别,就此销声匿迹,到今天已经长达大半年时间。他失踪的消息曾经震动了中国的泛自由主义圈,一些热心读者、号称知情的博主和海外中文媒体都曾提出各种关于他下落的假说,其已经遭到中共秘密抓捕的传言也一度十分流行,虽然这些说法都未得到证实,但也许所有人都不得不接受的一个现实就是:编程随想已经永远离开了我们。

一、编程随想的消失,众说纷纭的下落

直到最后都没有人知道他是谁。他博客上的头像一直是一张罗丹的雕塑作品“思想者”图片,读者从他浩瀚的博文中透露的只言片语知晓:他是一名身在大陆的程序员,从事信息安全领域的工作十年以上,职位高至管理层。由于编程随想非常注意网络安全,从不留下任何可供追查到其身份的线索,这点信息也不一定绝对真实,但凭借他展现出来的对网络安全、编程和软件开发技术的精通,以及对企业管理等知识的关注,都是符合这个粗略的身份定位的。

编程随想自2009年1月15日在BlogSpot上开启了“编程随想的博客”起,直到2021年5月9日失踪,共发表了712篇博文,他在目录上把文章按内容分为了六大类:“提升思维能力、普及政治常识、扫盲翻墙姿势、揭露党国嘴脸、网络安全教程、软件开发技术”。

12年来,编程随想独树一帜,将反抗极权、颠覆党国作为自己的终身使命而写作,他用“授人以渔”的方式去自我赋权、启蒙大众,既为读者提供了技术上的武装,又提供了思想上的武装。他的文章的工具性和实用性很强,内容涉猎广泛,除了有网络安全技术、翻墙技术方面的知识,还有大量政治常识普及,政治和历史批评,以及围绕自主学习、独立思考和批判性思维的公民教育,心理学知识讲解,书评和读书笔记,和时事新闻的转载、总结和点评;除此之外,他运营着一个很有名的GitHub开源项目《太子党关系网络》,致力于搜集和揭露历代中共权贵阶层的裙带关系。

他的行文颇符合一个程序员的风格:通俗风趣,言简意赅,深入浅出,且条理清晰,注重逻辑上的前因后果,非常系统化,使人读后切实感觉收获了知识和力量。他频繁活动了12年却未被中共抓捕的壮举,激励了无数追求民主和自由的有志之士。在编程随想的博客的读者心目中,他是一个传奇,被称为“墙内技术反共第一奇人”、“翻墙教父”,享有和阿桑奇、斯诺登等人齐名的江湖地位,还有很多人将他想象成经典反极权影片《V字仇杀队》里的V的形象。

cdtimg

电影《V字仇杀队》

编程随想曾在遭遇网络攻击之后,在一篇博文中与读者约定了最长2周的“静默期”期限。为了降低被摸清活动规律的风险,他会尽量使自己上线的时间“随机化”,例如在博客上设置批量回复留言的机制,这可以让他先离线写好一批回复,然后在短时间内集中发出,以便降低自己的在线活动时间。他说:“有时候俺会连续多天没有上线,只要不超过2周,大伙儿无需担心。”但是如果他静默的时间超过2周,大致会有几种可能:

  1. 【肉身暴露】,被跨省了;或者遭到了【深度入侵】,导致所有帐号被盗。
  2. 现实生活中出现了某种意外,导致俺死亡(比如:出车祸)。
  3. 现实生活中出现了某种意外,导致俺丧失活动能力(比如:重病住院,长时间昏迷)。
  4. 由于外部环境的限制导致俺无法安全地上网(比如:在外旅游期间,笔记本被盗或损坏)。

他还指导过读者如何判断这几种情况:如果静默时间超过2周,博客和相关账号也被关闭了,那他无疑是被跨省抓捕。如果2周后账号恢复了活动,但是做事和行文风格出现“显著变化”,也说明他可能被抓捕,相关账号已经被“朝廷方面”控制。但如果静默超过2周后,长时间(比如一年之上)没有恢复活动,那要么是他被抓捕后,朝廷方面没能拿到他的加密盘的密码和key file,所以无法控制相关账号,要么就是他意外死亡。

因此,在今年5月底,编程随想发表了最后一篇分享电子书的博文后,意外超过了2周静默期未活动,他失踪的消息便迅速传开。署名为“co-memory”的作者在多位编程随想读者的启发和协助下写了一篇文章《被捕、病逝、主动静默,编程随想停更事件长文分析》表示,虽然早期的时候社交媒体上有一波“内线爆料”,例如反共推友@墙国蛙蛤蛤@Sapphire、YouTube主播江峰时刻悉尼奶爸等都表示通过自己渠道核实编程随想已被逮捕。在这些“内线爆料”的基础上,几家境外中文媒体作了跟进报道,从而让这个说法得到大量传播。但是,由于这些“内线爆料”毫无细节,且编程随想的博客和其他账号始终未关闭,他的巨大影响力仍在,因此被捕一说站不住脚。

随后co-memory提到,在编程随想最后的博文的留言区,有所谓知情人的爆料编程随想的真实身份是曾经的“中央警卫局信息技术员”,在2011年因病退休,于今年5月11日在北京三医院因为癌症而病逝。这则爆料的细节比较多,且co-memory认为,编程随想是“退休老干部”的假说解释了什么他有那么多时间去阅读和搜集资料,且编程随想最后半年博文数量和原创度下降的事实支持了他于2020年12月-2021年5月健康状况恶化的假设,因此他更倾向于相信这个说法。但他也坦言无法排除编程随想是在面临重大安全威胁后选择暂时或永久静默。

cdtimg

一位网友甚至祈祷:“我希望编程随想只是被车撞了住院了之类。” 对于很多读者来说,情感上宁愿相信他是病逝、出车祸,也不愿接受他落入敌手的可能性,这是在维护他所代表的反抗者的尊严,和反抗的希望。

现在看来,编程随想成功保持了密不透风的匿名,直到逝去之时也未能以真实的名字和身份与世人相见,这已经凸显了这个人物在极权时代的非常处境、他的强大能动性和独特意义。早在2014年,中国数字时代创始人萧强就曾经推举编程随想为2014年中国互联网的“英雄”:

“随想君能数年如一日和国家机器做这样的周旋,当然让人信服其技术能力。但我更加钦佩的,是他在其言行背后的巨大勇气。因为这样匿名的抵抗形式,绝对不比实名的风险来得更小。透过技术手段保护自己,同时又采用固定网名,发表大量专制者决不能容忍的信息的做法,等于是在观念和技术两个层次上,同时对专制者的权威,做出了公开的挑战和嘲弄。这是中国的专制者绝不能容忍的。作者真实身份一旦被拥有巨大技术资源的专制机构发现,遭到的惩罚可能比起实名的挑战者更加严重。因为公众不知道作者的实名,专制者可以使用最卑鄙阴暗的手段。随想君是一个思想者,尽管“艺高人胆大”,也不会不懂自己这样做巨大的风险所在。他能够一直坚持犀利的写作,一定在明了风险的前提下,对自己选择的所言所行,有为信念而承担的决心。”

二、“编程随想的博客”诞生与变迁

2009年1月15日,编程随想开博并发表了第一篇文章《博客开张及本博客内容简介》,只有短短的十几行字,说明自己的博客主要是分享软件开发的技术和经验。对于开始写博客的动机,他曾经用“马斯洛”的需求层次来解释,称是在追究最高层级的“人生意义”。他说自己是典型的工作狂,在开博客之前,自己的精力主要花在事业上,后来觉得花在公司事务上的精力再多,主要受益人不过是公司的老板,这样的事算不上是“有意义”的,所以他才考虑搞个技术博客,这样至少可以帮助到IT界的同行。

编程随想曾坦言开博之时并没有准备在博客中抨击时政,但后来发生的很多事改变了他的看法。2009年6月11日,在开博不到半年后,编程随想的博客迎来了决定性的转折,他发表了第一篇“政治类”博文《是该写点技术以外的东西了》,文中讲了当时触动他做出改变的三件事,都发生在当年的六月四日前后:

第一,编程随想的博客所在的网站BlogSpot被墙了,而他的博客被殃及池鱼,这件事促使他开始写翻墙教程,后来持续很多年,大量读者都是因为找翻墙工具而来到了编程随想的博客。

第二,一批知名且非常有人气的国外网站被批量封杀,包括Twitter.com、Live.com、Bing.com、Flickr.com,而且在同一时期国内的很多站点也开始“和谐”操作,这让他觉得“很不爽。”

第三件事也是对他冲击最大的,当时工信部出台了《关于计算机预装绿色上网过滤软件的通知》,要求所有电脑在出售前预装“[绿坝](https://zh.wikipedia.org/wiki/綠壩·花季護航 "绿坝")”监控与过滤软件。(后来由于遭到大量反对,工信部的“绿坝”计划夭折。)

cdtimg

绿坝”软件界面。图片来自网络

编程随想说看到新闻后第一反应就是《1984》里面的那句名言:“老大哥在看着你。”他大受震撼,质问到:“如果真的到了这一天,那大伙儿还有什么自由可言?还有什么人权可言?”随后他引用了德国牧师马丁.尼莫拉的经典诗句“期初他们追杀共产党,我没有说话……”来表达自己决定采取行动的迫切心情。

“俺不想再保持沉默,不想再回避这些问题了,是该写点技术以外的东西了!”他在文章的最后感叹道。

内容的转型给编程随想的博客带来了很多变化。在编程随想最开始撰写技术类文章的时候,就受到了国内最有名的程序员网站CSDN上的一位知名博主的关注,他邀请编程随想在CSDN上开设“镜像博客”,还推荐了他的镜像博客上了CSDN的首页。编程随想对此感到很荣幸,在十年之后的博客大事记里,也不忘提起这件事,并表示对这位博主的感谢,但是2009年以后,随着编程随想写的敏感博文越来越多,CSDN的镜像博客也很少更新了。又过了很多年,有热心读者提醒编程随想,CSDN上的镜像博客已经没了。编程随想猜测,网站是迫于“真理部”的压力而删除了他的镜像博客。

为了给更多墙内的人提供翻墙教程和翻墙工具,并让他们能阅读到自己的博客内容,编程随想十多年来辗转使用了多个平台,也随着互联网的发展经历了这些平台的兴衰:

2009年他使用微软的Live Space镜像了自己的博客服务于墙内读者;2010年开通Google Code分享翻墙工具;接着他开始使用微软网盘、甚至用Gmail和雅虎的“自动回复邮件”的方式分享翻墙教程。2013年编程随想的博客开通邮件订阅,使得很多读者不需要翻墙便能阅读他的博客;同年他开始使用Dropbox网盘分享电子书;2014年他开始提供“博客全站打包下载”,并且在2015年开始使用更安全和没有流量和大小限制的BT Sync网盘,实现了博客的离线浏览。2015年他的GitHub账号上线,并在2016年将《太子党关系网络》的数据开源道了GitHub……

这些平台其中有一些半路终止了服务,另一些因为各种原因封禁了他的账号,还有一些因为功能和安全问题被弃用。在互联网上漂泊的岁月里,他凭借着过硬的技术知识和大量耐心的搬运劳动,始终保持着他的绝大部分内容的完整以及可得。

三、走上“煽动颠覆国家政权”之路

《是该写点技术以外的东西了》这篇文章以后,编程随想开始写政治博文,但数量并不多。直到一年半之后,又发生了“钱云会事件”和“茉莉花革命”,特别是在2011年2月份左右的“茉莉花革命”期间,编程随想变得更加激进,并开启了他“煽动颠覆国家政权”性质的写作,他博客的敏感度从此也上了一个新的台阶。用他自己的话来说:“如果你写的文章仅仅指出政府有哪些缺点,这个属于‘批评性质’;但是你不光指出缺点,还号召大伙儿推翻政府,那就属于’煽颠’”。编程随想觉得自己之前写作的政治类博文,多停留在“批评”的范畴,敏感度并不高。但是在“茉莉花革命”的高度敏感时期,他在10天之内连续发表4篇博文,其内容足以定性为“煽颠”性质。

cdtimg

北京的茉莉花集会。图片来自维基百科“中国茉莉花活动”

2010年末到2011年初,突尼斯爆发茉莉花革命,之后反政府示威浪潮迅速扩散,北非和中东多个国家掀起了“阿拉伯之春”民主运动,很多独裁政权被推翻。受到突尼斯茉莉花革命的感召,中国的“茉莉花革命”起源于匿名人士的在网上的呼吁,之后博迅网公布了中国茉莉花革命的各大城市集会地点,消息开始在互联网上流传。中国政府对此反应过度,派出大批警察和便衣驻守在集会地点,并于集会前夕抓捕了上百名活动人士。但集会当天,除了北京集会现场有数百人聚集——包括大量警察、便衣和记者,其他城市并无太大动静。

编程随想在自己的博客上发表了第二次和第三次“茉莉花集会”的相关信息,撰写了参加集会的注意事项,并发布了网上搜罗来的集会现场照片,这给他的博客带来了猛涨的流量。值得一提的是,他在博文中提到“俺自个儿的照片还是不放上来比较保险,”暗示了他也曾亲自去到集会现场。

cdtimg

上海茉莉花集会现场,人民广场的和平影都门口,警察催促路人走起来。图片来自编程随想的博客。

集会之后,编程随想第一次收到了Gmail的警告——“政府资助的攻击者正试图入侵你的账号”,这说明自己被“御用骇客”盯上了,这让他颇有一种“受宠若惊”的感觉,也更有了写下去的动力。

在“茉莉花革命”的话题之后,编程随想的博客便从“技术类”全面转向了以政治内容为主。从此以后,他开始更加积极地进行着反抗极权的学习和实践。不满于党国政治现状的他,有着自己简单明了的抗争哲学,那就是去启蒙更多的普通人,为他们的反抗赋权——“天朝是无法长久维持现状的,政治变革必然会发生。至于会在何时,以何种方式发生,谁也说不准。但至少有一点是肯定的:如果有越多的网民提升【政治素质】和【心理素质】,那么变革就越容易发生。所以最近两年来,俺尽量多写这方面的博文,帮助更多的人摆脱洗脑。”

四、“抹黑”党国、启蒙大众——既“破”又“立”的抗争哲学

开始聚焦于政治内容后,编程随想一方面致力于揭露党国的腐败、黑暗现实,一方面传授给读者各种有助于提升个人能力的知识和工具。他认为互联网的迅速发展为中国的变革带来了“千载难逢的机会”,如果一个人能善用互联网的力量,便能在最大程度上保护自己、同时扩大影响力。因此,编程随想以自己为例子,相信每个普通人都能以类似的方式去唤醒更多的人,进而推动国家发生变革,这就是他“授人以渔”的意义。

他撰写了系列文章《谈革命》,系统地论述了自己对于如何改变中国的见解。在文章中,编程随想反驳了“中国人的素质低,不适合民主”的“素质决定论”,认为“通过政治变革获得新制度”和“提高民众的素质”二者应该同时进行,相辅相成,形成良性循环。而人们所寄望的“自上而下”的政治“改良”是不可行的,因为中国权贵阶层利用“党领导一切“的垄断性权力为自己捞取海量经济利益,他们长期监守自盗,不可能进行真正损害到自己利益的改良;能够促进实质性改变的道路是去推动“自下而上”、民众广泛参与的“革命”。在这个基础上,编程随想并不看好“暴力革命”的方式,认为及早推动非暴力革命,改变一党专政的局面,对民众来说是目前最理想的途径。更难得的是,编程随想还在《对党斗争的策略——如何自我保护,避免无谓牺牲》的章节里为普通人提出了一些具体的实践建议。

在揭露党国腐败的方面,编程随想最有名的一个内容输出,非《太子党关系网络》莫属。早在2011年底,编程随想便发表了关于这个项目的第一篇内容:“太子党关系网络1.0版本”。他称其受到了《纽约时报》所曝光的温家宝及其亲属的家族财富所启发,开始制作一个“包括所有权贵的关系图”,为此投入了自己所有的业余时间,制作出了一张PDF图。

编程随想介绍:“这里面汇总了天朝权贵的血缘关系和职务说明。时间上包括了第一代到第四代的官员;范围上涵盖了政界、军界、商界;还包括一些太子党扎堆的公司。这些信息都是网络上找来的,为了尽量增加可信度,俺主要依靠维基百科和百度百科,再加上其它一些官方网站的交叉验证。”他还号召网友群策群力,帮助他收集信息,曝光更多的“权贵分子”。

cdtimg

《太子党关系网络》曝光的习近平家族

后来,《太子党关系网络》与时俱进,名单不断丰富,目前的版本包含了700多个权贵,130多个权贵家族,习近平在内的第五代高官们也都榜上有名。2016年2月,为了方便更多人的参与和写作,《太子党关系网络》开源到了GitHub,并命名为“zhao”项目,取自于“赵家人”的“赵”的发音。截至目前,此项目在GitHub上已经有“9k stars”(表示有9000多人点赞了这个项目),还有“2.3k forks”(表示有2300多人试图参与改进),说明此项目受到了大量关注。

除了曝光权贵阶层之外,编程随想还撰写了大量他戏称为“抹黑党国”的文章。《看看全国人大代表都是些什么货色——兼议“议会道路的改良”行不通》通过“人肉搜索”人大代表的名单和身份,揭露了中共权贵阶层如何操纵全国人大。他也通过广泛的阅读,写出《为什么马克思是错的——全面批判马列主义的知名著作导读》从经济学的角度彻底批判被中国共产党所利用的“马克思主义”意识形态;并在文章《人类自由的三大死敌——谈谈“共产运动、纳粹主义、政教合一”的共性》里一针见血地指出极权统治的本质。他同样热衷于批判历史,去推翻被中共所主导的叙事,《谈谈三年大饥荒》系列文章旨在戳破关于“自然灾害”的谎言,帮助网友了解那段被掩盖的悲惨历史。在他至今尚未完成的《回顾“六四”》系列里,他用三十多篇文章的篇幅,详细地讲述和讨论了“六四”的时代背景和各种事件,并以《太上皇邓小平的阴暗面》等文章揭露了邓小平和其家族的腐败,以此说明其采取的“经济上改革,政治上保守”的路线如何决定了中国在文革后的政治走势。

cdtimg

编程随想的博客里贴出的六四历史照片

此外,为戳破中共宣传机构粉饰、歪曲历史的谎言,他还撰写了很多反宣传、反洗脑的文章:《谈谈真理部对朝鲜战争的忽悠》《谈谈真理部对抗战历史的篡改》、《谁是最可恨的人?——写给仇日愤青们》……更别提他十二年如一日,一直在积极转载、总结和点评各种公共话题、时事新闻,与网友保持联系和互动,以一己之力创造和维护了一个坚定的中国异议者与反抗者的社群,这在今天的中国愈演愈烈的言论审查高压下,尤其显得难能可贵。在他消失之前,他关注的话题包括:医患矛盾、新疆棉花、武汉疫情、香港反送中运动、中美对抗、米兔运动、996工作制……

编程随想心系革命,则为之计深远。他的革命理论是系统的,表现在既注重“破”,又注重“立”——只是“抹黑党国”还不够,同样重要的是帮助更多网友提高个人的能力和素质,因为他相信觉醒的大众在变革中不可或缺的作用。

编程随想在其《谈革命》系列的文章《政治变革需要哪些素质》里称,在一个独裁政权统治的国家,人们要推动政治变革,最重要的就是心理素质,其次是政治素质,而道德素质并不是关键因素。

他所强调的“好的心理素质”,包括:“愿意独立思考“、”具备基本的批判性思维能力”、“了解常见的思维误区”、“了解常见的逻辑谬误”几个方面。之所以强调心理素质的重要性,是因为编程随想认为共产党的极权统治正是建立在民众蒙昧的心智之上:

“在当今天朝,屁民的生活压力在持续上升(没钱买房、没钱看病、没钱养老…),生活质量在持续下降(食品有毒、药品有毒、空气有毒…);与之鲜明对比的是:朝廷官僚的腐败变本加厉,权贵阶层的生活日渐奢华。如此糟糕的社会现状,为啥我党还能继续维持它的统治捏?最主要的一点就是靠愚民宣传。”

他相信,一旦大多数民众不再被党国忽悠,党的统治基础就会开始动摇。所以要提升民众的素质,首先得提升心理素质。

看重“心理素质”塑造的编程随想,撰写了很多分类为“心理学”、“洗脑与反洗脑”类的知识普及,尤其是针对中国人一些容易被极权利用的心理和思维弱点,他写了《天朝民众的心理分析:圣君情结》《天朝民众的心理分析:斯德哥尔摩综合症》《各种’一元化‘思维谬误——从“星座理论”到“共产主义社会”》、《扫盲逻辑谬误——以五毛言论为反面教材》等文章。

其次,他也很看重民众的“政治素质”。第一是“政治常识”:人们至少能搞清楚基本的政治体制,理清“国家、政体、公民、政府、政党”等概念的含义,明白“人民”和“公民”的区别,“人权”和“民权”的区别等等。他为此撰写了很多政治扫盲文章,例如《扫盲常见的政治体制》《聊聊天朝的政治体制》《政治常识扫盲:澄清’言论自由‘的各种误区》等等。

第二是要有明确的“政治立场”,比如说是信奉社会主义还是信奉资本主义,或者是更认可它们衍生出来的各种小流派。因为“如果民众缺乏清晰的政治立场,就无法形成明确的政治诉求——这当然对推动政治变革不利。”另外,如果对其他的政治立场一无所知,一旦发现马克思主义行不通,人们也会陷入茫然的境地。

第三要认清自己的“政治价值观”,也就是一个人认为在政治上看重哪些东西,比如说有人认为“个人”比“国家”重要,或是“自由”比“平等”重要,而另一些人则反之。“政治价值观”也决定了一个人会持有什么样的政治立场。最后,如果立志于更多地参与政治、进行政治讨论和研究,那么了解相关的“政治理论”知识也是很重要的。

因此,为了帮助读者打开眼界,进行比较和借鉴,编程随想也不忘阐述和分析别的国家的政治体制和政治运动,这方面的一些代表博文为:《聊聊美国政体中的权力制衡——不仅仅是三权分立》《美国选举制度为啥这样设计?——兼谈其历史演变》《最“纯正”的共产主义政权——红色高棉简史》《台湾民主运动与独立运动简史》等。

编程随想认为,民众的政治素质对于成功推动革命至关重要,因为革命不仅是推翻旧制度,更重要的是重建新制度。如果广大民众的政治素质不够,就会出现只破不立的局面。再者,如果大多数民众缺乏政治素质,无法有效地监督和参与社会治理,就很可能给某些野心家以可乘之机,导致革命成功之后,再次出现一个新的独裁政权。

五、面对来自当局的骚扰和威胁,选择坚守墙内

编程随想的长期活跃也给他招来了很多威胁。据他的文章记录,2016年两会前夕,在他将《太子党关系网络》开源道GitHub上之后,中国当局借用一个“半官方”的组织“中国网络空间安全协会”针对这个项目的某篇文章向GitHub的网管发去了一份“删除令”,称其平台上的“zhao”项目诽谤中华人民共和国领导人习近平。这是自2014年以来 GitHub公布的史上第6个,也是来自中国的第一个“删除特定项目要求”,此前的5项都来自俄罗斯。之后GitHub对编程随想的“zhao”项目进行了选择性屏蔽,导致墙内的网民无法正常打开这个项目。

cdtimg

GitHub 在中国开启审查。端传媒摄影部/设计图片

这次的删除令由于被GitHub曝光,引发了端传媒等主流媒体的报道,使得这个项目引起了更多人的关注。编程随想因此发表了“获奖感言”,高调庆贺自己戳中了中共的痛点,并且挑衅道:

“俺很清楚:自己老早以前就被六扇门盯上了(2011年发博文鼓吹“茉莉花革命”的时候)。这么多年过去了,六扇门连俺是男是女、姓甚名谁、家住何方都一无所知。这是六扇门的耻辱啊,同志们!网监部门的警察同志们要加倍努力啊,否则你们怎么对得起“远超军费的维稳费用”啊??!!”

2017年5月,因为持续遭到骚扰和攻击,他发表了文章《庆贺本博荣获“更高级别朝廷认证”——谈谈近期的“账号入侵、刷屏、钓鱼”》,记录了近期的异常事件,包括博客被大量重复或无意义的留言恶意刷屏,出现了疑似钓鱼的冒名者,然后是他又收到了Google的警告“检测到由政府支持的攻击者可能正试图盗取您的密码”,这是继2011年的“茉莉花革命”后,编程随想第二次收到Google的类似警告。他于是推测,“这两次入侵企图,都是来自天朝的御用骇客”,区别是上一次主要是因为高敏感度的”茉莉花革命“,而这次是针对“编程随想”本人而来,这也说明他获得了“更高级别的朝廷认证”。

也是在这篇文章里,他详细地和读者交代了“2周静默期”的规律,并和读者约定,如果自己有一天不告而别超过14天,如何去判断他可能的遭遇。

编程随想对自己的网络安全技术自信到近乎“狂妄”,他时不时便对着朝廷“放狠话”,并将“朝廷想抓俺而不可得”当做荣誉。在开博满十周年的2019年,他又写了一篇文章《为啥朝廷总抓不到俺——十年反党活动的安全经验汇总》,详细地把自己方方面面的网络安全经验传授给读者,在“本文的目标读者”一栏里,他写到:

“开博这么多年来,有一个感慨——(在墙内)很多具备政治素质的人,缺乏信息安全的技能,所以他们无法利用互联网与党国斗争。”“虽说墙外已经有很多民运网站,也有很多民运人士开设了社交网络(SNS)帐号。但他们毕竟生活在墙外。天朝的民主化进程,不可能光依靠海外人士,关键还是需要靠咱们这些生活在天朝的民众。所以今天这篇,首先是为了帮助那些【有志于从事反党活动的网民】。”

他的高调作风和越发严峻的政治环境让很多读者为他捏一把汗,面对始终存在,且不断增加的安全风险,编程随想也曾谈到“肉身翻墙”这个选择。他说:

“每当有热心读者担心本人的安危,其中有些人就会提出“肉身翻墙”的建议。(所谓的“肉身翻墙”,不外乎就是“移民、偷渡、政治避难”之类的招数)

俺很感谢他们的关心。但老实说,暂时还不考虑这事儿。之前在博客评论区讨论过此话题,已经聊了很多理由。俺不想把之前的讨论重新贴到这里,会显得太唠叨。此处只简单引用经典影片《V怪客/V字仇杀队》(洋文叫“V for Vendetta”)里面的一句台词(是 Evey 转述她父亲的一句话),大意是:

如果敢于反抗的人都离开了,那他们就赢了。

俺想继续留在这个奇葩的天朝。与党国斗,与权贵斗,其乐无穷 :)”

六、写在最后:纪念他,和这个年代中所有我们拒绝遗忘的人

![cdtimg](https://chinadigitaltimes.net/chinese/files/2021/12/编程随想2.png)

图片来自于网络

编程随想消失之后,co-memory在文章《被捕、病逝、主动静默,编程随想停更事件长文分析》里的最后,提出了4点作为编程随想的支持者可以去做的事情,包括“抵制恐惧、传播编程随想的博客”、“将编程随想的故事拍成电影”、“将编程随想的博客翻译成多国语言介绍给自由世界”,以及建立“联盟式博客群”,延续编程随想所发起的社群,甚至帮助他写完没有完成的系列文章。

在“将编程随想的故事拍成电影”的部分,co-memory将他心目中的传说写了下来:

编程随想的故事就是《V字仇杀队》的中国现实版。编程随想在已知自己身患慢性病,生命不多的岁月里,抓住每一分钟坚持十二年,不止启蒙了上百万人,也揭露了极权政府不过是只纸老虎。编程随想每一步都不出差错,耍得地球上最强大的高科技极权朝廷的鹰犬团团转,每年耗费朝廷维稳经费不知多少亿,最终安全地走到了生命的尽头,留给朝廷一堆可能永远无法破解的迷,给六扇门留下一个永远无法报复的天大的嘲讽。而这一切都是在上百万说中文的读者的共同见证之下真实发生的,是数百万人内心深处不可告人的共同记忆。”

2021年就要过去了,感谢中国数字时代的读者阅读完我们《年终专题》的最后一篇文章。最后,我们想以创始人萧强在2014年为编程随想写的一段话纪念他,和这个年代中所有我们拒绝遗忘的人:

“我希望未来的人们,会记住为了这自由一天的到来,在所有那些实名的、匿名的、无名的点滴抵抗行动的背后,一个个真实的生命,以及他们的智慧、勇敢、坚持和牺牲。而 “编程随想”和它的作者,即使今天我们还不知道他的真名实姓,打开他的一篇篇博文,每一个读者都会看到,这就是21世纪的中国人,在网络上抵抗专制,争取自由的真切证明。”

附:“2021年度人物”其他候选者:

cdtimg

黄雪琴

黄雪琴是中国独立记者,女权活动者,曾发起《中国女记者性骚扰调查》,参与多起#MeToo案件的报道,并为性侵害受害人提供帮助。2019年,她因记录香港“反送中”大游行而遭广州警方拘留,后改为指定居所监视居住,半年后才获释。2021年秋,黄雪琴原计划于9月20日前往萨塞克斯大学留学,但在赴英国前一天,她与友人王建兵一同被广州警方秘密抓捕,至今未获释。

cdtimg

张展

张展是中国公民记者,她曾任律师,后因参与维权而被当局吊销律师执业资格,也因多次批评政治而遭到警察传唤和骚扰。在2020年中国新冠疫情爆发期间,她前往武汉调查与报道疫情实况,后遭到上海警方跨省抓捕,并以“寻衅滋事”为罪名起诉到法院。2020年12月28日,张展被判处有期徒刑4年。狱中的张展坚持绝食抗争,致身体虚弱,生命垂危,张展的亲人朋友和关心她的公民向司法机构发起了救治张展的呼吁。

cdtimg

弦子

弦子是著名的MeToo案件——弦子诉朱军性骚扰一案的当事人。2018年米兔运动期间,她公开讲述自己曾在2014年中央电视台实习期间,遭到主持人朱军的性骚扰,引爆了舆论。本案在2020年12月2日第一次开庭时,上百人自发到法院门口声援,网络上更有大量关注,是近两年来难得一见的公民活动,也引发了审查的大力打压。2021年9月14日在海淀法院第二次开庭,宣判弦子提交的证据不足以证明朱军对其进行性骚扰主张,故驳回了她的诉讼请求。

cdtimg

邹幸彤

邹幸彤是香港大律师、社会活动家、前支联会副主席。支联会全称为“香港市民支援爱国民主运动联合会”,于1989年在香港支持八九民运(六四)的全球华人大游行中成立,曾连续30年无间断举办六四游行、维园烛光聚会,最终于2021年9月25日解散。邹幸彤于2010年加入支联会做义工,六年后担任副主席。2021年6月3日,香港警方以疫情为由,二度反对支联会举办维园六四烛光晚会;而邹表示会以个人名义到场。翌日,她被警方以“涉嫌宣传未经批准集结”为由拘捕。9月9日警方对邹幸彤的指控改为“煽动颠覆国家政权”,12月9日,邹幸彤与其余8人因六四集会被判罪成,邹幸彤获刑1年。

![cdtimg](https://chinadigitaltimes.net/chinese/files/2021/12/黎智英.jpg)

[黎智英](https://chinadigitaltimes.net/space/黎智英 "黎智英")

黎智英是已经停运的香港壹传媒和《苹果日报》创始人,也是香港知名的企业家、社会运动人士和政治人物。黎智英受到六四事件的影响而进入传媒行业,创办《苹果日报》,常年关注敏感议题,不惧批评中国政府,并在香港运动期间坚持异议立场。2020年,黎智英及身边人以违反“国安法”为由遭到两次逮捕,最终在2021年4到5月份,因“非法集结”和“组织非法游行”两项罪名被判监禁20个月。期间壹传媒也多次遭到警方搜查,资金被冻结,《苹果日报》最终迫于压力关停,在2021年6月24日出版最后一份实体报纸。

欢迎读者访问 CDT播客CDT视频 收听/观看更多相关内容。

强化网控力度 公安部严打“网络水军” 网信办整治网上金融信息

12 December 2024 at 16:19

中国政府加强打击批评中国经济的言论。继经济学者近期被删文封号后,网信办表示要集中整治网上金融信息乱象,公安部同日公布“净网2024”的成绩单,表示今年打击“网络水军”行动已拘捕5000人,会加强打击,维护网络公共秩序。网信办和公安部的动作引起关注。

中国网信办周三(12月11日)在“网信中国”的微信公众号发文,表示随着近期资本市场交易活跃度提升,针对一些以“大佬看盘”和“高手指导”为噱头的账号,实际是从事非法荐股等活动,除了加强力度处置抖音、快手、微博、微信等平台上的违规账号,高压严打违规信息外,下一步会针对金融信息乱象加强打击整治,规范网上金融信息传播秩序,维护人民群众财产安全。

公安部同日也公布“净网2024”专项行动在今年以来已侦破900余起案件,抓获5000名嫌疑人。公安部说,高度重视打击整治“网络水军”,聚焦造谣引流和舆情敲诈等违法活动进行打击,会全力挤压“网络水军”的活动空间,维护网络公共秩序。

唱衰中国经济前景 将成打击目标

时事评论人士马聚表示,网信办和公安部同日发布的消息有一定的关连性,除了针对所谓的非法金融中介活动外,也是对所有人发出警告,特别是近期有几位经济学者发表的演讲内容与主旋律相反,引起舆论关注被封锁禁言,相信网信办和公安部“淨网”的目标和打击的“金融乱象”,是发表唱衰中国经济言论的人。

马聚预料,唱衰中国经济前景的意见和发表这些意见的人,会成为公安信网信办和公安部的打击目标。
马聚预料,唱衰中国经济前景的意见和发表这些意见的人,会成为公安信网信办和公安部的打击目标。

马聚说:“它们(中国政府)现在的意识形态里边认为,中国社会舆论环境有在同一个鼻子口出气,只要是所有人都觉得好,经济就一定能好上去。现在他们明白谎是编不下去了,统计局的数据再怎么编也会被论证出来是虚假。那么在这种情况之下怎么办呢?就把找出问题的人干掉,不容许去发表、不容许去讲,只可能同一个鼻子口出气,警告所有人要唱兴中国经济,谁胆敢唱衰就干掉你。”

马聚认为,这次的打击动作与中国目前的经济环境不好有关,官方会在社会环境不稳定期间,加强愚民政策和高压管控手段,使社会的不同声音沉默,以达到维稳的效果。

马聚说:“反映了中国共产党独裁的本质,他们认为人是必须被管住的,社会是必须要被控制的。当经济利益、社会地位,用统战的方式和用铁饭碗的方式也控制不住了,现在要采取的就是这种极端的铁拳的方式去控制这些人的言论,可以起到一时的效果,起码在社会上没有人,敢说、敢挑战。继续把这十几亿民众愚弄下去,以此达到政权能用相对低成本维持自己的统治。”

借淨网名义 实为以言入罪

人权律师吴绍平表示,中国官方每一次使用相同的套路,先打着为人民服务的旗帜,把要打击目标说成是乱象和非法活动,执法部门再以整顿的名义,利用法律工具对不听话的人採取抓捕的行动,相信这次网信办和公安部已锁定要打击金融和经济领域不听话的人。

吴绍平表示,相信官方是想借淨网和打乱金融乱象的名义,实际上是要以言入罪。
吴绍平表示,相信官方是想借淨网和打乱金融乱象的名义,实际上是要以言入罪。

吴绍平说:“实际上就是想以言治罪。这一次它(官方)一定会利用所谓的淨网行动,进一步地压制言论自由,控制这种对中共不利的言论,因为中共向来都是报喜不报忧,尤其是这些年特别如此。他认为不对的都是谣言。李文亮的事件就是一样,都说他们是传播谣言。用我们法律人的话来讲,就是打着合法的旗帜,干着非法的勾当。像扫黑除恶制造了多少的冤假错案,有很多的受害者比如说是访民,把他列入了这个扫黑除恶的这个范畴来打击。”

吴绍平表示,如果中国政府真的想要清理“网络水军”和乱象,应该先处理由官方控制发布大外宣和假讯息的帐号,以及放宽网络管制,使网民能在没有网管和防火墙的环境看到真实的讯息。

责编:陈美华、许书婷、安克 网编:瑞哲

© THOMAS PETER

位于北京的中国网信办

Google vs ChatGPT 搜索体验对比实测

By: DUN
2 November 2024 at 15:22

DUN.IM BLOG

DUN.IM BLOG

我们还年轻,可不想看到这个世界处在毫无自由、隐私的边缘。

随着 的新实时搜索功能, ChatGPT 正在将自己定位为传统搜索引擎如 的竞争对手。ChatGPT 以其对话式的响应而闻名,能够提供实时的上下文信息而不带广告。

我抓住机会看看 ChatGPT Search 与 Google 长期以来的搜索专业性相比如何。我进行了几次比较,涵盖了速度、准确性、视觉效果和整体用户体验等类别。以下是它们的表现。

问题“东京的主要旅游景点有哪些?”

Google 的搜索引擎非常快速,结果在毫秒内就能交付。搜索引擎拥有多年的优化经验,并且有专门为高速索引和检索而构建的基础设施,可以立即获得来自多个来源的广泛相关结果。

ChatGPT 的搜索同样快速,并为每个地点生成了更清晰、更用户友好的图像和信息。显然,AI 通过从相关来源提取信息来生成响应,然后以对话的方式分享这些信息。结果感觉更加友好,几乎就像 AI 很高兴我去旅行一样。

使用体验ChatGPT Search
在以对话且简洁的方式提供有价值的快速响应方面领先。

问题: “解释气候变化和全球变暖之间的区别。”

Google
 的响应来自 Gemini,概述了气候变化和全球变暖,并将其包裹在一个简短的段落中。从那里,我可以向下滚动并搜索一些来自 NASA、USGS.gov 甚至 Quora 的链接。显然,算法优先考虑流行和权威的来源,但它也是以广告驱动的,这意味着顶部结果有时包括我看到的来自联合利华的赞助内容。此外,对于复杂的主题,我自己需要浏览多个链接才能拼凑出完整的答案。

ChatGPT 提供了直接的答案,从网络中提取经过的信息,然后添加了一个可点击的「来源」图标。这个功能减少了我在 Google 搜索中从多个收集信息的时间。在这个搜索和其他搜索中,ChatGPT 的总结对于一般查询甚至更详细的主题都是准确的,其设计允许更干净、更加集中的体验。(不过,请记住,广告可能会在未来出现。)

使用体验ChatGPT Search
在便捷和准确的直接答案方面赢得了这一轮。

问题: 苹果目前的股价是多少?最近有什么更新?

Google 实际上没有给我一个立即的答案。相反,我得到了一个指向 Yahoo Finance 的链接,我可以点击并希望自己找到答案。

ChatGPT
在毫秒内,答案就在我眼前。我还得到了关于苹果的新闻和更新,当然,还有来源。ChatGPT Search 真是令人耳目一新。我得到了问题的答案,而不需要四处寻找细节。通过将答案直接呈现在我面前,我节省了时间,而不需要再点击几次。显然,对于实时的股票 或天气更新,ChatGPT 提供了可比的准确性,甚至在深度上超过了 Google 庞大的视觉库。

使用体验ChatGPT Search
继续以其策划的实时直接答案给我留下深刻印象,显示出未来更新的潜力。

问题: 给我展示媒体对心理健康影响的最新研究。

Google 提供了如此多不同的答案,我甚至不知道该从哪里开始。从 Gemini 的响应到侧边栏,再到下面的链接结果,整个体验极其杂乱——这是我在使用 ChatGPT Search 时从未注意到的。此外,Google 的广告模式意味着用户数据通常被用来提供个性化广告。虽然 Google 有广泛的隐私政策和设置,但其广告驱动的方法可能导致不总是优先考虑用户隐私的定向内容。

ChatGPT 再次,ChatGPT 搜索提供了一个更清晰的界面,没有推广内容。对于这种个人化的搜索,额外的隐私关注方式让我非常感激。作为一个希望在搜索过程中不被广告定向的用户,这种方式对我来说更具吸引力——或者在之后。

使用体验ChatGPT Search
在考虑隐私和负责任的内容使用方面领先。对于敏感搜索,不被广告定向是一个巨大的优势。

问题: 什么是我客厅里最好的电视?

Google 我说的就是我说的,Google。在纠正我输入「What's」而不是「What is」后,Google 给我回应了一些链接,所有这些链接都是赞助的,我需要点击才能找到电视。在得到这个回应后,我感觉我需要再次问它以帮助缩小范围。然而,在赞助链接下,还有来自内容发布者的链接。

ChatGPT 为我缩小了范围,包含了图像,并给出了我想要的答案。AI 确实感觉像是一个朋友,提供有价值的信息。每个电视图像旁边都有一段介绍,提供关于每个电视的信息。与 Google 相比,这种设计感觉更加干净和简洁。此外,对话格式直观,我可以滚动浏览推荐,而不需要像在 Google 搜索中那样需要浏览多个链接。

使用体验ChatGPT Search
提供了一个令人耳目一新的体验,直接回答和具体示例。

问题: 谁在民调中领先?

Google 的结果包括有关选举的新闻故事。我希望通过这个问题获得关于今天总统选举民调中谁领先的直接结果。我不得不挖掘新闻故事才能找到答案。

ChatGPT 给了我我想要的结果,直接提供了事实。选举新闻无处不在,所以我不需要阅读更多的新闻故事。ChatGPT 给了我一个直接的答案。

使用体验ChatGPT Search
提供了没有繁琐的实时答案。

问题: 洋基队在世界大赛中是如何崩溃的?

Google 的第一个结果是从《纽约时报》关于该主题的故事中提取的引用。这是一个快速的响应和直接的答案。然而,它让我感觉我没有得到完整的故事。

ChatGPT 提供了更全面的回应,从更多来源提取信息,但仍然感觉干净简洁。我得到了洋基队彻底失败的完整画面。

使用体验ChatGPT Search
再次提供了我所寻找的实时答案,并增加了确认我获得所有信息的全面性。

ChatGPTGoogle 在不同领域都表现出色,但它们满足的需求略有不同。如果你在寻找全面的搜索结果,拥有大量来源和视觉效果,Google 仍然是强者。

然而,如果你的优先事项是清晰、无广告、对话式的响应以及内置的实时更新,ChatGPT 提供了一种流畅、用户友好的体验,可能很快就会成为日常查询的主流。

ChatGPT Search 提供的无杂乱答案以及支持它们的来源是全面且可靠的。我对 ChatGPT 的答案更有信心,因为它们简洁且没有广告商的支持。结果感觉就像是专为我准备的。在杂乱的网络中,ChatGPT 就像一个乐于助人的朋友,我喜欢这种感觉。

Stirling PDF – 免费开源的 PDF 编辑工具,拥有超过 30 个的全面功能

By: Anonymous
16 October 2024 at 12:50

DUN.IM BLOG

DUN.IM BLOG

我们还年轻,可不想看到这个世界处在毫无自由、隐私的边缘。

Stirling PDF 是一站式的 PDF 编辑,让用户能对 PDF 文件进行各种编辑操作,包括分割、合并、转换、重新组合、新增影像、旋转、压缩等等,特色是免费、开源GitHub〕,过程中文件只会存在用户的设备上,若在处理时有暂存于服务器的内容在下载后会即时从服务器删除,不会记录保存或追踪任何资料,相较于在线工具来说是更安全、的解决方案。

1 Locally hosted web application that allows you to perform various operations on PDF files – Stirling-Tools/Stirling-PDF

Stirling PDF 提供多元的 PDF 编辑功能,涵盖文件组织、格式转换、安全性、检视与编辑等工具,满足各类文件处理需求,用户无需额外下载、安装软件,只要通过即可进行操作,Stirling PDF 有中文在内等多国语言界面〔在我写这篇文章时中文字串翻译率已达 93%〕,进入、找到对应的功能后就能直接进行编辑。

这项服务目前可以做到的功能包括:

1. 文件组织

2. 格式转换

3. 签名与安全性

4. 检视与编辑

5. 进阶功能

顺带一提,Stirling PDF 还有提供 Windows 版本,可以在没有连上的情况下使用,如果有兴趣的朋友可以在 GitHub 找到下载链接,原则上两者功能差不多,无论在线版或 Windows 程序都不用付费、也无广告干扰。

Stirling PDF

进入 Stirling PDF 网站后先从右上角语言选择「中文」。

Stirling PDF – 免费开源的 PDF 编辑工具,拥有超过 30 个的全面功能

接着从上方「工具」就能看到完整功能,依照类型分为:组织、转换为 PDF、从 PDF 转换、签名与安全性、检视与编辑和进阶工具,也可以直接从首页输入功能名称列出相关工具。

有一个 PDF 万用工具是整合旋转、裁切、分割、移除、新增图片等功能,进入后先点击左下角新增要编辑的 PDF 文件。

加入后 PDF 页面预览就会显示于下方,每一页都可单独旋转、删除或调整页数,将光标到页面中间时还会出现其他编辑选项,例如裁切或是加入图片,其实操作上很直觉,稍微摸索一下就会。

编辑完成别忘记点击右上角「下载」保存新的 PDF 文件。

另一个压缩 PDF 也是很常在在线工具看到的功能,选择文件、设置压缩比或是自动模式〔自动调整质量以使 PDF 达到指定大小〕,就能快速压缩 PDF 以获得更小的文件容量。

点击压缩后就会开始处理,完成后自动跳出下载提示,我以大约 9 MB 的 PDF 文件、手动模式 3 级测试后获取一个约 2.5 MB 的新文件,压缩成效相当好,而且图片并没有失真或模糊等情形。

另一个也很常用到的功能是「分割 PDF」,可以将 PDF 指定页面删除、或只是留下需要的页面,使用方法也很简单就不多加赘述,Stirling PDF 会有预先设置的示例提示,用户照着格式稍作修改后就能完成相关编辑任务。

如果要说 Stirling PDF 有没有比较特殊、少见的功能,有一个「自动涂黑」工具很有用,用户只要输入要涂黑的文字,选择 PDF 后就会自动将识别到的文字涂黑,确保隐私和安全性,同时也省去手动编辑文件的时间,操作上更有效率哦!

下图就是使用自动涂黑工具识别、涂黑的 PDF 文件示例,指定文字就会被涂黑处理。

copyparty – 免费开源强大的文件服务器,支持 WebDAV、FTP、媒体播放等超多功能

By: Anonymous
19 October 2024 at 12:16

DUN.IM BLOG

DUN.IM BLOG

我们还年轻,可不想看到这个世界处在毫无自由、隐私的边缘。

copyparty 是一款功能非常丰富的多功能文件服务器,主要用来你电脑、服务器、设备里的文件,并通过、WebDAV、FTP 等方式访问,还支持播放音乐、上传文件、权限设置等功能。

几乎可以在任何有 Python 环境的地方运行,还支持 Docker 托管,以及 系统下的单可执行程序,甚至可以在 中运行。虽然运行很容易,但我不敢说它简单易用。

Portable file server with accelerated resumable uploads, dedup, WebDAV, FTP, TFTP, zeroconf, media indexer, thumbnails++ all in one file, no deps – 9001/copyparty

copyparty 给自己的定位是「便携式文件服务器,具有断点续传、重复数据删除、WebDAV、FTP、TFTP、零配置、媒体索引器、缩略图++,全部集成在一个文件中,无依赖。」

所有的功能集中在一个 .py 文件中,718 KB,直接运行就可以了。Windows 系统有编译好的 .exe 单可执行文件,双击也即开机用。其他平台直接 python copyparty-sfx.py 就行了。

就是文档太啰嗦了…看不下去。

直接运行就可以在浏览器访问 http://127.0.0.1 了,默认会使用 80/443 端口,打开就是这样的:

可以上传、、播放、听歌、看图片…非常纯粹的文件分享。有一种 Alist 的感觉,不过它不支持网盘。

只需要在启动的时候添加一个用户,就能设置权限了,包括只读、文件夹限制等等:

这一行的意思是创建了三个用户:u1/u2/u3,为它们挂载文件夹 music,对 u1/u2 两个用户只读,u3 用户可以写。

但注意有参数后,访问端口就变化了(3923)。

copyparty 默认开启了 WebDAV,只需要在你的 WebDAV 客户端里直接连 http://ip:3923 就行了。

甚至,你可以通过 WebDAV 把这个文件夹映射为 Windows 的网络磁盘,不过 Windows 默认需要 https,改一下注册表就好了。

而 FTP 则需要在启动的时候添加 --ftp 21 参数,用户名密码和上面的设置相同,不设置就支持匿名访问。

ChatGPT o1 会主动思考推理的 AI,新模型发布实测总结

By: Anonymous
8 September 2024 at 12:45

DUN.IM BLOG

DUN.IM BLOG

我们还年轻,可不想看到这个世界处在毫无自由、隐私的边缘。

ChatGPT o1 会主动思考推理的 AI,新模型发布实测总结

今天发布「 ChatGPT o1-preview」,是会尝试主动思考的 语言模型, Plus 订阅用户现在就可使用。

根据 OpenAI 的说法:「我们训练这些模型〔ChatGPT o1-preview〕在回应前花更多时间思考问题,就像人类一样。通过训练,它们学会精炼思考过程、尝试不同策略,并能察觉自己的错误。」「如果您正在解决科学、程序设计、数学和相关领域的复杂问题,这些增强的推理能力可能特别有用。」

我自己在讲 ChatGPT 提升工作效率的相关课程时,常常强调一个设计指令的重点:「如果我们写 AI 指令〔 prompt、提示语〕时,可以让 AI 写出自己在想什么、怎么处理任务,通常生成的内容结果会相对更好。

从用户端的角度来看「ChatGPT o1-preview」,就是在 AI 生成内容前,会先展开一步一步的思考流程,它可能会选择思考的策略与切入点,有时会提出一些批判思考,也会更仔细的分析资料细节来做深入处理。

在这个过程中,ChatGPT o1-preview」生成内容的速度其实比 GPT-4o 要慢上不少,可能需要 30~60 秒的思考时间〔或者更久〕,才会开始一步一步的生成内容。

也因为这样的「思考」过程需要耗费更多运算,所以即使是 ChatGPT Plus 用户,在使用「ChatGPT o1-preview」时也有一些限制:

也就是说,目前「ChatGPT o1-preview」比较像是「GPT-4o」的辅助,在进行一些需要深入分析资料、产出有逻辑结果的任务,或者像是科学、数学、程序代码相关领域时,可以运用。

今天这篇文章,我就从自己日常惯用的几个 AI 辅助需求:翻译、摘要、企划思考、文案,以及有时用代码写个小的角度,以实际案例测试看看,「ChatGPT o1-preview」的效果如何,并和「GPT-4o」同样指令下的结果作比较。

当然,如果能从科学、数学与代码的角度来更好,不过从我个人常用角度出发,也想验证看看 ChatGPT o1-preview 是否能满足我的日常工作需求,也提供大家参考。

下面,先提供大家下面测试案例的快速心得比较表格。

翻译结果更简洁有力,文句白话流畅。

用语更符合台湾惯用词汇。

在「白话流畅度」与「专业用语」间平衡得更好。

翻译结果相对较弱,文句不如 o1-preview 流畅。

能计算分数并回馈对错。

无需修改即可使用。

需要多次反复调整才能达到可用程度。

提供具体、逻辑分明的建议步骤和文章架构。

深入分析资料细节。

缺乏深入的分析和明确的建议。

能整理出详细的步骤和操作要点。

细节完整程度略有不足。

缺乏社交贴文所需的流畅性和吸引力。

更注重性和准确性,避免使用版权材料。

可能在细节上不够精准。

首先来试试看翻译〔英翻中〕,我通常会用下面指令来要求 ChatGPT 翻译文章:「把下面这篇 XXX 主题的文章,翻译成中文,请一段一段翻译,尽量在维持原文语意,主题风格的情况下,让上下文的语句更自然通顺,遇到专有名词时附注英文原文,并在第一遍基本翻译后,用台湾惯用词汇与语气进行最后修饰。

下图「左方」,是「ChatGPT o1-preview」翻译的结果。下图「右方」,是「GPT-4o」翻译的结果。

结论是,「ChatGPT o1-preview」花了 57 秒完成一整篇文章的翻译〔文章是 OpenAIChatGPT o1-preview」官方公告〕,但是翻译的结果比「GPT-4o」优异不少。

例如,大多数时候,ChatGPT o1-preview」翻译的文句更加简洁有力〔相对「GPT-4o」〕,可以在许多段落看到这样的差别。

ChatGPT o1-preview」翻译的结果也更白话,相对流畅,用语更符合我指定的中文用语。

ChatGPT o1-preview」在「白话的流畅度」与「专业用语」之间也相对更能拿捏得当,会让人更容易看懂,但又保持专业用语的明确性。

我让「ChatGPT o1-preview」测试直接写一个九九乘法表小工具。o1 同样会先思考撰写工具的逻辑,然后才开始写出程序代码。

我提供的指令是:「我的小孩正在练习记忆数学的 99 乘法表 ,你可以设计一个协助她练习的小游戏吗?

请一步一步分析,从简单的 2 与 5 的乘法表开始,然后练习 3、4、6、7、8、9 的乘法表,根据每一个乘法表设计一个记忆游戏,游戏一开始可以选择要练习哪一个乘法表,进入后可以随机考验该乘法表的熟练度,最好设计有游戏机制。

下面是 ChatGPT o1-preview 第一次生成的 99 乘法表小游戏,我没有做任何的修改,但是正确性、界面美化、操作流畅度都已经达到可用的程度,还会计算分数与回馈对错。

下面是旧版 GPT-4o 第一次生成的小游戏,基本界面可操作,但有一些明显错误〔如下图〕,可能还需要多几次的反复问答,才能调整正确。

我也很常跟 ChatGPT 一起讨论沟通企划案,下面是新旧版本生成的结果比较。

我提供了许多参考资料,请 AI 帮我做产品的企划报告。

ChatGPT o1-preview」在生成过程中,会主动做一些反向思考,与探索不同的报告呈现方式,并且提供一些具体的、逻辑分明的建议步骤,这些不一定有出现在我的指令中。

下面是 ChatGPT o1-preview 生成的版本,我举出其中一部分,它提出了一个撰写初稿的建议方案,并指出了一些明确的试写步骤、文章架构方向。

下面是 GPT-4o 类似段落的版本,虽然也提出了撰写初稿的建议,但整体的说明就比较一般,少了一些明确的、深入的分析与建议。

我也测试了用两个版本去摘要同一篇文章。

下面是 ChatGPT o1-preview 的版本,可以看到文章细节整理得更深入、完整、有条理。

下面是 GPT-4o 版本摘要的结果,基本架构也相似,但细节的完整程度就有一点落差。

不过,ChatGPT o1-preview 也有他不擅长的内容,目前看起来它撰写流畅文案的效果,反而没有 GPT-4o 好〔现在写文案相对效果最好的可能是 Claude 3.5 Sonnet 〕。

下面我请 AI 根据参考资料写出社交贴文上的文案。

ChatGPT o1-preview 版本,AI 会思考撰写过程,撰写时会进行更多安全性、准确性的思考,例如避免使用版权材料

但是多次尝试后, ChatGPT o1-preview 版本目前的结果,比较像是把参考资料更有结构、更有逻辑的分析整理,不太像是社交贴文。

相较之下, GPT 4o 的版本,可能细节没有那么精准,但文案比较流畅。〔如下图〕

以上就是我的初步测试案例与心得,提供大家参考。

全球 AI 产品 Top100 出炉!只有一个国产应用进前十

By: Anonymous
19 August 2024 at 13:18

DUN.IM BLOG

DUN.IM BLOG

我们还年轻,可不想看到这个世界处在毫无自由、隐私的边缘。

8 月 21 日,硅谷知名投资机构 a16z,根据近半年的数据,选出了前 100 名 应用

大多数人在使用哪些 AI 产品?哪些类别更受欢迎?用户会坚持使用哪些 AI 产品,而不是转瞬即忘?接下来,我们一起来看看。

这已经是 a16z 第三次发布 AI 百强榜单了,第一次是 2023 年 9 月,第二次是 2024 年 3 月,半年一更,频率稳定。

a16z 的评选方法是,基于 Similarweb、Sensor Tower 的数据,每 6 个月排一次名,榜单分成 2 部分:

全球 AI 产品 Top100 出炉!只有一个国产应用进前十

▲网页端前 50

▲移动端前 50

网页端和移动端的 TOP10 里,美图秀秀国际版 Meitu 属于国产,靠粘土滤镜爆红的 Remini 最开始也是出海产品,后被一家意大利公司收购。

接下来我们分门别类地谈谈,首先是通用型 AI 助手。

第三次了,ChatGPT 还是遥遥领先,在网页和移动端都拿下第一,绝对的 killer app

与此同时,ChatGPT 不如对手们增长势头猛烈。谁才是最好的 AI 助理,尚且没有定论。

▲增长指数

黄仁勋爱用的 AI 搜索 Perplexity 在网页端排名第三,并首次入围移动端榜单,正好排在第 50 名,差点名落孙山。

Perplexity 超过 7 分钟的用户平均停留时间,甚至略胜于 ChatGPT

比起 等传统搜索,Perplexity 直接提供简洁、实时、相对准确、可以引用信息来源的答案。数据说明,AI 搜索的形式在一定程度上走通了。

OpenAI 的 Sam Altman 也对这种形式保持认可,然而,OpenAI 的 AI 搜索 SearchGPT 还在小范围地内测,用户比 CEO 更着急。

ChatGPT 定位最像、竞争更直接的产品是 Claude,来自前 OpenAI 员工创立的 Anthropic。这次,Claude 的排名有所提升,在网页端排名第四,好过上个榜单的第十。

今年 6 月,Claude 推出的新功能 Artifacts 突破了聊天窗口的限制,可以实现实时可视化、互动编程等,拓展了用户与 Claude 交互的方式,好评不少。

▲Artifacts

除了早已功成名就的一代目,通用助手的赛道也有一些后起之秀。

字节跳动这次一次性上榜了五个产品:教育应用 Gauth、开发平台 Coze、通用助手豆包、豆包英文版 Cici、照片和编辑 Hypic。

除了 Hypic,其他都是首次出现在榜单,其中,豆包移动端第 26 名、网页端第 47 名,Cici 也在移动端排到第 34 名。

豆包的功能发展得很全面,并且多端覆盖,使用门槛又低,日常场景够用,所以有这么大的用户量,也在情理之中。论做产品和商业化,还得看字节。

另外,AI 助手 Luzia 首次上榜移动端,一来就是第 25 名。

你可能没有听说过这款产品,它主要服务西班牙语环境,全球拥有 4500 万名用户。最初,Luzia 作为 WhatsApp 的聊天机器人出道,但 2023 年 12 月有了独立的 app

除了什么都能聊的通用助手,消费者对于 AI 还有哪些垂直的、特别的需求?

一个重要的趋势是,大家都在用 AI 搞创作,并且创作的形式越来越丰富了。

a16z 的网页端榜单里,52% 的公司支持图像、视频音乐、语音等的内容生成和编辑。

其中包括 7 家新上榜的公司,排名还不低,视频生成工具 Luma 排在第 14 名,音乐生成工具 Udio 排在第 33 名。

和 Udio 同一个赛道、被称为音乐界 ChatGPT 的 Suno,存在感更是暴涨,从今年 3 月的第 36 名,上升到今年 8 月的第 5 名。

榜单和榜单的纵向比较也很有意思,之前的榜单里,大多数内容生成工具围绕图像。

但现在,图像生成的占比降到了 41%,只有一个图片生成工具(SeaArt)首次上榜,视频生成工具出现了三个新面孔(Luma、Viggle 和 Vidnoz)。

端新增产品

Udio 上线于今年 4 月,6 月则是 AI 视频工具爆发的一月,快手可灵、Dream Machine 的 Luma AI、Runway 的 Gen-3 Alpha 接二连三发布。

可以看到,不过半年,AI 在音乐和视频上的输出质量,都卷出了成绩。

至于移动端,最常见的创作形式是编辑图像、视频。相关工具占到榜单的 22%,是移动端的第二大产品类别。

▲Adobe Express

虽然也有初创公司涌现,但排名更高的,是那些在生成式 AI 浪潮里转型、推出更多玩法的传统创意公司。

其中有我们比较熟悉的名字,美图秀秀国际版 Meitu 在第 9 名,字节跳动旗下的照片和视频编辑器、醒图国际版 Hypic,位列第 19 名。

另外,韩国互联网巨擘 Naver 旗下的相机应用 SNOW 第 30 名,内置了 Adobe Firefly 生成式 AI 的 Adobe Express 第 35 名。

之前 washingtonpost 做过一个调查:人们会和聊天机器人说什么?他们分析了数千次对话,第一是搞黄色,第二是完成家庭作业。

最近也有一款很火的 P 肌肉应用 Gigabody,让你提前看看增肌之后的模样。它会产出很多照骗,也会打击健身人群的自信心,因为很可能练了半天,还不如 Gigabody。

举出这两个例子,是为了佐证 a16z 的结论。

a16z 移动和网页端的榜单,都出现了一个很有意思的新类别:美学和约会。

其中包括三个新入围移动端榜单的工具:LooksMax AI(第 43 名)、Umax(第 44 名)和 RIZZ(第 49 名)。

▲移动端新增产品

LooksMax 和 Umax 采集用户的照片并评分,然后给出建议,提升你的魅力。Umax 甚至会给出一个「满分模板」,也就是 AI 眼里你的完美模样。

LooksMax 不仅照顾到了颜控的看脸需求,也会分析用户声音的吸引力。

但它们的用户规模并不大,LooksMax 超过 200 万,Umax 在 100 万左右。

可能和这个赛道太卷有关,上网随便搜搜能够找到大量身体美颜滤镜,减肥、增肌、健身、变胖、换衣服,AI 都能帮忙,我们不再需要在 B 站学习复杂的 PS 教程

但这些应用的套路又都很类似,靠订阅赚钱,能赚多少是多少,Umax 每周收费 4.99 美元,LooksMax 每周收费 3.99 美元。

如果说 LooksMax 和 Umax 是认识更多发展对象的敲门砖,下一步就该用 RIZZ 了。

笨嘴拙舌的用户,可以用它提升回复约会 app 消息的水平。上传对话截图、个人资料等,RIZZ 都可以教你说些高情商表达。

古代的邹忌问身边人「吾与徐公孰美」,童话里的皇后问魔镜谁是世界上最好看的人,现在的人们则在问 AI:我怎么变得更帅、更漂亮、更有魅力,怎么不算一种科技与狠活呢?

食色性也,情感关系未必在人和人之间,也可以是人机。这次,AI 伴侣应用 Character.AI 排在移动端的第十,上次是第十六。

其实,上榜的还有一些尺度更大的 AI 伴侣应用,包括 Janitor、SpicyChat、candy.ai、Crushon 等,但 a16z 没有特别强调出来。

拿 a16z 今年 8 月的榜单和今年 3 月相比,近 30% 的公司是新公司。

如果再拿今年 3 月和去年 9 月的榜单相比,那么这个数字是 40%。

可见 AI 产品竞争之激烈和残酷,新一代 AI 原生产品和公司的发展速度,前所未有地快。

下一个爆款的 AI 产品,可能会是什么?答案或许在社交产品 Discord 出现。

a16z 发现,Discord 的流量,能够体现一个产品有没有潜力,尤其在内容生成方面。

Discord 的好处是,提供了服务器和交流社区,开发者无需构建完整的前端产品,所以它很适合作为一个沙盒,用来验证 PMF(产品与市场契合度)。

很多产品都是从 Discord 起步,构建社区,测试功能,积累用户,然后才有自己的独立,比如 Suno 和

时至今日,Midjourney 还是所有 Discord 服务器邀请流量的第一名。

▲ 在 Discord 受欢迎的 AI 公司

截至 7 月,10 家 AI 公司在所有 Discord 服务器邀请流量中排名前 100,与 1 月相比,其中一半是新秀。

AI 继续发展下去,未来可能连 app 的概念都会消失,人手一个 agent,AI 主动帮我们解决需求,但现在,我们还是从被用户选择的 app 中,一窥 AI 的可用性如何被定义。

常言道「不要创造需求」,产品的成功不在于通过广告等人为方式制造需求和虚假繁荣,而是找到并满足已经存在的、真实的需求。

AI 也是这样,融资、刷屏、炒作之后,依然是沉默的大多数,做出最诚实也最落地的投票。其中,有没有你正在使用并欣赏的产品呢?

We crunched the data to find out: Which gen AI apps are people actually using? And which are they returning to, versus dabbling and dropping?


2024 年 3 月:

Thousands of new AI-native companies are vying for attention. We crunched the data to find out: Which generative AI products are people actually using?


2023 年 9 月:
https://a16z.com/how-are-consumers-using-generative-ai/

The Maps Express – 简单方便一键查询 Google 地图的 Chrome 扩展

By: Anonymous
9 August 2024 at 13:14

DUN.IM BLOG

DUN.IM BLOG

我们还年轻,可不想看到这个世界处在毫无自由、隐私的边缘。

The Maps Express」是一款 扩展程序,支持各种常见浏览器例如 的 Safari、Chrome 上的 Edge、Chrome、Brave、Arc、Opera,安装后可在选取要查询的地点时通过鼠标右键菜单或快捷键快速查询 Maps,能保存最近查询的十条历史记录,还能将地点收藏〔支持导出、导入功能〕,非常方便!

值得一提的是 The Maps Express 有一项「 摘要」功能,通过 Google Gemini 对当前网页进行分析、快速找出可能的餐厅、咖啡店、商家或景点关键词,让用户以 Google Maps 快速查询相关结果。

No Description

进入 Chrome 程序商店页面,点击右上角「加到 Chrome」安装到浏览器后即可使用。

那么要如何进行查询呢?很简单,只要选取店家名称、右键菜单就有「通过 The Maps Express 查询」快速带入 Google Maps 查询地点,也可使用快捷键〔Ctrl+Shift+S/⌘+Shift+S〕进行操作。

如此一来就将好几个步骤的操作过程简化成一个动作。

The Maps Express 本身也具有查询功能,点击扩展按钮后会进入类似如下的窗口,最上方的查询字段就如同是 Google 地图查询功能,可以快速在地图查询指定地标,查询记录会保留近期查询的 10 条记录,这些信息只会存在用户的浏览器。

点击查询记录的地标会快速打开 Google 地图,将光标移到地标上可以「加入收藏」。

The Maps Express 收藏清单功能基本上可以算是更方便的 Google Maps 收藏功能,将地标加入收藏后还能利用下方的功能进行导出或导入〔格式为 .JSON〕。

再来介绍一下 The Maps Express 最有趣的「页面摘要,可以使用 AI 技术来摘要地点,第一次使用时需要设置一下 API 密钥,不过不会太难,只要有 Google 账户、几个步骤就能搞定。

点击 API 后会有设置说明,浅显易懂,先连接到 Google AI Studio 页面,第一次使用会有注意事项,勾选底下第一项同意使用条款,按下「Continue」继续到下一个步骤。

接着点击中间的「Create API key」建立一个 API 密钥。

按下「Create API key in new project」按钮,如下图箭头标示位置。

生成 API 密钥后按下「复制」获取这段代码,回到 The Maps Express 扩展贴上后即可进入 AI 功能。

The Maps Express 页面摘要工具是使用 AI 来摘要地点,简单来说,在网页点击「Gemini 摘要」后就会自动分析网页出现的地标,将相关结果自动加入、方便用户以 Google Maps 查询或是加入收藏。

下图就是使用 AI 页面摘要、分析上的文章后得出的相关地标,非常快速、准确!几乎把文章中列出来的所有咖啡店都呈现在列表,省去要一个一个复制查询的时间,如果平常会经常在网络上查询信息的朋友可以试试看这项功能〔只是前置需要几个设置步骤〕。

开启 Windows 10/11 微软官方自带沙盒功能

By: Anonymous
16 July 2024 at 14:53

DUN.IM BLOG

DUN.IM BLOG

我们还年轻,可不想看到这个世界处在毫无自由、隐私的边缘。

沙盒是微软为 Windows 10 专业版/企业版或者 Windows 11 中提供的功能,可以地在隔离状态下运行程序。不过默认并没有安装,需要使用 Windows 功能来安装,支持在 Hyper-V 虚拟机中使用。

Windows 沙盒 的主要用途就是在隔离的环境下,运行一些你认为不可靠的程序,这样不会影响本地系统安全性。当关闭沙盒之后,所有都会被删除(从 Windows 11 版本 22H2 开始支持沙盒内重启保存数据,但关闭依旧是删除)

安装 Windows 沙盒至少需要 Windows 10 专业版/企业版(18305 以后版本),或者 Windows 11,以及:

也就是说,太久的电脑就不要用啦

然后在开始菜单打开或关闭 Windows 功能,勾选 Windows 沙盒,并重启电脑,即可。

在 Hyper-V 虚拟机之中想要启动沙盒,需要在本地主机中打开 PowerShell 然后输入:

然后就可以回到虚拟机中安装 Windows 沙盒 功能了。

启动 Windows 沙盒后的样子,看起来就是一个全新的 Windows 系统:

你可以直接将文件粘贴到沙盒里面,也可以通过沙盒里的 edge

如果想要禁用网络链接,需要创建一个 .wsb 的文件,内容为:

然后双击这个 .wsb 文件,就能打开一个不联网的 Windows 沙盒了。

另外通过配置文件,还能设置等 vGPU、映射本地文件夹、启动命令、共享麦克风、共享摄像头、RDP 协议、打印机、剪贴板、内存等功能。

最后就可以愉快的在沙盒中进行一次性操作了。

注意 1:每次关闭沙盒,里面的东西就没了。

注意 2:只有在 Windows 11 中,才支持沙盒中重启

官方文档在这里

RTranslator – 一款 Android 开源离线本地实时同传翻译 APP

By: Anonymous
24 June 2024 at 13:56

DUN.IM BLOG

DUN.IM BLOG

我们还年轻,可不想看到这个世界处在毫无自由、隐私的边缘。

RTranslator 是一款适用于 、离线、实时的翻译应用程序。RTranslator 使用 Meta 的开源 模型 NLLB 进行翻译,使用 的开源 AI 模型 Whisper 进行语音识别,是一款可以直接在手机上运行的开源离线本地实时 AI 同传翻译 ,在境外也不用担心因为手机无信号或无流量而无法使用了。

Open source real-time translation app for Android that runs locally – niedev/RTranslator

如果双方手机都安装了 RTranslator 这个模式可以实现(几乎)实时的语音翻译对话。适用于会议或者长对话场景。

RTranslator – 一款 Android 开源离线本地实时同传翻译 APP

对话模式更适合长对话,对讲机模式则适用于临时对话场景,比如问路或者买东西时的对话。

就是个正常的翻译器,复制文字进去,选择什么语言翻译到什么语言,点翻译就给你翻译。

信息茧房:网络时代的迷思

12 June 2024 at 00:00

信息茧房

端午假期,我和侄女聊天,我随口提起了最近网络上爆红的郭有才,我以为她也会有所耳闻。没想到,她却一脸茫然,表示从未听过这个名字。

我有些惊讶,毕竟山东菏泽的郭有才最近在网络上可谓是炙手可热。侄女打开抖音,搜索了他的名字,1000多万的粉丝数量赫然出现在眼前。侄女这才露出了惊讶的表情,感叹道:“居然有这么多人关注他,我却一点都不知道。”

我意识到,我和侄女的年龄差距,导致了我们所处的“信息圈”截然不同。她主要获取信息的方式是通过社交媒体,而我则更倾向于传统网络媒体和书籍。这不禁让我思考,在信息爆炸的时代,我们是否真的了解了世界,还是反而被困在了自己的信息茧房中?尤其是社交媒体变态的算法机制。

值得一说的是,社交媒体的注意力经济下,就更别说视频内容的浅薄化。如今,短视频平台上的内容充斥着各种娱乐八卦和无厘头的搞笑视频,这些内容虽然能够带来一时的快乐,却无法让我们获得真正的知识和思考。

长此以往,我们会逐渐失去阅读、写作和思考的能力,沦为被信息消费的对象,而不是信息的创造者。因此,我们应该减少对浅薄视频内容的依赖,多读书,多思考,多创作,才能真正提升自己的精神境界。

某国际学院最近想和德国合作,并对学生出国工作的意愿进行了一番初步调查。结果却令人意外,学生们出国工作的意愿并不高。这与我最初的预想截然不同,我以为在互联网如此发达的今天,人们对国外的情况应该更加了解,出国工作的意愿也会更高。

然而,事实却并非如此。专家说,这就是信息茧房的作用。我们每天接收到的信息,大多来自我们所关注的社交媒体和网站,这些信息往往都是迎合我们口味,甚至故意制造偏激的内容来刺激注意力。久而久之,我们就生活在一个由自身偏好所构建的信息茧房中,看不到外面的世界,也听不到不同的声音。

一位高校教师老太太,她的儿子从发达国家疫情期间留学回来,最近想去攻读博士。但她就觉得不建议她孩子去国外,疫情期间国外那种各种“惨状”让她很不放心。她甚至觉得,境外的话最多能接受去香港,其他地方都不安全,只有国内才让她放心,才是安全的。

老太太由于长期生活在自己的信息圈中,只接收到了国内媒体关于国外疫情的负面报道,因此对国外的情况产生了偏见和误解,她认为国外到处都是水深火热,不适合生活和学习。

那么,在社交媒体如此发达的今天,我们作为个体,如何才能跳出信息茧房的束缚呢?我认为,以下几点非常重要:

  • 主动探索: 除了关注自己感兴趣的内容,我们也应该主动去探索其他领域的信息,跳出自己的信息圈,到更大的世界中去寻找新的知识和观点。
  • 多方求证: 不要轻易相信单一的信息来源,要多方求证,从不同的角度去了解事情的真相。
  • 开放心态: 虚心接受不同的意见,即使与自己的观点不一致,也要保持开放的心态,进行理性的思考和判断。

信息茧房就像是一个舒适的囚笼,它让我们感到安全和满足,却也让我们失去了接触新事物、开拓眼界的机会。只有跳出信息茧房,才能真正拥抱更广阔的世界,获得更多的智慧和灵感。

在这个信息爆炸的时代,有智慧的人都应该警惕信息茧房的危害,主动跳出自己的舒适圈,去探索更大的世界,去创造更多属于自己的精彩。

Stacher – 基于 yt-dlp 的免费跨平台视频下载工具,支持几乎所有视频音乐平台

By: Anonymous
22 May 2024 at 14:26

DUN.IM BLOG

DUN.IM BLOG

Stacher – 基于 yt-dlp 的免费跨平台视频下载工具,支持几乎所有视频音乐平台

Stacher 是最近新问世的免费网络视频下载,支持 和 Linux,本身也是知名开放源码项目 yt-dlp〔由 youtube-dl 分支〕图形化界面〔GUI〕版本,大家都知道 yt-dlp 是终端里的下载工具,使用上会有一定的门槛,将它套用图形化后操作界面后就会更符合大众使用,支持超过 1200 种网络服务,之前曾介绍过的类似软件还有「Hitomi Downloader 」和「Seal」。

Stacher 已经有针对 Windows 和 Linux 三大操作系统推出对应的版本,只要从官方找到需要的版本后下载即可使用,本身没有自带中文界面,但在操作上不会困难,只需要将视频网址复制、粘贴后就能获取文件,也能够选择各种常见视频、格式。

利用 Stacher 可以下载 YouTube、Twitter、Instagram、TikTok、Bilibili、Pornhub 等网站视频,在使用时没有太多复杂难懂的设置,也支持包括 3GP、AAC、FLAC、FLV、M4A、MP3、MP4、OPUS、VORBIS、WAV、WEBM 等格式,最简单的方法就是维持默认值「最佳画质 + 音频」,就能获取包含影像、声音的视频文件咯!

值得一提的是 Stacher 还能针对要下载的平台提前设置账号密码,也有设置浏览器 Cookie 选项,无论是遇到任何状况只要适当设置应该都能顺利获取视频,如果平时会需要从网络平台储存视频的话可以试试看。

其他 YouTube 网络视频下载工具整理:

Stacher. A youtube-dl frontend.

进入 Stacher 网站后跳到下载区,选择要下载的程序版本,支持 WindowsmacOS 和 Linux,要注意的是都只适用于 64 位操作系统。

我使用 Stacher 的 Mac 版本进行操作教程,Windows 版本应该大同小异,进入后会有说明画面,可以得知应用程序是一个图形化界面下载器,以 yt-dlp 作为内核,因此在使用时会自动安装 yt-dlp。

进入 Stacher 主画面后会自动更新相关元件,上方是网址列,将视频网址复制、粘贴后就能进行下载。

从右上角可选择要下载、保存的文件格式,视频格式有 3GP、FLV、M4A、MP4、WEBM,格式有 AAC、FLAC、MP3、OPUS、VORBIS、WAV,建议直接维持默认值「BEST」就会自动获取最佳画质和音频。

下载时会显示视频略缩图、标题、文件大小、下载速率和预计完成时间,试着下载 YouTubeFacebook 和 Instagram 都能正确获取视频,而且下载速度很快。

完成后在视频上方点击右键、从菜单找到「Open Download Location」就能进入下载路径并找到视频文件。

另外,在右上角也能提前设置视频下载后的保存路径。

下载视频的网址列右侧有一个提前设置账号、密码功能,如果要存取的视频需要账号密码可提前设置,另一个选项可以选择浏览器 Cookie 来源,若无法正确下载视频的话就试试看调整这两个选项。

在 Stacher 设置画面能提前调整下载保存的视频路径、视频文件格式等选项,还有像是字幕下载、网络速度限制或是音质等等,可设置的项目很多,不过如果没有特殊需求只需要维持默认值即可。

前面有提到 Stacher 是使用 yt-dlp 作为内核,支持的服务超过 1000+ 个〔支持列表〕,基本上所有常见常用服务应该都能够利用这个应用程序下载,在测试时除了 YouTube 也下载 Facebook、Instagram 视频,也都能够顺利获取视频文件。

Stacher 是一款功能强大、操作简单的免费网络视频下载工具,非常适合新手使用。如果有下载网络视频的需求,不妨试试看 Stacher。

中文互联网内容正在逐步消失

25 May 2024 at 16:01

这两天有篇文章很火,刷屏了社交媒体,文章标题叫《中文互联网正在加速崩塌》。文章内容主要讲的是,以前那个年代曾经红火过的中文网站的内容正在消失,中文互联网正在迅速崩塌,移动互联网出现之前的中文互联网内容,已经几乎消失殆尽。

文章的作者举例,如果在百度上搜索“马云”这两个字,把时间设定在1998年到2005年,能搜出来的信息,大概有多少条呢?结果是1条。

具有讽刺意味的是,《中文互联网正在加速崩塌》这篇文章发布了不到24小时,也从中文互联网上消失了。

那么,事实到底是不是这样呢?下面,我们通过各种具体数据来分析一下。

一、历史数据分析

有个名为“Web Techmology Surveys”的网站,根据全球网站使用的语言,统计了从2013年到2024年这些年来,主要网站页面内容语言使用的历史趋势,从这个表格可以看出,中文网页的数量从2013年的4.3%降低到2024年的1.3%,十年间下降了70%,目前,全球的中文网页数量仅仅略高于印尼语和越南语,而低于波兰语和波斯语。

从CNNIC发布的《中国互联网络发展状况统计报告》的数据上看,从2018年12月到2023年12月,中国的网站数量从544万个下降到388万个,五年时间内下降近30%,这一数据反映了中文网站数量减少的严峻形势。

中国网民规模达10.92亿人,互联网普及率达76.4%,网民数占全球的19%,而可以看的中文网页仅占全球网页的1.3%,更可怕的是,这个趋势是长期的,中文网页的数量在10年间下降了70%,中文网站数量在5年间下降了30%,这的确说明,中文内容网站正在迅速减少,并逐步消亡。

Historical yearly trends in the usage statistics of content languages for websites

This report shows the historical trends in the usage of the top content languages since January 2013.

  2013
1 Jan
2014
1 Jan
2015
1 Jan
2016
1 Jan
2017
1 Jan
2018
1 Jan
2019
1 Jan
2020
1 Jan
2021
1 Jan
2022
1 Jan
2023
1 Jan
2024
1 Jan
English 54.9% 55.4% 55.6% 53.9% 52.3% 51.2% 54.0% 56.8% 60.4% 63.6% 57.7% 52.2%
Spanish 4.6% 4.5% 4.7% 4.8% 5.0% 5.1% 4.9% 4.6% 4.0% 3.6% 4.5% 5.5%
German 6.5% 6.0% 6.0% 5.8% 5.4% 5.6% 6.0% 4.1% 2.4% 2.0% 3.9% 4.7%
Japanese 4.5% 4.9% 5.0% 5.0% 5.7% 5.5% 3.4% 2.9% 2.1% 1.9% 3.2% 4.3%
French 4.6% 4.0% 4.0% 4.1% 4.0% 4.1% 4.0% 3.3% 2.6% 2.5% 3.9% 4.3%
Russian 5.5% 6.1% 5.8% 6.2% 6.4% 6.8% 6.0% 7.6% 8.6% 7.0% 5.3% 4.5%
Portuguese 2.3% 2.3% 2.4% 2.6% 2.6% 2.6% 2.9% 2.5% 1.3% 0.7% 1.8% 3.1%
Italian 1.6% 1.8% 1.9% 2.1% 2.3% 2.4% 2.3% 1.5% 0.8% 0.7% 1.7% 2.3%
Dutch, Flemish 1.1% 1.3% 1.3% 1.4% 1.4% 1.3% 1.2% 0.9% 0.6% 0.5% 1.2% 1.8%
Turkish 1.3% 1.3% 1.4% 1.6% 1.6% 1.4% 1.2% 2.2% 3.6% 3.9% 2.6% 2.1%
Polish 1.7% 1.7% 1.7% 1.9% 1.7% 1.7% 1.7% 1.3% 0.6% 0.5% 1.2% 1.6%
Persian 0.8% 0.8% 0.8% 1.1% 1.5% 1.7% 2.0% 2.4% 3.0% 3.5% 2.2% 1.5%
Chinese 4.3% 3.6% 2.8% 2.1% 2.0% 2.1% 1.7% 1.4% 1.4% 1.3% 1.6% 1.3%
Indonesian 0.4% 0.5% 0.4% 0.5% 0.5% 0.4% 0.3% 0.5% 0.7% 0.8% 0.6% 1.1%
Vietnamese 0.4% 0.4% 0.4% 0.6% 0.6% 0.6% 0.7% 1.0% 1.7% 1.9% 1.4% 1.2%
Czech 0.6% 0.7% 0.7% 0.8% 0.8% 0.9% 1.0% 0.7% 0.3% 0.2% 0.6% 0.9%
Korean 0.3% 0.4% 0.6% 0.7% 0.9% 1.0% 0.9% 0.8% 0.6% 0.5% 0.7% 0.8%
Ukrainian 0.1% 0.1% 0.1% 0.1% 0.1% 0.2% 0.2% 0.3% 0.4% 0.6% 0.6% 0.6%
Hungarian 0.4% 0.3% 0.3% 0.4% 0.4% 0.5% 0.5% 0.4% 0.2% 0.1% 0.3% 0.5%
Arabic 1.1% 0.9% 0.8% 0.8% 0.8% 0.7% 0.6% 0.8% 1.1% 1.2% 0.9% 0.6%

二、为什么会减少

为什么会出现中文网站内容快速减少这种情况呢,我觉得主要原因有:

平台垄断

中文互联网市场被少数几家大型科技公司所垄断,这些巨头公司通过资本和技术优势,控制了大量的流量和用户资源。平台垄断不仅限制了内容的多样性,还进行内容控制,使得通过常规手段难以访问这些平台的内容,只能通过这些平台专有的软件才能访问,搜素引擎等外部系统无法获取到这些内容,这也使得互联网上的可以直接访问的中文网页数量逐渐减少。

与此同时,小型网站和独立博客在这种竞争中难以为继,许多网站因为流量不足、广告收入减少而被迫关闭。

用户习惯变化与内容生产转型

随着短视频、直播等新兴媒体形式的兴起,用户的内容消费习惯发生了显著变化。越来越多的人选择在抖音、快手等平台上消费内容,而传统的文字和图文形式的网页逐渐被冷落。内容生产者为了适应这一趋势,也纷纷转向短视频等新媒体平台,减少了传统网页内容的创作和发布。

广告收益下降

近年来,互联网广告市场竞争激烈,广告收益普遍下降。许多中文网站依靠广告收入维持运营,但随着广告市场的萎缩,许多网站面临巨大的经济压力。特别是中小型网站,无法承受运营成本,最终选择关闭或减少内容更新。此外,广告主更倾向于投放在大平台和热门应用上,进一步加剧了中小网站的生存困境。

监管加强与内容审查

监管部门对互联网内容的监管和审查力度不断加强,例如网站的备案制度实施等,让许多网站由于无法符合监管要求而被迫关闭或减少内容发布。

三、带来的影响

互联网上的中文网页数量逐渐减少,虽然这种变化有其复杂的原因,但其影响已经显现,并将在多个方面产生深远的后果。以下是中文网页减少带来的主要影响:

信息获取的难度增加

中文网页数量的减少直接导致了信息来源的减少。用户在寻找特定信息时,可能面临可供参考的网页数量不足的困境,尤其是在一些小众或专业领域。信息的可得性降低,使得用户需要花费更多时间和精力来获取所需资料。这种状况不利于知识的传播和积累,可能影响到教育、科研等领域的效率和效果。

内容多样性的下降

随着中文网页的减少,互联网内容的多样性也在下降。许多小型网站和独立博客因为无法维持运营而关闭,导致一些独特的、非主流的内容逐渐消失。内容的同质化问题进一步加剧,用户能够接触到的信息类型和观点变得更加单一,互联网的开放性和包容性受到削弱。

小型企业和创作者的生存压力

中文网页的减少对小型企业和独立内容创作者带来了生存压力。许多依靠互联网进行业务推广和内容创作的小型企业和个人,由于流量和曝光率的下降,面临收入减少的困境。大平台和热门应用的垄断地位,使得中小型网站难以获得足够的用户和广告支持,生存空间被进一步压缩。

文化多样性的丧失

中文互联网曾是文化交流和多样性展示的重要平台,然而,随着网页数量的减少,许多地方文化、民间艺术、传统知识等内容面临消失的风险。互联网不再是多元文化展示和传承的乐园,文化的单一化倾向可能导致传统文化和少数民族文化的边缘化和遗忘。

学术研究的挑战

学术研究依赖于丰富的资料来源和多样的信息渠道。中文网页的减少对学术研究产生了不利影响,研究人员在进行资料收集和文献综述时,可能面临信息不足的问题。特别是在社会科学和人文研究领域,缺乏多元化的信息来源,会影响研究的深度和广度。

搜索引擎结果的单一化

随着中文网页数量的减少,搜索引擎提供的结果也变得单一化。用户在搜索特定信息时,可能频繁遇到相同或相似的内容,搜索体验下降。这不仅影响用户的使用体验,也可能导致信息茧房效应,使用户接触到的信息更加片面和有限。

结语

总的来说,互联网上中文网页数量的迅速减少是多种因素共同作用的结果,目前来看,这一趋势在短期内无法改变,互联网上中文网页数量的减少带来了诸多影响,从信息获取的难度增加到文化多样性的丧失,到搜索引擎结果的单一化,再到学术研究的挑战,这些影响可能对中文互联网的未来发展产生深远的后果。

胡锡进评《杜鹃花落》事件

30 March 2024 at 19:55

近日,成都市新都区的一份初三语文试卷引发了社会广泛关注。该试卷中出现了一篇被指涉嫌美化侵华日军和侮辱八路军的文章——《杜鹃花落》。3月25日晚,成都市新都区通报称新都区已成立联合调查组进行全面调查,对相关教研员及区教科院院长予以停职。3月26日,河南省安阳市汤阴县教育局发布通告回应,该文作者已被免职。

有资料称,李佳前是河南汤阴县的一所中学的校长,《杜鹃花落》这篇文章是于去年撰写并发表在网上的。这篇小小说以侵华日军的视角展开,主角岗田大佐是侵华日军的一份子,他的儿子本是日本帝国大学高材生,为了看望父亲来到中国,但在赶赴和父亲团聚的途中被八路军劫走,岗田为报仇而率军扫荡,把一股八路军尽数屠戮之后才发现,八路军一直在尽全力保护自己儿子,反而是自己的报复杀死了儿子。

3月26日深夜,胡锡进在微博平台上发表了一篇近千字的长文,这篇文章针对“成都‘毒试卷’”事件发表了他个人的看法。

胡锡进首先表示:他认可网友们对《杜鹃花落》这篇文章以及“成都‘毒试卷’”事件的愤怒,他觉得“这种愤怒是朴素的,(是)有道理的”,“即使(《杜鹃花落》的)作者有探索新写法的用意,(但)他的这种写法也无法被普通读者(所)理解,因而,(会令众多读者感到不舒服)。”他觉得,他无法确定这名作者的真实用意,很难相信那些初三学生能够理解那些意涵。

接下来,胡锡进认为:无论是对那名已被免职校长(指《杜鹃花落》的作者李佳前)的调查以及对“毒试卷”的调查,都要坚持客观性,要听涉事人员的陈述,在当前的社会环境下,《杜鹃花落》的作者李佳前是不会故意去挑衅社会强大的共识的,是不会拿鸡蛋往石头上撞的。基于此,应该允许《杜鹃花落》的作者李佳前以及“成都‘毒试卷’”的当事人进行申辩。

再接下来,胡锡进认为:小说《杜鹃花落》里面的基本情节不但没有侮辱八路军,而且,还有意突出了八路军的英勇,多数人是被情感带偏了,不过,这需要专业人士去鉴定。

以下为胡锡进的原文:

如此“美化日军”,究竟是怎么一回事?

《杜鹃花落》引起很多人的愤怒,这种愤怒是朴素的,有道理的。这篇小小说完全以一名侵华日军指挥官为视角,对八路军的评价是日本式的,而且让人觉得那名日军大佐心疼儿子,要为儿子报仇,人性挺正常的呀。即使作者有探索新写法的用意,他的这种写法也无法被普通读者理解,因而多数人都会产生这篇小小说“美化日军”很不舒服的强烈感受。

作者是河南汤阴县一中学的校长,教英语出身,并非专业作家,而且小小说就是网上消费品,文学价值很低,老胡理解不了这位作者为何要写这篇小小说。如果他是想搞创作探索,这种探索按理说也不应该由他这种非专业人士去做,因为即使有这个心,他显然也没有能力驾驭如此敏感的创作角度,他根本没有金刚钻揽这个瓷器活。

以一个日军大佐为小说的叙事视角,产生的感受必然是作者在与那个大佐共情,除非作者有高超的水平,能在这个过程中加入一些让读者能够心领神会其用意的几个关键笔触,然而能够在小说里起这种作用的文字似乎看不到。

老胡是无法确定这名作者真实用意的。至于成都新都区将这个小小说列为初三语文测试试卷文章,就更难理解了。即使这篇小小说有一些表层文字之下的意涵,我很难相信初三的学生能够理解那些意涵,所以把它列入初三语文测试试卷,我相信它所产生的大部分效果会是消极的。所以很多网友质疑这篇文章为什么能够选上去,这样的质疑是合理的。

现在成都新都区正在就此事展开调查,我希望,无论是对那名已被免职校长的调查还是对成都新都区考试试卷的调查,都要坚持客观性,一方面看实际效果,一方面也要听涉事人员的陈述。因为按常理说,在当前中国教育和互联网大的生态之下,很难设想有普通中学校长以及考试出题人会非常恶意并且如此尖锐地挑衅社会强大共识,这样拿鸡蛋往石头上撞,他们图的是什么呢?干坏事总得有个动机吧?所以调查人员要听他们的申辩,我还主张把他们的申辩公之于众,供网友们兼听。

我看到有人指出,说这篇小小说取了日军大佐的视角,形成作者与日军大佐共情的强烈印象,但是小说里面的基本情节并没有侮辱八路军。这篇小小说讲的故事很简单,就是一名日军大佐的儿子从日本来华看他,被八路军在武装护送的军车中“截了”,大佐为给儿子复仇,围住一小股遭遇的八路军猛打,但没想到儿子就在那些八路军中间,他等于亲手指挥杀死了自己的儿子。

就像那篇文章里写的,虽然都是大佐的视角和情感,但是小说里描述的八路军士兵们很守纪律,没有慌乱逃跑,而是且战斗且退到一个小山包上。八路军战士没有一人投降,全部战死,而且在最困难的时候他们一直保护那名日本青年。中间八路军的阵地上有人举起白衬衫示意投降,大佐以为是八路军内讧了,但最后证明举白衬衫的是他的儿子。而且八路军没有拿他的儿子做人质,提条件,并且在最后一刻也在日军的炮火中保护他。

所以说,故事情节确实没有侮辱八路军,但是所有叙述是通过日军大佐的眼睛和情感表述的。怎么看故事情节与表达情感之间的矛盾?我觉得互联网肯定会选择情感的角度,大多数人也会被情感带着走,但是作为文学创作的小说是否可以有这样的矛盾呢?这需要很专业的鉴定和评判。

老胡个人主张,网友们的感受必须得到尊重,因为创作与阅读是交流互动的过程,如果出现了一种压倒性的感受,这种感受就绝不会是无缘无故和虚妄的。但是我同时主张,要给专业鉴定留下空间,给依法据理处理这件事同样留下空间。我们决不允许颠倒基本是非的历史虚无主义,同时要听专业机构和专业人士们的意见:这样从头到尾以一名侵华日军大佐为视角,这在文学上是否是允许的。如果它从根本上就是错的,那么这样的错误该如何定性?中学把这篇文章拿到初三学生的面前,又应该如何定性?

绕过校园网分享限制,构建愉快的宿舍网络环境

By: prin
18 October 2020 at 16:45

最近大一新生们开学了,就有几位学弟来问我说,咱们学校的校园网要怎么才能开 WiFi 热点、能不能用路由器。回想一下当初我也折腾了好一段时间,本来想水篇博客的,后来不知道怎么的就咕咕咕了……正好借此机会分享一下。

其实吧,学校有的是办法搞你。除了强制一人一号、恶心的专用拨号客户端防共享以外,还能通过 IPID、TTL、时钟偏移检测,甚至是 DPI 深度包检测的方法来防私接,就看校方做得够不够绝了。当然破解的方法也有,但基本也不会让你好受。如果碰到这样的校园网,推荐你直接躺平,给这种垃圾网络交钱还不如开个无限流量套餐呢。

免责声明:日后你惹出祸来,不把师父说出来就行了.jpg

校园网的限制

先说一下我们学校校园网恶心的地方。接入网线后,你需要:

  1. 使用【软件A】进行第一次拨号:
    • 【软件A】会进行多网卡检测,如果你的系统里有一个以上的网络适配器,则拒绝拨号;
    • 上述网络适配器包括硬件网卡(USB 网卡、无线网卡)和虚拟网卡(各种虚拟机的虚拟网卡、TAP 网卡等);
    • 认证类型为 802.1x 认证。
  2. 使用【软件B】进行第二次拨号:
    • 【软件B】不检测网卡,但会拒绝在虚拟机中运行,如果宿主机开了 Hyper-V 还会误报;
    • 检测猎豹 WiFi、360 WiFi 等共享软件的进程;
    • 认证类型为 L2TP VPN。

而且这两个软件只能在 Windows 上跑,macOS、Linux 用户就干瞪眼吧。

其实说到这里,有些人应该都心里有数这俩软件是啥。不过我这里就不明说了,懂的都懂(x

接下来来看一下网上常见的破解方案,也就是路由器拨号

据说网上有很多人在卖所谓的「校园网路由器」,其实说白了就是刷了 OpenWRT 的路由器 + 破解校园网的插件。如果有现成的插件能用,那自然是最好,刷个固件也不是什么难事。但不幸的是,目前网上并没有针对【软件A】新版本的拨号脚本,而旧版本的已经不再适用于我们学校的网络了。除非另有大神愿意开发新版本的拨号脚本,否则这条路是行不通的。更何况我们这还要二次拨号,更是难上加难。

taobao-campus-routers

而如果想要在电脑上直接分享热点,第一会被检测多网卡,第二可能会被检测进程。

emmmmm……🤔

那么,让我们的网卡不被检测到不就行了?

使用虚拟机绕过网卡检测

这个方法其实是以前我偶然发现的。

当时我在用虚拟机捣鼓 Kali Linux,用了 VirtualBox 的 USB Passthrough 功能把 USB 外接网卡穿透进虚拟机给 Kali 使用。此时,宿主机操作系统里是看不见这个 USB 网卡的,设备管理器、网络适配器里都没有,就像不存在一样。不存在……嗯?

于是我翻箱倒柜找出了几年前凑单买的小米随身 WiFi,在虚拟机里一通操作:

vm-windows-xp-miwifi

嘿,成了!

如何配置,搜索「VirtualBox USB 网卡」即可。

看来虚拟机的 USB 直通确实可以避开校园网认证客户端的多网卡检测,而且客户端也并没有对 VirtualBox 做什么手脚(后来查了一下,据说【软件A】会干扰 VMware 的 NAT 网络共享服务……)。那么,能做的事情可就多了。

使用有线网卡桥接路由器

上面的方案能用是能用,但效率过于低下。

  1. 虚拟机系统没必要用 Windows,就算是 XP 也是性能浪费;
  2. USB 无线网卡孱弱的 WiFi 性能不足以满足我的需求;
  3. 每次开机都要启动虚拟机,操作繁琐复杂。

既然要用得爽,那肯定得把这些问题解决了。

首先,把 USB 无线网卡换成 USB 有线网卡,下联硬路由作为 AP。同时,把 Guest OS 换成轻量级的 Alpine Linux 并实现开机启动。完成后的网络拓扑图类似这样(综合考虑最后还是选择了两层 NAT):

network-topology

首先在虚拟机内安装 Alpine Linux 和对应的网卡驱动(注意不要用 virt 版本的内核,很多驱动都被精简掉了):

ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:002: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP qlen 1000    link/ether [mac addr] brd ff:ff:ff:ff:ff:ff3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP qlen 1000    link/ether [mac addr] brd ff:ff:ff:ff:ff:ff4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000    link/ether [mac addr] brd ff:ff:ff:ff:ff:ff

添加网桥,把 USB 网卡和虚拟机的虚拟网卡桥接到一起:

brctl addbr br0brctl addif br0 eth0brctl addif br0 eth1brctl show

启动网络:

ip link set dev eth1 upip link set dev br0 upip link show

删除之前分配给虚拟网卡 eth0 的 IP,并启动 DHCP 客户端为 br0 获取 IP 地址:

ip addr flush dev eth0udhcpc -i br0ip addr show

此时应该虚拟机内、有线网卡端都能访问网络了,可以通过 ping 测试一下。

可以用的话就永久保存网络配置:

vi /etc/network/interfaces
auto loiface lo inet loopbackauto br0iface br0 inet dhcp        hostname alpine-vm        bridge-ports eth0 eth1        bridge-stp 0

接下来把 USB 网卡和路由器的 WAN 口用网线连接起来,测试是否工作正常。如果想省一层 NAT,可以连到 LAN 口上并关闭路由器 DHCP 功能,就当个单纯的 AP 使用。不过我为了相对稳定的内网环境,还是选择了前者。

router-interfaces

一切正常的话,就可以愉快地使用 WiFi 啦。

如果想要让 Alpine 虚拟机开机后台运行,可以使用 VBoxHeadlessTray 这个程序。

virtualbox-alpine-booting

当前方案的不足之处

至此,我们的校园网网络共享方案已经算是比较完善了。

幸运的是,我校似乎并没有部署其他什么防私接技术,像这样用了半年多也一直相安无事,省下我不少流量费。

然而,这个方案还是有些不爽的地方。

  1. 作为主机的电脑和其他设备不在一个子网下;
  2. 电脑必须一直开着其他设备才能有网。

在这套方案下,路由器下联的设备对于主机是几乎不可见的(不然也绕不过校园网分享限制了)。你可以在其他设备上访问主机上的网络服务(VirtualBox 的 NAT 网络里宿主机的 IP 一般为 10.0.2.2,子网下的设备可以直接访问,效果和主机上访问 localhost 基本一致),但无法反过来访问子网里的其他设备。

虽然你也可以通过 VirtualBox 的端口映射实现一些变通的解决,比如把路由器的 22、80 端口映射到宿主机上方便访问,但 SMB 这类服务就不行了(Windows 访问 SMB 服务器时强制端口为 445,无法手动指定,要改只能改注册表),所以我完全无法在主机上访问子网下的 NAS 设备。

这也太难受了,继续改进!

既然这些软件都需要跑在一台 Windows 机器上,那我专门弄一台机器来跑校园网相关的东西不就好了吗?

入手双网口工控机软路由

于是我把目光投向了最近几年很火的软路由。

就像计算机有软件和硬件的区别,路由器也有「软」「硬」之分。通常我们在各个电商平台上搜索「路由器」这三个关键词所得到的几乎所有商品都属于硬路由,它是由路由器厂商基于自行开发或是开源的嵌入式设备操作系统,根据特定的硬件设备,设计出来的传统硬件设备。

而与之对应的软路由,是基于软件工具在普通的硬件上来实现传统路由器的功能。我们可以在旧电脑、工控机、开发板、服务器甚至是硬件虚拟机中安装软路由系统,然后通过强大的软件实现各种各样的功能。

——《从听说到上手,人人都能看懂的软路由入门指南》

一番比较后,我在某鱼上入手了一台二手的双网口工控机,安装 Windows 7 系统后,将上面的所有校园网相关的软件都转移到了这台低功耗小主机上。

至于为什么买双网口的机器,虽然 VirtualBox 只能直通 USB 网卡所以还是得外接,不过考虑到以后不用校园网了还可以原地变身软路由,所以不如直接一步到位买个好点的。毕竟现在 CPU 差不多的也就几百块,没必要省那点钱买个电子垃圾。

写在后面

这套方案我用了一年多,基本上没啥问题。24 小时开机、低功耗、子网设备无感知,爽到。

另外,不要怪我写得这么笼统,毕竟每个学校的校园网都不太一样,很难写出一篇普适性的教程。这篇文章充其量算个 PoC,证明一下只要能折腾,还是能捣鼓出舒适的宿舍网络环境的。

如果你是大佬,甚至可以写个软件实现一样的功能,隐藏网卡、软件 NAT 啥的。不过我是菜鸡,也不想在这上面花太多心思,所以就这样吧。又不是不能用.jpg

至于这么折腾值不值得,那就见仁见智了。至少我是愿意的:你不让我开热点我就不开,那我岂不是很没有面子。老子又不是没交钱,凭什么?

smiling-dog

最后,祝各位早日摆脱傻逼校园网。

谈一谈阿里云香港的宕机

By: James Guo
18 December 2022 at 20:48

2022 年 12 月 18 日,阿里云香港服务出现了异常。本站所用的香港服务器也中招,由于本人不正确的报警配置,导致部分域名没有正确切换解析,造成了一小部分用户最长半小时的不可用。然而,阿里云香港机房出现问题的时间远不止一个小时。根据我这里的监控,自北京时间 10:49 开始,我跑在香港阿里云上的 HTTP、HTTPS 服务就完全不可用了,直至 20:46 才恢复,共计宕机时间 10 小时。

事故回顾

本人是在早上起床后就发现阿里云香港服务器不可用。一开始以为是被神秘力量封锁了,但是看到报警邮件后发现,香港服务器在国外其他地区也不可用。

然后我就测了一下,发现主机能 ping,但无法 SSH 上去,HTTP/HTTPS 服务亦不可用。此外,yangxi.tech 网站服务也受到了影响。然后我登录了 AWS 中国区的 Route 53 去查看报警,结果发现 Route 53 上没有任何报警(我的 guozeyu.com 和 yangxi.tech 都在用中国区 Route 53)。查看最近的监控,发现我在 Route 53 上有一处配置错误,导致程序实际上没有在监控香港阿里云……于是修改了监测规则。此时我登录了 AWS 国际区,发现国际区的阿里云香港监控是在正常报警,发现是从 10:49 开始,全球所有监测点均不可用。

由于此时 AWS 中国区的报警已经被我改成正确的了,所以已经根据规则,在 DNS 层面进行自动宕机切换了;而且,我之前配置的 DNS TTL 也仅有 120 秒,所以我的所有网站应该在 11:20 前就已经完全恢复正常了。如果没有错误的报警规则,我的网站总共宕机时间也不会超过 5 分钟。

然后我登录了我自建的 Observium 监控,不出意外的看到了阿里云香港的机器已经宕机了。但我发现在宕机前,服务器的 CPU 是 100%。我就怀疑这是不是我自己服务器上某个程序卡死了,占用了所有资源,导致看起来 HTTP/HTTPS/SSH 服务都不可用了。

Observium 监控

此时已经 11:30 了,我还觉得这个是我自己的问题,毕竟我也没收到阿里云任何邮件、电话提醒。于是我登录了阿里云后台,尝试进行重启。此时我没有选择强制关机。结果,关机指令已经执行了 10 分钟,机器仍未关闭。平时我使用 GCP 时,如果关机指令执行超过两分钟,那么就会自动执行强制关机,所以此时执行了 10 分钟的关机就很离谱。然后我就尝试发工单,但没能进入到工单,被转到了在线客服。我向在线客服描述了问题后,无人回复。然后我又尝试发工单,结果工单也是无人回复。只是得到了机器人回复,说在关机时,Windows 会执行系统更新,有时需要 10-15 分钟。请在等待 20 分钟后联系客服。

大概又过了半个小时,机器终于成功关闭了,但在尝试多次后,机器无法启动。即便我点了启动,机器也会在一段时间后变成 “已停止” 状态。由于此时我还是以为是我自己的问题,不是阿里云的问题,我以为是刚刚强制关机导致系统损坏了,于是尝试给现有云盘打快照,尝试回滚。但离谱的事又发生了,我发现我根本无法打快照!快照的进度一直是 0%。

在 11:55,我终于收到了工单的回复:“您好!阿里云监控发现香港地域某机房设备异常,影响香港地域可用区C的云服务器ECS、云数据库polardb等云产品使用,阿里云工程师已在紧急处理中,非常抱歉给您的使用带来不便,若您有任何问题,请随时联系我们”。此时我才知道,这次的宕机可能不是我自己的问题,我放弃了自己尝试恢复服务。

该回复没有提供解决方案,也没有预计的恢复时间,可以说无非就是告诉了我 “这个是我们阿里云的问题”,对于恢复服务没有实质性帮助。

无力吐槽阿里云

本次事件最值得吐槽的地方是,我从未收到阿里云发来的有关通知。直至现在,我在邮箱、短信、站内信中没有收到任何阿里云关于此次服务宕机的提醒。我相信阿里云是有很多监控的,我坚信阿里云早在我发现我的服务出现问题之前,就已经知道了我的服务,以及其他人的服务器出现了问题了。但我却没有收到任何通知。唯一告知我阿里云存在问题的还是我发工单自己问出来的。

我觉得阿里云有必要向所有受影响的,以及可能受影响的客户发送相关提醒。在连续宕机了 8 小时,且仍未恢复的情况下,阿里云仍不主动通知客户,我实在是难以怀疑阿里云是否是故意不做通知,试图掩盖问题。

那还用阿里云吗?

会的。作为中国第一大,以及全球也能排的上前几的云服务商,我不怀疑阿里云的技术实力。我现在用阿里云主要是为了阿里云香港的 CN2 精品网,用于数据跨境(价格为 3元/GB)。目前在这方面也没有什么可替代的方案。专线也考虑过,太贵了,买不起。

但是,我不会把核心业务放在阿里云上了。放在 AWS 上我更安心一些。本次阿里云香港宕机只影响了我的网站一小会儿,也正是因为我没有把核心业务放在阿里云上。

本站是如何做到高可用的?

很简单,本站在四个地区,使用了四个不同服务商的服务器:

  • 德国 OVH
  • 北京 AWS
  • 香港 阿里云
  • 美国 Google Cloud

而且本站是纯静态网站。本站会在构建后,将构建产物分别同步到四个服务器上,没有主服务器的概念。本站通过 GeoDNS,将访客解析到最近的服务器,以降低延迟。在阿里云香港服务器宕机后,只需要停止响应解析即可。原本亚太地区解析到香港,现在亚洲会解析到北京,澳洲会解析到美国,这部分用户就被分流到可用的服务器上了。

本站还使用了 Route 53 的 Health Check 功能,可以实现接近实时的监控主机运行状态,在发现运行状态异常时,自动停止响应解析。目前,我的网站会在出现异常后一分钟内检测并识别到,并停止响应解析。相关 DNS 记录的时间设置在了 120 秒,因此服务发生不可用时,用户影响的时间不会超过 3 分钟。

零基础建站教程

By: James Guo
21 August 2022 at 23:40

基本概念

这个视频介绍了 “基本概念”,下方文字是这个视频的概要。如果你熟悉域名相关的概念,可以直接跳转到操作步骤

建站基本概念

域名

什么是域名?域名是互联网上的地址,用户通过域名来访问包括邮件、网站、App 在内的互联网资源。比如常见的以 .com 结尾的域名,以及新出现的 .xyz 和 .tech 结尾的域名。域名的价格大多在 40 到 200 元之间,具体的价格取决于域名后缀。

域名需要在注册商购买。那么如何选择域名注册商呢?这里推荐氧熙科技,通过与全球第七大注册商 PDR 合作,提供三百多种域名后缀的优惠注册。其特点是无需实名认证,支持支付宝或微信支付,自动发货,支持退款。

服务器

注册了域名之后,还需要有一个服务器,才可以建立自己的网站。服务器主要分为三种类型,包括虚拟主机、云服务器和独立服务器。这里推荐氧熙科技的虚拟主机,即适合新手,也适合专业人士使用。

其次是服务器位置,氧熙科技销售的虚拟主机可以选香港和美国加州两个位置,香港和美国加州的服务器都不需要备案。这里推荐香港主机,国内的访问速度更快。

软件

这里推荐WordPress建站软件,全球有 65.3% 的网站使用WordPress 作为 CMS,并且可一键安装到虚拟主机。

操作步骤

这个视频介绍了 “操作步骤”,下方文字是这个视频的概要。

域名和主机购买及使用

购买域名和虚拟主机

首先需要购买域名和主机。新购买的虚拟主机可能需要半个小时才可以使用,在可以使用时会收到邮件提醒。

修改域名服务器

主机创建成功后,需要前往域名注册商将域名的服务器修改为虚拟主机的域名服务器。

安装 WordPress

前往管理虚拟主机进入 cPanel 面板,进入 WordPress Manager 去安装 WordPress。安装时需要暂时将协议调整为 http:// 开头的协议。

SSL 证书

修改域名服务器 48 小时内,SSL 证书会自动签发,然后就可以使用 https:// 协议访问网站了。

云服务推荐及选择指南

By: James Guo
9 August 2022 at 09:40

本文推荐一些本人用过或者正在使用的云服务,持续更新。未来还会增加购买建议。

云计算 Compute/VPS/EC2

最便宜: Scaleway Stardust

0.5GB RAM ,每月 €0.36,限速 100Mbps 不限流量(该价格为仅 IPv6 的价格,约¥2.48)购买链接

内存存储CPU 核心数CPU 基线带宽价格
1GB10GB SSD1N/A100Mbps€0.36
  • N/A 代表共享核心

目前只有 Paris 1 和 Amsterdam 1 有。前往上方购买链接(如果跳转到了登录/注册页面,请在登录后再点一次,即可直达 Stardust 购买页面),如果遇到无货,就拉到最底部复制 API,用 API 创建机器一般可以绕过前端的无货购买限制。

性价比: BuyVM

1GB RAM ,每月 CA$3.50 ,1Gbps 不限流量(约¥17.77 )。购买链接。注意,BuyVM 的计费周期是每月 1 日,所以若购买时不是 1 日,那么首月的价格会有所变化(因为到下个月或下下个月的 1 日不是整一个月)。

内存存储CPU 核心数CPU 基线*带宽价格
1GB20GB SSD1N/A1000MbpsCA$3.50
2GB40GB SSD1N/A1000MbpsCA$7.00
4GB80GB SSD1100%1000MbpsCA$15.00
8GB160GB SSD2100%1000MbpsCA$30.00
  • N/A 代表共享核心,100% 代表每个核心均为独立核心

配置更高的主机价格是同比例增加的,可以参考 4GB 版本乘以 N。

付款时使用支付宝即可使用 CA$ 同币值缴费,相对要比美元便宜很多。本网站就在使用 BuyVM,如果你从美国西部访问此页面,那就会使用 BuyVM 的服务器。

BuyVM 还可以购买 Block Storage Slab,每 TB 仅需要 $5.00,最低每月 $1.25 就可以买到 256GB。

国内网络好: AWS Lightsail

0.5GB RAM ,每月$3.50 ,限流量 1TB ,可开日本、法兰克福、美国西部均可直连(约¥22.21 )购买链接

内存存储CPU 核心数CPU 基线流量价格
0.5GB20GB SSD15%1TB$3.50
1GB40GB SSD110%2TB$5.00
2GB60GB SSD120%3TB$10.00
4GB80GB SSD220%4TB$20.00

本网站就在使用 Lightsail,如果你从美国东部或者亚洲 (中国大陆外) 访问此页面,那就会使用 Lightsail 的服务器。Lightsail 可以免费附加静态 IPv4;IPv6 则是随机器附带的,暂不可保留或迁移。此外,Lightsail 的自动快照功能是免费的,可以作为自动备份。

与其他同类产品对比

Vultr/Linode/Digital Ocean 都是与 Lightsail 类似的产品,价格也与 Lightsail 十分接近。他们可能没有 CPU 基线的限制,但这也未必是好事,因为失去了限制更有可能受到邻居(同机器上其他用户)的影响。这里有一些优惠码:

大内存、多 IP: OVH VPS

2GB RAM,每月 $3.5(或 3 欧元),限速 100Mbps 不限流量,法兰克福可直连中国,但美国可能绕欧洲。OVH 两欧就可以买一个额外 IPv4 ,该 IPv4 没有月费,只要机器在 IP 就一直是你的。一个账户可以买 16 个额外 IPv4。美国区购买链接国际美元区购买链接国际欧元区购买链接

美国境内机器只有美国区可以购买,其他位置机器需去国际区购买。

内存存储CPU 核心数CPU 基线*带宽价格
2GB20GB SSD1N/A100Mbps$3.50/€3.00
2GB40GB SSD1N/A250Mbps$6.00/€5.00
4GB80GB SSD1N/A500Mbps$11.50/€10.00
8GB160GB SSD2N/A1000Mbps$23.00/€20.00
  • N/A 代表共享核心

本网站就在使用 OVH,如果你从欧洲访问此页面,那就会使用 OVH 的服务器。

永久免费: Google Cloud Compute Engine

美国 us-central-1us-west-1us-east-1 区域,1GB RAM ,30GB 最基础的盘,仅 IPv4 ,出站流量自费。这个试用期过了也免费!

内存存储CPU 核心数CPU 基线*流量价格
1GB30GB HDD212.5%按量计费永久免费

最灵活: AWS EC2

AWS 国际区AWS 中国区

本网站就在使用 EC2 (中国区),如果你从中国大陆访问此页面,那就会使用 EC2 的服务器。目前 AWS 中国区仅限企业注册。

与 Google Cloud 的 Compute Engine 和 Azure 的 VMs 对比

Google Cloud 的按量付费可能是三者中的最便宜的,此外个人感觉 Google Cloud 的操作页面使用起来相比 Azure 和 AWS 更简单。这几家提供的产品都大同小异,此外他们也都可以预留实例一年到三年,实现最大化折扣

与阿里云、腾讯云对比

最大的区别是计费模式。AWS 无论是国内版还是国际版,均默认使用后付费模式,即类似信用卡,每月支付上一个月结算的账单。而阿里云和腾讯云无论是个人用户还是企业用户,均使用预付费模式。哪怕使用的是按量付费的机器,竟然也需要提前充值;余额耗尽后会直接停机。所以用阿里云或腾讯云的按量计费服务之前,无比要保证有充足的余额,不然将欠费了将直接影响生产环境。

此外,阿里云和腾讯云在 API 使用上没有 AWS 方便。虽然 AWS 国内版在国内没有阿里云那么大的占有率,但由于 AWS 国内版和国际版 API 保持了一致,因此 AWS 的文档资源要远比阿里云、腾讯云丰富的多。

个人认为,AWS 国际版完胜阿里云、腾讯云的海外区域,AWS 国内版核心问题是支持的可用区太少,只支持北京和宁夏两个区域;Azure 国内版支持的区域比 AWS 国内版要多一点;阿里云和腾讯云在国内区域数量上是远多于 AWS 的。不过在网络方面,目前 AWS 国内版也是 BGP 接入,线路完全不比阿里云差。

数据跨境方面(指中国大陆境内与境外之间的跨境),阿里云提供了香港精品网、云企业网,这是 AWS 所没有的。

虚拟主机

这里推荐氧熙科技/TlOxygen 的虚拟主机,香港位置采用 CN2 GIA 线路,美国加州也是国内直连;均无需备案,购买后即用。相比之下,美国加州提供更多的流量和存储,带宽也更大。他们的虚拟主机还支持 SSH 访问、Let’s Encrypt 证书自动签发(不可 root)。香港/加州虚拟主机购买链接

氧熙科技的香港 CN2 GIA 虚拟主机测速

CDN

等待补充

DNS

等待补充

域名注册类

等待补充

从零开始建立自己的域名和企业邮箱

By: James Guo
10 April 2022 at 04:40

本文将带领你注册属于自己的域名,并获得以自己的域名结尾的专属邮箱。全程仅需不到 10 分钟[1]。你只需要一台可以上网的设备,支付方式(微信/PayPal/银行卡)和一个现有邮箱。通过本文提到的域名注册商注册的 .com 域名价格为 CN¥79.20/年,并且续费不涨价。该域名注册商免费提供企业邮箱服务,因此不需要额外付费。

[1]:由于全球 DNS 服务器同步需要时间,可能需要 24-72 小时后域名上的服务才能够使用。若注册 .cn 等中国域名还需要进行实名认证,需要额外的时间。其他国际域名(如 .com)则不需要实名认证。

注册域名

首先,你需要注册一个属于自己的域名。域名的注册门槛很低,基本在几分钟内就可以完成注册,并且包括 .com 在内的众多域名后缀均不需要进行实名登记。通常,大多数域名都是按年进行购买。

本文推荐的是 氧熙域名注册 (原 TlOxygen)。该注册商是本站站长亲自建立,是全球第 7 大的域名注册商 PDR Ltd. 的最高级代理之一,提供更多的支付方式和更低的价格。从这里购买域名可以帮助本站持续发展。并且本站域名注册提供了域名删除与退款服务、免费企业邮箱和域名锁等服务。

首先,前往 氧熙域名注册主页(也可以浏览器地址输入 yangxi.tech 前往),进行域名搜索。比如,如果想要注册 guozeyu.com,只需要在搜索框里输入这个域名并点击搜索。如果你不确定想要注册什么后缀,那么也可以不输入后缀,如 guozeyu。如果你更习惯英语界面,或者需要以美元计费的结算方式,请前往 International Version

在首页搜索想要注册的域名查看搜索结果

可以看到,咱们心仪的域名已经被注册了。但是页面下方可以看到更多的 “其他可注册的匹配域名”。

选择一个域名

我们这里选择 guozeyu.online。注意划线价为域名续费的价格,为了可以方便地给域名续费,建议选择续费价格较低的域名。比如 .com 域名续费只需 CN¥79.20/年(国际版为 US$12.59/年),而 .online 的续费价为 CN¥270.00。我对域名的价格一向非常透明,我承认这绝不是市面上最低的价格。下表列出了一些注册商 .com 域名的续费价格

注册商美元/年人民币/年
氧熙/TlOxygen13.7987.60
阿里云万网 [2]10.9979.00
DNSPod [2]-72.00
NameCheap14.58-
GoDaddy19.99-
Cloudflare Registrar [3]9.15
NameSilo10.95
Google12.00

[2]:阿里云万网/DNSPod 注册 .com 域名需要实名认证,可能需要几天后域名才能够正常使用
[3]:Cloudflare Registrar 上注册的域名不支持修改 DNS 解析商、NS 记录,以及粘附记录(Glue Record)

完整的价格列表:中国大陆(人民币)International Version (USD)

注意,本文后续的内容仅适用于在氧熙注册的域名。在其他注册商注册的域名配置有所不同。此外,并不是所有注册商都免费提供 DNS、企业邮箱和域名转发服务。

然后进行结账。结账时建议选择免费的 “隐私保护” 功能,这样你的注册信息(包括邮箱、手机号、地址)就不会公开:

开启 “隐私保护” 功能,并选择 “创建账户”

然后填写注册信息。请确保注册信息是有效的(可以通过电子邮件联系到你),否则域名注册可能会失败。注册完成后即可选择支付方式了。目前支持的支付方式有微信支付、银行卡、PayPal

使用英文填写注册信息选择支付方式,这里以微信支付为例

付款完毕后,会自动跳转到支付成功页,点击 “继续管理订单” 进入后台管理页面。

支付成功

此时,你就可以看到你新注册的域名了。

点击你刚刚注册的域名

配置 DNS

点击你刚刚注册的域名,然后前往 DNS 管理菜单,点击 “管理DNS” 以激活 DNS:

点击 “管理DNS” 以激活 DNS

如果你看到 “您即将提交的信息不安全” 提示,请选择 “仍然发送”。随后看到如下页面即说明已经激活了:

DNS 管理界面

配置企业邮箱

此时我们已经拥有了域名,但该域名下还没有任何服务。我们首先配置企业邮箱,实现任何发往 @guozeyu.online 的邮件都转发到自己的邮箱里。这样有很多好处,比如你可以在注册微博的时候使用 weibo@guozeyu.online,在注册 GitHub 时使用 github@guozeyu.online,这样可以区分不同服务商发来的邮件;也可知道是谁卖了自己的邮箱信息,给自己发送垃圾邮件。

前往电子邮件菜单,点击 “管理电子邮件” 以激活企业邮箱:

点击 “管理电子邮件” 以激活企业邮箱

如果看到 “待验证域所有权 (Pending Domain Ownership Verification)”,则说明 DNS 尚未完成激活,请在 24-72 小时后尝试。新注册的域名默认使用我们提供的 DNS 服务器,邮件记录已经自动配置好了,所以无需手动添加记录。同时,你也可以点击 “设置 (Settings)”,选择 “修改语言偏好 (Modify Language Preference)” 然后选择 “Chinese (Simplified)” 以切换语言到简体中文。此外,如果你知道自己在做什么,也可以将域名换到其他 DNS 服务商,手动配置 DNS 记录。

待 24-72 小时,完成域名所有权验证后,你将看到如下页面,这时我们选择 “添加只转发帐户”:

选择 “添加只转发帐户”

这里我们用户名输入字母 i,“转发至” 输入自己的邮箱。这里只是拿我的邮箱演示。

填写必要转发信息

添加成功后,发往 i@guozeyu.online 的邮件就会转发到你刚刚配置的 “转发至” 邮箱了。但发往其他用户名的邮件依然会被拒收。此时我们需要配置 Catch-All:

点击 “邮件” 菜单中的 “管理 Catch-All”

然后选择 “转发到以下用户/账户”,并输入刚刚设置的用户名 i,然后点击 “应用” 即可。

配置 Catch-All

配置域名转发

目前,浏览器里的网站是无法访问的,因为我们还没有配置用于 Web 的服务器,也没有建立自己的网站。但我们可以配置域名转发,将访问到域名的的流量跳转到其他 URL。比如,你可以设置跳转到自己的微博、GitHub 等网站。具体操作如下:

前往域名转发菜单,点击 “管理域名转发” 以激活域名转发:

点击 “管理域名转发” 以激活域名转发

此时,你可以配置要转发的域名和要转发到的地址:

这里以跳转到我的 GitHub 页面为例

同时,也可以选择高级设置。我建议关闭 “URL掩蔽 / 重定向 / URL隐藏”。

建议关闭 “URL掩蔽 / 重定向 / URL隐藏”

同样,该配置需要 24-72 小时后才能生效。

总结

本文介绍了如何注册属于自己的域名,建立以自己域名结尾的的企业邮箱,以及配置域名转发。后续的文章将会更新如何建立属于自己的个人网站。可以点击页面顶部的关于按钮订阅本网站,这样就不会错过后续的内容啦~

Azure DNS、NS1、Constellix,三家海外 GeoDNS 服务商对比

By: James Guo
15 November 2018 at 11:45

最近 DNSPod 的解析服务器宕机了一段时间,导致许多 DNSPod 用户的网站无法访问。本文将推荐几个提供 100% SLA 的海外 GeoDNS 服务,可用于替代不稳定的 DNSPod。并介绍一下使用多家 DNS 提供商来提高服务可用性的方法。

本文包括 Azure DNS、NS1、Constellix 的全面对比。

简介

这次推荐的三家 DNS 均是海外的支持 GeoDNS 的服务商,并都支持 Anycast。其中的 Azure DNS 和 NS1 在国内的速度都非常好,是直接走的香港/亚洲线路,平均延迟能够在 50ms 以内,不输国内 DNS 服务商。而这三家的海外速度都是极快的,可以秒杀 DNSPod、CloudXNS、阿里云解析等国内提供商。

关于 GeoDNS,精细度最好的是 Constellix:支持国家、省、市(包括中国的省、市),甚至是 AS 号(可以实现分运营商解析)、IP 段。NS1 支持国家、美国的州,也支持 AS 号、IP 段。至于 Azure DNS,通过使用 Traffic Manager,可以支持国家、部分国家的州、IP 段。由于都支持 IP 段,所以理论上支持任意精度的 GeoDNS 了。

至于价格,NS1 提供了免费额度(每月 500k 请求),对于小流量网站而言是够用的,可一旦超出这个免费额度,那么收费是很高的:**$8/百万个请求**。相比而言,Azure DNS 和 Constellix 的价格都很便宜了,其中 Constellix 有 $5/月 的起价。

使用多家 DNS 服务商

同时使用多家 DNS 服务商是可行的,只要使用服务商的 DNS 记录保持相同即可。这要求所使用的服务商能够配置主域名的 NS 记录(建议但不是必须)。这次介绍的 Azure DNS、NS1、Constellix 三家,以及以前介绍过的 Route 53、Google Cloud DNS、Rage4、阿里云解析均可配置主域名的 NS 记录(其中阿里云解析和 Azure DNS 只能额外添加第三方记录;其他几家可以完全自定义 NS 记录)。而 Cloudflare 以及国内的 DNSPod、CloudXNS、阿里云解析由于不能配置主域名下的 NS 记录,意味着你不能很好的进行 DNS 混用。

要使用多家 DNS,有两种实现方法:主服务商和从服务商方式以及两个主服务商方式。完成配置后,将多家的 NS 服务器配置到权威 NS 记录以及域名注册商下的 NS 列表。

使用两家服务商会增加配置难度,但可以提高 DNS 服务的稳定性。如最近的 DNSPod 宕机以及 2016 年的 Dyn 宕机所导致的众多网站无法访问,均是因为众多网站仅使用了一家 DNS 提供商。如果使用了多家 DNS 提供商,则网站仅会在所使用的所有服务商均发生宕机事故时才会无法访问,而这显然发生概率很小。

主服务商和从服务商

要想这样配置,需要从服务商支持使用 AXFR 从主服务商获取记录,还需要主服务商也支持 AXFR 传输。其中,NS1、Constellix 均可作为主服务商或从服务商,意味着你可以同时使用这两家,并选择任何一家作为主服务商,另一家作为从服务商。

两个主服务商

你也可以使用两个主服务商,并保持所有的记录(包括主域名下的 NS 记录)相同(建议,但不是必须)。建议也将 SOA 的序列号同步。

样例

github.com. 这个域名就同时使用了 Route 53 和 DYN 的服务。这可以使用 dig 工具验证。

$ dig github.com ns +short  ns1.p16.dynect.net.  ns2.p16.dynect.net.  ns3.p16.dynect.net.  ns4.p16.dynect.net.  ns-1283.awsdns-32.org.  ns-421.awsdns-52.com.  ns-1707.awsdns-21.co.uk.  ns-520.awsdns-01.net.

经检验,在两家 DNS 服务商也配置了相同的记录。

$ dig @ns1.p16.dynect.net. github.com a +short  13.229.188.59  13.250.177.223  52.74.223.119  $ dig @ns-1283.awsdns-32.org. github.com a +short  13.229.188.59  13.250.177.223  52.74.223.119  

下面逐个介绍一下这三家 DNS 提供商。

所有 DNS 测评一览(还包括 CloudXNS、Route 53、Cloudflare、Google Cloud DNS、Rage4 以及阿里云解析)

Azure DNS

微软 Azure 产品线下的 DNS 服务。使用 Anycast 技术,并且国内能够直接连接到香港/亚洲节点,所以速度很快。

值得注意的是,类似 Route 53,Azure 所分配的四个服务器使用的是不同的网段、不同的线路,可能有更高的可用性。

注意:Azure 的 DNS 的分区解析可能不兼容 IPv6,这意味的解析结果可能会被 Fallback 到默认线路。

  • 国外速度:★★★★☆,36 ms
  • 北美速度:★★★★☆,27 ms
  • 亚洲速度:★★★★☆,39 ms
  • 欧洲速度:★★★★☆,29 ms
  • 国内速度:★★★★☆,49 ms
  • 最短 TTL:0s
  • 国内分区解析:★★★★★,支持配置到中国,支持 IP 段配置(配合 Traffic Manager)
  • 国外分区解析:★★★★★,支持配置到大州、国家以及部分国家的州,支持 IP 段配置(配合 Traffic Manager)
  • DNSSEC:不支持
  • IPv6:支持
  • 记录类型:支持 A、AAAA、CNAME、NS、MX、TXT、SRV、CAA、PTR。
  • 根域名 CNAME 优化:不支持
  • 优先级:支持(配合 Traffic Manager)
  • 自定义 NS:仅支持添加额外的 NS
  • 价格:每个域名 $0.5/月,**$0.4/百万个请求**
  • 用例 A 价格:**$0.90**
  • 用例 B 价格:**$10.50**
  • SLA:100%

NS1

NS1 也使用了 Anycast 技术,并且国内能够直接连接到香港/亚洲节点,所以速度很快。

  • 国外速度:★★★★★,23 ms
  • 北美速度:★★★★★,9 ms
  • 亚洲速度:★★★★☆,40 ms
  • 欧洲速度:★★★★★,20 ms
  • 国内速度:★★★☆☆,65 ms
  • 最短 TTL:0s
  • 国内分区解析:★★★★★,支持配置到中国,支持 IP 段配置。
  • 国外分区解析:★★★★★,支持配置到大州、国家、美国的州,支持 AS 号、IP 段配置。
  • DNSSEC:支持
  • IPv6:不支持
  • 记录类型:支持 A、AAAA、AFSDB、CAA、CERT、CNAME、DS、HINFO、MX、NAPTR、NS、PTR、RP、SPF、SRV、TXT。
  • 根域名 CNAME 优化:支持
  • 优先级:支持(配合 Traffic Manager)
  • 自定义 NS:仅支持添加额外的 NS
  • 价格:每月前 500k 请求免费,超出部分 $8.0/百万个请求
  • 用例 A 价格:**$4**
  • 用例 B 价格:**$156**
  • 用例 C 价格:**$156**
  • SLA:100%

Constellix

此 DNS 以 GeoDNS 优势著称,使用了 Anycast 保证最低的延迟。

Constellix 三组有六个 DNS 服务器,每一组使用了不太相同的线路。

  • 国外速度:★★★★☆,31.51 ms
  • 北美速度:★★★★★,9.81 ms
  • 亚洲速度:★★★★☆,48.87 ms
  • 欧洲速度:★★★★★,23.77 ms
  • 国内速度:★★☆☆☆,108.9 ms
  • 最短 TTL:0s
  • 国内分区解析:★★★★★,可以精确到每一个省、市,可以配置 ASN 以实现运营商分区解析。
  • 国外分区解析:★★★★★,精确到了各个国家、省、市
  • DNSSEC:不支持
  • IPv6:支持
  • 记录类型:更加齐全,只支持 A、AAAA、CNAME、NS、MX、TXT、SRV、HINFO、NAPTR、CAA、CERT、PTR、RP、SPF。
  • 根域名 CNAME 优化:支持
  • 优先级:支持
  • 自定义 NS:支持
  • 价格:第一个域名 $5/月,此后每个域名 $0.5/月。**$0.4/百万个请求**。分区解析 $0.6/百万个请求
  • 用例 A 价格:**$5.39**
  • 用例 B 价格:**$14.90**
  • 用例 C 价格:**$19.30**
  • 统计功能:支持,可以看到每个国家、城市的请求数。甚至还可以启用日志,看到每一个请求的客户端 IP、IP 数据包类型等等。
  • SLA:100%

Cloudflare Argo 与 Railgun 对比测试,CDN 加速的黑科技

By: James Guo
20 May 2017 at 19:52

本网站曾经一直将国外解析到 CloudFront 实现为国外加速,最近看到 Cloudflare 支持了 Argo 这一新功能,于是就把国外的 CDN 从 CloudFront 换到了 Cloudflare 并开启了 Argo 来试一下效果,官方宣称无缓存时能明显降低 TTFB(首字节延迟),有缓存时也能提高缓存命中率。本文还会将其与 Cloudflare 的另一个企业级的 CDN 加速黑科技——Railgun 进行对比。

Cloudflare Argo

提升缓存命中率,Argo Tiered Cache

Cloudflare 的节点很多,但是节点太多有时不是一件好事——大多数 CDN 之间的节点是相对独立的。首先要先明白 CDN 的工作原理,CDN 通常不会预先缓存内容,而是在访客访问时充当代理的同时对可缓存的内容缓存。就拿本站来说,本站用的是香港虚拟主机,如果有英国伦敦的访客访问了我的网站,那么由于我的网站是可被缓存的,他就会连接到伦敦的节点并被缓存在这个节点。那么如果是英国曼彻斯特的访客访问了呢?由于 CDN 在曼彻斯特另有节点,访客会直接连接到曼彻斯特节点,然而曼彻斯特上并没有缓存,所以该节点会回源到香港。而显然的是,如果曼彻斯特回源到伦敦,使用伦敦的缓存会更快。 综上,如果能选择性的从其他节点上获取资源,TTFB 会更低,缓存命中率也会相应提高。但是一般的 CDN 不会去这样做,因为节点相互独立,节点之间并不知道对方是否已经缓存。一般的解决方法是节点与源站之间先经过为数不多的几个节点,这几个节点可能只是分布在几个州,比如整个欧洲就只有一个这种节点。这样的话,伦敦的访客访问后,同时也被欧洲的那个节点缓存。这样,当再有欧洲其他地区的访客连接到一个没有缓存的节点时,这些节点会直接提供欧洲的那个节点的缓存。CloudFront 和 KeyCDN 就利用了这样的技术。 Cloudflare 是如何实现的他们官方没有详细说明。然而在实际测试时,并没有观察到缓存率上有明显提升,远比不过 CloudFront 的效果。下图是通过这些节点测试的 TTFB,请求是逐个发起的。

Cloudflare 上可被缓存的内容的首次访问测试,启用了 ArgoCloudFront 对比,比 Cloudflare 要强

降低 TTFB,Argo Smart Routing

通常情况下,节点与源站的连接是直接的,这之间的网络很大程度上取决于主机的网络接入。然而,有了 Argo Smart Routing,Cloudflare 会使用自己的线路。图片来自 Cloudflare.com。

Argo Smart Routing 动态图

国外请求测试地址,其中的 via 字段就是 Cloudflare 与本站建立的连接的 IP 地址。通过 GeoIP 服务查询,发现是香港的 IP。Cloudflare 将自己的节点之间都建立了长连接,并在离源站最近的服务器上与源站也提前建立了连接。这样,就能大大降低首次连接所需要的时间。如果回源是 HTTPS 的,那么效果更明显。我的另一个测试地址是没有开启这个功能的,用来对比,它的回源与本站建立的 IP 就不是香港的。

使用 Flexible SSL 的 TTFB 对比

没有启用 Argo启用了 Argo

使用 Full SSL 的 TTFB 对比

没有启用 Argo 并且是 Full SSL启用了 Argo 并且是 Full SSL

速度的确有一定的提升,但是不是特别明显,而且似乎开启了之后一些节点反而更不稳定——原本都是比较稳定的一个速度,开了这个之后一些节点反而忽快忽慢。看来提速的最佳方法还是半程加密。

Cloudflare Railgun

Railgun 是 Cloudflare 专门为 Business 和 Enterprise 企业级客户提供的终极加速方案。要使用它,先需要升级网站套餐为 Business 或 Enterprise,然后还需要在服务器上安装必要软件并在 Cloudflare 上完成配置。这相当于是一个双边加速的软件,其实现原理是让服务器与 Cloudflare 建立一个长久的 TCP 加密连接,使用 Railgun 独有协议而不是 HTTP 协议,这样显然能减少连接延迟。此外,它还会对动态页面缓存:考虑到大多动态页面都包含了大量相同的 HTML 信息,在用户请求一个新的页面时,服务器将只发送那些变化了的内容。这相当于一种多次的 Gzip 压缩。

开启 Railgun 截图

官方宣称,使用 Railgun 能够实现 99.6% 的压缩率,并实现两倍的速度。实际体验也确实如此:

启用了 Railgun 并且是 Full SSL

Railgun 的加速效果还是非常之明显的,明显强于 Argo。

总结

Argo 并没有想象中的那么好用,而且 $5/mo 的起步价和 $0.10/GB 的流量并不便宜。当然也有可能需要一段时间 Argo 去分析线路延迟才能更好的进行优化。本文预计将在一个月后补充更新。 Railgun 效果还是极其显著的,但是它需要企业版套餐才能够使用,并不亲民。

动态内容

延迟:Google Cloud CDN 延迟最低,Cloudflare Railgun 仅次。 流量:对于普通的动态 CMS,Cloudflare Railgun 大约能节省 10 倍以上流量,Google Cloud CDN 是做不到的。 我在国内外几家全站 CDN 对比中测试 Google Cloud CDN 时,其极低的 TTFB 令我惊讶,仔细研究后发现节点是与主机之间建立长连接,而且会保持很长一段时间,此外所有网络都走 Google 内网,本质上与 Argo 和 Railgun 类似。所以目前服务动态内容最快的应该还属 Google Cloud CDN 了,Railgun 基本与之相当。

静态内容

CloudFront 自带的 Regional Edge Caches 在缓存静态内容提高缓存命中率上要比 Argo Tiered Cache 和 Railgun 好,但是 Argo Smart Routing 在服务于动态的不可缓存的内容上更显出优势。Railgun 和 Google Cloud CDN 除了会在边缘节点缓存之外没有其他专门的优化。

关于本站的分区解析

本站的解析没有使用 Cloudflare 而是 自建的 DNS,因为我的 Cloudflare 域名是通过 CNAME 接入的。Cloudflare 分配的 IP 在很长时间内都不会变动,所以我直接把其 IP 设置为了海外线路。使用自建的DNS是为了在备案后,为国内分区解析配置 CDN 线路。 PS: 大家应该都知道启用这个功能后并不会提升国内连接 Cloudflare 的速度,如果想要用 Cloudflare 并且希望国内快一点,源站最好就用美国西岸的。

关于建站和服务选购的一些建议

By: James Guo
7 January 2017 at 07:00

建立网站、建立软件(或游戏)的服务器等,可能会有很多纠结的地方,也有很多坑,这篇文章根据我个人的经验来帮助大家选择最适合自己的方案,以及一些建议,在最后列出来一些我推荐的服务。

服务的三种类型

一般的,建站所需要购买的服务也是属于这三种服务之间的。从 SaaS、Paas 到 IaaS,依次从使用简便到复杂,从可拓展性低到高。了解这三种服务类型有助于选择合适的服务。

  • SaaS,软件即服务:比如 WordPress.com 等提供了一整套服务(包括了域名、主机、平台和软件)的,就算是 SaaS,这种服务对于初学者使用起来最方便,专业人士也能玩出不少花样,但可拓展性受到软件的限制,通常这种服务都有较高的可用性,并且是分布式的。
  • PaaS,平台即服务:比如基于 cPanel、Plesk 面板的虚拟主机,你可以在平台上安装已有的开源软件,或者将自己软件代码上传,总体使用几乎和 SaaS 一样简单,使用特定的操作系统和代码语言,安装各种程序。PaaS 有普通的也有分布式的,后者的在可用性和数据保障,以及可拓展性上都要好于前者。
  • IaaS,基础设施即服务:包括 VPS、独立服务器、云 VPS 和共有/私有云服务器。VPS 和独立服务器相比主要差距是在配置上,包括 CPU、内存、硬盘等,后者的配置会高很多,可用性方面没有太大区别。云 VPS 和共有/私有云实际上是基于云端分布式的 VPS 和独立服务器,一样的,他们的在可用性和数据保障,以及可拓展性上都要好于 VPS 和独立服务器。IaaS 需要自己选择操作系统,所有的服务和软件都是自己配置,通常都给你 root 权限。

服务的选择

  • 位置选择之国内:首先需要考虑的是国内还是国外?如果选择国内,首先你得域名需要经过备案,这可能需要将近一个月时间,这无疑为建网站增加了不少成本。而且国内的服务器普遍较贵。不过如果要选择国内,我比较推荐的主机是新浪的 SAE,它价格很低,是按需付费,并且还有免费额度,它属于分布式的 PaaS,提供高可用率的服务,支持 Docker 容器、DDOS 防御。不过 SAE 对于非企业用户不提供 CDN 和自定义域名 HTTPS,我推荐你使用 UPYUN 来实现 CDN 和自定义域名 HTTPS 功能。国内的优点:可以保证网络延迟低,并能符合目前的一些法律政策。
  • 位置选择之国外:不少亚洲的主机(包括但不限于香港、日本、新加坡)从大陆连接会 “绕道”,导致延迟很高,购买前需要先了解清楚,香港便宜的共享主机推荐 TlOxygen。亚洲的主机普遍网络带宽不大,流量比较少,如果不选择亚洲的,那就建议先选北美的。国外的主机通常会有比国内很多主机更低的价格,更好的国际带宽。 如果有条件,可以配置多个服务器,两个服务器推荐的解决方案是亚洲 + 北美东岸,并将亚洲和大洋洲都指向亚洲,其余的都指向北美。如果有条件配置更多服务器,那么可以同时配置北美东岸 + 北美西岸 + 欧洲 + 亚洲的四个服务器并分区解析,就我的实际测试而言,把非洲指向欧洲,把大洋洲指向北美西岸能达到最快的速度。

一些可能需要的特性:基于要实现的不同功能,可能需要在以下方面有要求,在选择服务的时候需要优先考虑。

  • 高数据可靠性:几乎所有的网站或是和网络相关的软件,都需要存储用户的数据,所以高数据可靠性是十分重要的。所以磁盘阵列为 RAID1 和 RAID10 是首选。而且用户数据的备份也是十分重要的,可以存储在第三方如 AWS S3。一些服务提供商提供了备份功能,其实也是能够保证高数据可靠性。
  • 防御攻击的能力:攻击的成本已经越来越低,种类也很多。通常最难防御的攻击种类是 DDOS,其余的几乎都可以通过软件实现。建议在选择服务器时就要选择有 DDOS 防御的服务器,或者直接使用 CloudFlare 之类的基于第七层的防御。
  • 可伸缩,按需付费:最简单的例子就是网络的计费方式不是按照带宽计费,而是按照每 GB 多少钱计费,不限带宽,能够避免不必要的支出的同时还会让用户享受最快的速度。同样的道理,按照系统资源的使用来计费的模式是最好的选择。一般的,基于云端的 PaaS 都是这种计费方式,IaaS 则需要自行配置来实现资源不够时升级配置,资源过剩时回收配置(也可以是 Auto Balancing),所以按小时(或分钟、秒种)级别的计费 IaaS 计费方式最适合这样伸缩以达到按需付费的目的。
  • 网络可靠性:网络可靠性也十分重要,如果服务的网络不好,那么将极大的影响用户体验,导致用户不可以使用服务。
  • SLA:重要的服务都需要 SLA,SLA 能给你承诺服务的可用率,当服务没有满足承诺时,服务提供商会给你赔偿。
  • IPv6:就目前来看,如果不支持 IPv6 也没什么问题。但是能有原生的 IPv6 支持总比没有好,而且现在正在有越来越多的运营商支持 IPv6,使用 IPv6 有可能会有更低的网络延迟,同时配置 IPsec 也有优势。

其他

  • 域名相关:不管你是选择使用虚拟主机、VPS 或是独立服务器,通常你还需要自己买一个域名,配置 DNS 解析等等,推荐免费的 DNS 解析有 CloudFlare、Rage4,国内还有 CloudXNS,一些虚拟主机商以及域名注册商也提供免费的解析,但不如前面介绍的那几个(详细关于 DNS 的介绍请见此)。如果选择使用 CloudFlare,那么你还可以在 DNS 后台选择开启 Proxy(CDN),这样能为你的网站缓存并加速(但实际上对于国内来说有可能反而减速),并获得一些基础的 DDOS 防护,并隐藏你的源站 IP 地址。
  • 域名注册商的选择:首先,要保证总的域名保有量大;其次,要域名后缀种类齐全;第三,最好能附加免费的企业邮箱和高级的隐私保护;第四,域名注册后要能删除并退款,防止手抖注册错了;第五,价格不能太贵。在我做的 TlOxygen 这个公共域名注册服务上,使用的域名注册商是全球前十大域名注册商;有 500 多种域名后缀,数量超过 GoDaddy;赠送企业邮箱,可以配置无限个转发邮箱,甚至还可以配置子域名邮箱,还支持 DKIM;大多数种类域名删除可以拿到退款;价格比 Godaddy 便宜很多,续费价格没那么坑,基本上是 7 折;域名隐私保护只有 5 元,但功能比很多免费的高级:即使开了域名隐私保护,别人给你发邮件时,会收到表格,还能继续填写表格与你联系。

一些服务商的推荐

排列的顺序只是与添加在这个列表里的时间有关,新添加的会被放在后面。此处添加的服务商全是个人的推荐的,以后还会持续更新。 标注列表:

  • (6):全面支持 IPv6
  • (6):部分支持 IPv6
  • (D):支持免费 DDOS 防御

SaaS

建立网站

CDN

以下 CDN 都支持 HTTPS 与 IPv6

DNS

数据存储

代码托管

SaaS 还有很多,太多的东西都是 SaaS 了,所以这里只能算举几个例子。

PaaS

虚拟主机

云主机

或者说是分布式的虚拟主机,但是有独立的 CPU 和内存资源。

可自选软件语言的/Docker 容器

IaaS

VPS/Cloud

标注列表:

备注

  1. SAE 的 IPv6 的激活需要额外的月付
  2. OVH 的 SSD VPS 暂时不支持 IPv6
  3. 在购买某种配置时,若告知你是共享 CPU,那么还是共享 CPU
  4. OVH 只有 Cloud VPS 是基于云端的 VPS
  5. Google 官方并没有明确说明提供 DDOS 防御,但实际上是有能力防御的
  6. Vultr 的 DDOS 防御需要额外购买,且仅部分地区支持,最大防御仅 10Gbps

DNS 域名解析系统详解——基础篇

By: James Guo
24 December 2016 at 20:18

DNS(域名解析系统)的工作使命,就是服务于与域名相关的内容的底层。是域名(如:example.com)的核心组成部分。绝大多数与域名相关的东西,都离不开它。比如:

  • 访问一个网站,通常是输入一个域名(如 https://www.example.com
  • 发送邮件@ 后面是主机名,而主机名通常是个域名(如 webmaster@example.com

整个 DNS 具有复杂的层次,这对刚开始购买域名的人有很大的疑惑。本文将详尽的介绍 DNS 的工作原理,有助于更深刻的理解。本文将介绍:

  1. 在客户端上是如何解析一个域名的
  2. 在 DNS 缓存服务器上是如何逐级解析一个域名的

同时还包含:

  1. 域名的分类
  2. 什么是 Glue 记录
  3. 为什么 CNAME 不能设置在主域名上

先从本地的 DNS 开始讲起。

本地 DNS

本地的 DNS 相对于全球 DNS 要简单的多。所以先从本地 DNS 开始讲起。 127.0.0.1 常被用作环回 IP,也就可以作为本机用来访问自身的 IP 地址。通常,这个 IP 地址都对应着一个域名,叫 localhost。这是一个一级域名(也是顶级域名),所以和 com 同级。系统是如何实现将 localhost 对应到 127.0.0.1 的呢?其实就是通过 DNS。在操作系统中,通常存在一个 hosts 文件,这个文件定义了一组域名到 IP 的映射。常见的 hosts 文件内容如下:

127.0.0.1       localhost::1             localhost

它就定义了 localhost 域名对应 127.0.0.1 这个 IP(第二行是 IPv6 地址)。这样,当你从浏览器里访问这个域名,或者是在终端中执行 Ping 的时候,会自动的查询这个 hosts 文件,就从文件中得到了这个 IP 地址。此外,hosts 文件还可以控制其他域名所对应的 IP 地址,并可以 override 其在全球 DNS 或本地网络 DNS 中的值。但是,hosts 文件只能控制本地的域名解析。hosts 文件出现的时候,还没有 DNS,但它可以说是 DNS 的前身。 如果需要在一个网络中,公用同一个 DNS,那么就需要使用 IP 数据包向某个服务器去获取 DNS 记录。 在一个网络里(此处主要指本地的网络,比如家庭里一个路由器下连接的所有设备和这个路由器组成的网络),会有很多主机。在与这些主机通信的时候,使用域名会更加的方便。通常,连接到同一个路由器的设备会被设置到路由器自己的一个 DNS 服务器上。这样,解析域名就不仅可以从 hosts 去获取,还可以从这个服务器上去获取。从另一个 IP 上去获取 DNS 记录通过 DNS 查询,DNS 查询通常基于 UDP 或者 TCP 这种 IP 数据包,来实现远程的查询。我的个人电脑的网络配置如下,这是在我的电脑连接了路由器之后自动就设置上的:

网络配置截图

重点是在路由器和搜索域上。 我的电脑的主机名(也是电脑名)设置的是 ze3kr,这个内容在连接路由器时也被路由器知道了,于是路由器就给我的主机分配了一个域名 ze3kr.locallocal 这个一级域名专门供本地使用。在这个网络内所有主机通过访问 ze3kr.local 这个域名时,路由器(10.0.1.1)就会告知这个域名对应的 IP 地址,于是这些主机够获得到我的电脑的 IP 地址。至于搜索域的作用,其实是可以省去输入完整的域名,比如:

$ ping ze3krPING ze3kr.local (10.0.1.201): 56 data bytes64 bytes from 10.0.1.201: icmp_seq=0 ttl=64 time=0.053 ms--- ze3kr.local ping statistics ---1 packets transmitted, 1 packets received, 0.0% packet lossround-trip min/avg/max/stddev = 0.053/0.053/0.053/0.000 ms

当设置了搜索域时,当你去解析 ze3kr 这个一级域名时,便会先尝试去解析 ze3kr.local,当发现 ze3kr.local 存在对应的解析时,便停止进一步解析,直接使用 ze3kr.local 的地址。 现在你已经了解了本地 DNS 的工作方式。DNS 的基本工作方式就是:获取域名对应 IP,然后与这个 IP 进行通信。 当在本地去获取一个完整域名(FQDN)时(执行 getaddrbyhost),通常也是通过路由器自己提供的 DNS 进行解析的。当路由器收到一个完整域名请求且没有缓存时,会继续向下一级缓存 DNS 服务器(例如运营商提供的,或者是组织提供的,如 8.8.8.8)查询,下一级缓存 DNS 服务器也没有缓存时,就会通过全球 DNS 进行查询。具体的查询方式,在 “全球 DNS” 中有所介绍。

总结

在本地,先读取本地缓存查找记录,再读取 Hosts 文件,然后在搜索域中查找域名,最后再向路由器请求 DNS 记录。

全球 DNS

在全球 DNS 中,一个完整域名通常包含多级,比如 example.com. 就是个二级域名, www.example.com. 就是个三级域名。通常我们常见到的域名都是完整的域名。

全球 DNS 拓扑图

一级域名被分为以下三个部分:

  1. 普通域(gTLD):通常是三个字节或三个字节以上的域名后缀,或者是 Unicode 字符的后缀。这些域名分配给机构管理。
  2. 国家域(ccTLD):所有两个字节的域名都是国家代码,这些域名分配给国家管理。不少国家域都开放了注册,不过有的国家域仅允许当前国家的人去注册。
  3. arpa:用于将 IP 地址转换为对应的域名的根域。

我们通常所见到的域名都是普通域和国家域,而 arpa 域用作 IP 到域名的反向解析。 在本地 DNS 中,只存在域名对应 IP 这种映射关系。然而,在全球 DNS 中,有着更多的资源记录种类(RR),不只是域名对应 IP 的关系,下面将分别介绍一些最基本的资源记录种类:

  • A 记录:定义了一个 IP 地址。(AAAA 记录则是定义一个 IPv6 地址)(RFC 1035
  • NS 记录:域名服务器记录,说明一个域名下的的授权域名服务器记录。内容必须是一个域名。(RFC 1035

根域名

先从根域名开始,未命名根也可以作为 . 。你在接下来的部分所看到的很多域名都以 .结尾,以 .结尾的域名是特指的是根域名下的完整域名,然而不以 . 结尾的域名大都也是完整域名,实际使用时域名末尾的 .也常常省略。在本文中,我使用 dig 这一个常用的 DNS 软件来进行查询,我的电脑也已经连接到了互联网。 假设目前这个计算机能与互联网上的 IP 通信,但是完全没有 DNS 服务器。此时你需要知道根 DNS 服务器,以便自己获取某个域名的 IP 地址。根 DNS 服务器列表可以在这里下载到。文件内容如下:

;       This file holds the information on root name servers needed to;       initialize cache of Internet domain name servers;       (e.g. reference this file in the "cache  .  <file>";       configuration file of BIND domain name servers).;;       This file is made available by InterNIC;       under anonymous FTP as;           file                /domain/named.cache;           on server           FTP.INTERNIC.NET;       -OR-                    RS.INTERNIC.NET;;       last update:    October 20, 2016;       related version of root zone:   2016102001;; formerly NS.INTERNIC.NET;.                        3600000      NS    A.ROOT-SERVERS.NET.A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:ba3e::2:30;; FORMERLY NS1.ISI.EDU;.                        3600000      NS    B.ROOT-SERVERS.NET.B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201B.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:84::b;; FORMERLY C.PSI.NET;.                        3600000      NS    C.ROOT-SERVERS.NET.C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12C.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2::c;; FORMERLY TERP.UMD.EDU;.                        3600000      NS    D.ROOT-SERVERS.NET.D.ROOT-SERVERS.NET.      3600000      A     199.7.91.13D.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2d::d;; FORMERLY NS.NASA.GOV;.                        3600000      NS    E.ROOT-SERVERS.NET.E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10E.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:a8::e;; FORMERLY NS.ISC.ORG;.                        3600000      NS    F.ROOT-SERVERS.NET.F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241F.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2f::f;; FORMERLY NS.NIC.DDN.MIL;.                        3600000      NS    G.ROOT-SERVERS.NET.G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4G.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:12::d0d;; FORMERLY AOS.ARL.ARMY.MIL;.                        3600000      NS    H.ROOT-SERVERS.NET.H.ROOT-SERVERS.NET.      3600000      A     198.97.190.53H.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:1::53;; FORMERLY NIC.NORDU.NET;.                        3600000      NS    I.ROOT-SERVERS.NET.I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17I.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fe::53;; OPERATED BY VERISIGN, INC.;.                        3600000      NS    J.ROOT-SERVERS.NET.J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30J.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:c27::2:30;; OPERATED BY RIPE NCC;.                        3600000      NS    K.ROOT-SERVERS.NET.K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129K.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fd::1;; OPERATED BY ICANN;.                        3600000      NS    L.ROOT-SERVERS.NET.L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42L.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:9f::42;; OPERATED BY WIDE;.                        3600000      NS    M.ROOT-SERVERS.NET.M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33M.ROOT-SERVERS.NET.      3600000      AAAA  2001:dc3::35; End of file

这个文件中每一行分为 4 列,分别是完整域名、资源类型、生存时间(TTL,也就是可以缓存的时间)以及资源数据。通过这个文件就可以知道根域名所对应的 13 个根域名服务器的完整域名,还能知道这 13 个完整域名所对应的 IP 地址。这是因为 NS 记录只能设置为完整域名,所以为了告知 NS 所对应的 IP,还需要额外的数据去说明这 13 个完整域名对应的 IP(这些额外的数据叫做 Glue 记录)。这 13 个根域名服务器都是独立的且冗余的(但是所返回的内容应该是相同的),这样当其中的某个或某些服务器发生故障时,不会影响到解析。一旦无法解析根域名,那么所有的域名都将无法访问。

Glue 记录:如果 NS 记录对应的某个完整域名包含在那个域名之中,那么就需要添加一个 Glue 记录,来指定那个完整域名所对应的 IP。实际上任何完整域名都属于根域名之中,所以根域名就必须对这些 NS 记录设置对应的 IP 地址。Glue 记录实质上就是 A(或 AAAA)记录。(RFC 1033

我们假设你已经通过某种方法成功获取到了这个文件,那么下一步,就是使用这里的服务器对根域名以及一级域名进行解析。对根域名的解析实际上是不必要的,但是我们还是对其进行解析以便进一步分析,获得在互联网上最新、最全的数据。 在根域名上的记录,以从根域名服务器中所解析其根域名的数据为准,而不是刚才的那个文件中的内容。刚才的文件内容只是告知根域名服务器的列表,也就是只有 NS 记录和 NS 记录对应的完整域名的 IP 记录,而不是根域名下的所有记录。 我们先向 198.41.0.4 这个 IP 发送查询根域名的所有记录,any 代表显示任何类型的记录,为了看起来方便,一些无关的响应已经删除(如果只是解析根域名,这一步不能跳过。如果需要直接解析一级域名,那么这一步就可以跳过)。

$ dig @198.41.0.4 . any;; QUESTION SECTION:;.INANY;; ANSWER SECTION:.518400INNSa.root-servers.net..518400INNSb.root-servers.net..518400INNSc.root-servers.net..518400INNSd.root-servers.net..518400INNSe.root-servers.net..518400INNSf.root-servers.net..518400INNSg.root-servers.net..518400INNSh.root-servers.net..518400INNSi.root-servers.net..518400INNSj.root-servers.net..518400INNSk.root-servers.net..518400INNSl.root-servers.net..518400INNSm.root-servers.net..86400INSOAa.root-servers.net. nstld.verisign-grs.com. 2016122400 1800 900 604800 86400;; ADDITIONAL SECTION:a.root-servers.net.518400INA198.41.0.4b.root-servers.net.518400INA192.228.79.201c.root-servers.net.518400INA192.33.4.12d.root-servers.net.518400INA199.7.91.13e.root-servers.net.518400INA192.203.230.10f.root-servers.net.518400INA192.5.5.241g.root-servers.net.518400INA192.112.36.4h.root-servers.net.518400INA198.97.190.53i.root-servers.net.518400INA192.36.148.17j.root-servers.net.518400INA192.58.128.30k.root-servers.net.518400INA193.0.14.129l.root-servers.net.518400INA199.7.83.42m.root-servers.net.518400INA202.12.27.33a.root-servers.net.518400INAAAA2001:503:ba3e::2:30b.root-servers.net.518400INAAAA2001:500:84::bc.root-servers.net.518400INAAAA2001:500:2::cd.root-servers.net.518400INAAAA2001:500:2d::de.root-servers.net.518400INAAAA2001:500:a8::ef.root-servers.net.518400INAAAA2001:500:2f::fg.root-servers.net.518400INAAAA2001:500:12::d0dh.root-servers.net.518400INAAAA2001:500:1::53i.root-servers.net.518400INAAAA2001:7fe::53j.root-servers.net.518400INAAAA2001:503:c27::2:30k.root-servers.net.518400INAAAA2001:7fd::1l.root-servers.net.518400INAAAA2001:500:9f::42m.root-servers.net.518400INAAAA2001:dc3::35

其中,可以看到 TTL 与刚才文件中的内容不一样,此外还多了一个 SOA 记录,所以实际上是以这里的结果为准。这里还有一个 SOA 记录,SOA 记录是普遍存在的,具体请参考文档,在这里不做过多说明。

SOA 记录:指定有关 _DNS 区域_的权威性信息,包含主要名称服务器、域名管理员的电邮地址、域名的流水式编号、和几个有关刷新区域的定时器。(RFC 1035

_DNS 区域_:对于根域名来说,DNS 区域就是空的,也就是说它负责这互联网下所有的域名。而对于我的网站,DNS 区域就是 guozeyu.com.,管理着 guozeyu.com. 本身及其子域名的记录。

此处的 ADDITIONAL SECTION 其实就包含了 Glue 记录。

一级域名

根域名自身的 DNS 服务器服务器除了被用于解析根自身之外,还用于解析所有在互联网上的一级域名你会发现,几乎所有的 DNS 服务器,无论是否是根 DNS 服务器,都会解析其自身以及其下级域名。 从之前的解析结果中可以看出,根域名没有指定到任何 IP 地址,但是却给出了 NS 记录,于是我们就需要用这些 NS 记录来解析其下级的一级域名。下面,用所得到的根 NS 记录中的服务器其中之一来解析一个一级域名 com.

$ dig @198.41.0.4 com any;; QUESTION SECTION:;com.INANY;; AUTHORITY SECTION:com.172800INNSa.gtld-servers.net.com.172800INNSb.gtld-servers.net.com.172800INNSc.gtld-servers.net.com.172800INNSd.gtld-servers.net.com.172800INNSe.gtld-servers.net.com.172800INNSf.gtld-servers.net.com.172800INNSg.gtld-servers.net.com.172800INNSh.gtld-servers.net.com.172800INNSi.gtld-servers.net.com.172800INNSj.gtld-servers.net.com.172800INNSk.gtld-servers.net.com.172800INNSl.gtld-servers.net.com.172800INNSm.gtld-servers.net.;; ADDITIONAL SECTION:a.gtld-servers.net.172800INA192.5.6.30b.gtld-servers.net.172800INA192.33.14.30c.gtld-servers.net.172800INA192.26.92.30d.gtld-servers.net.172800INA192.31.80.30e.gtld-servers.net.172800INA192.12.94.30f.gtld-servers.net.172800INA192.35.51.30g.gtld-servers.net.172800INA192.42.93.30h.gtld-servers.net.172800INA192.54.112.30i.gtld-servers.net.172800INA192.43.172.30j.gtld-servers.net.172800INA192.48.79.30k.gtld-servers.net.172800INA192.52.178.30l.gtld-servers.net.172800INA192.41.162.30m.gtld-servers.net.172800INA192.55.83.30a.gtld-servers.net.172800INAAAA2001:503:a83e::2:30b.gtld-servers.net.172800INAAAA2001:503:231d::2:30

可以看到解析的结果和解析根域名的类似,com. 下也设置了 13 个域名服务器,但是这 13 个域名服务器与根域服务器完全不同

此处也存在 ADDITIONAL SECTION 包含的 Glue 记录,然而 gtld-servers.net. 却并不包含在 com. 下。然而实际上,com.net. 域名都是属于同一个所有者(Verisign),所以这样设置是可以的。

和根域名类似,此时解析到的内容只是 com. 的域名服务器,而并不是 com. 本身的记录,com. 上的记录,以从 com. 的域名服务器中所解析其 com. 域名的数据为准。 所以,下面再使用 com. 的域名服务器来解析 com. 自身,看情况如何(如果只是解析一级域名,这一步不能跳过。如果需要直接解析二级域名,那么这一步就可以跳过):

$ dig @192.5.6.30 com any;; QUESTION SECTION:;com.INANY;; ANSWER SECTION:com.900INSOAa.gtld-servers.net. nstld.verisign-grs.com. 1482571852 1800 900 604800 86400com.172800INNSe.gtld-servers.net.com.172800INNSm.gtld-servers.net.com.172800INNSi.gtld-servers.net.com.172800INNSk.gtld-servers.net.com.172800INNSb.gtld-servers.net.com.172800INNSj.gtld-servers.net.com.172800INNSa.gtld-servers.net.com.172800INNSd.gtld-servers.net.com.172800INNSg.gtld-servers.net.com.172800INNSc.gtld-servers.net.com.172800INNSh.gtld-servers.net.com.172800INNSf.gtld-servers.net.com.172800INNSl.gtld-servers.net.;; ADDITIONAL SECTION:e.gtld-servers.net.172800INA192.12.94.30m.gtld-servers.net.172800INA192.55.83.30i.gtld-servers.net.172800INA192.43.172.30k.gtld-servers.net.172800INA192.52.178.30b.gtld-servers.net.172800INA192.33.14.30b.gtld-servers.net.172800INAAAA2001:503:231d::2:30j.gtld-servers.net.172800INA192.48.79.30a.gtld-servers.net.172800INA192.5.6.30a.gtld-servers.net.172800INAAAA2001:503:a83e::2:30d.gtld-servers.net.172800INA192.31.80.30g.gtld-servers.net.172800INA192.42.93.30c.gtld-servers.net.172800INA192.26.92.30h.gtld-servers.net.172800INA192.54.112.30f.gtld-servers.net.172800INA192.35.51.30l.gtld-servers.net.172800INA192.41.162.30

也和根域名解析的情况类似,此时多了一个 SOA 类型的记录。

二级域名

和解析一级域名 com. 时类似,继续使用 com. 的域名服务器解析 guozeyu.com.

$ dig @192.5.6.30 guozeyu.com any;; QUESTION SECTION:;guozeyu.com.INANY;; AUTHORITY SECTION:guozeyu.com.172800INNSa.ns.guozeyu.com.guozeyu.com.172800INNSb.ns.guozeyu.com.guozeyu.com.172800INNSc.ns.guozeyu.com.;; ADDITIONAL SECTION:a.ns.guozeyu.com.172800INAAAA2001:4860:4802:38::6ca.ns.guozeyu.com.172800INA216.239.38.108b.ns.guozeyu.com.172800INAAAA2001:4860:4802:36::6cb.ns.guozeyu.com.172800INA216.239.36.108c.ns.guozeyu.com.172800INAAAA2001:4860:4802:34::6cc.ns.guozeyu.com.172800INA216.239.34.108

此处也存在 ADDITIONAL SECTION 包含的 Glue 记录,是因为 ns.guozeyu.com.guozeyu.com. 之下。 同样的,guozeyu.com. 上的记录,以从 guozeyu.com. 的域名服务器中所解析其 guozeyu.com. 域名的数据为准。此时这种解析就尤为必要了,因为 guozeyu.com. 上不只有 SOA 记录,同时也有 A 记录和其他重要的记录。 现在使用 guozeyu.com. 的域名服务器来解析 guozeyu.com.(如果只是解析二级域名,这一步不能跳过。如果需要解析三级域名,那么这一步可以跳过):

$ dig @216.239.38.108 guozeyu.com any;; QUESTION SECTION:;guozeyu.com.INANY;; ANSWER SECTION:guozeyu.com.21600INA104.199.138.99guozeyu.com.172800INNSa.ns.guozeyu.com.guozeyu.com.172800INNSb.ns.guozeyu.com.guozeyu.com.172800INNSc.ns.guozeyu.com.guozeyu.com.21600INSOAa.ns.guozeyu.com. support.tlo.xyz. 1 21600 3600 259200 300guozeyu.com.172800INMX100 us2.mx1.mailhostbox.com.guozeyu.com.172800INMX100 us2.mx2.mailhostbox.com.guozeyu.com.172800INMX100 us2.mx3.mailhostbox.com.;; ADDITIONAL SECTION:a.ns.guozeyu.com.604800INA216.239.38.108a.ns.guozeyu.com.604800INAAAA2001:4860:4802:38::6cb.ns.guozeyu.com.604800INA216.239.36.108b.ns.guozeyu.com.604800INAAAA2001:4860:4802:36::6cc.ns.guozeyu.com.604800INA216.239.34.108c.ns.guozeyu.com.604800INAAAA2001:4860:4802:34::6c

可以发现增加了 A、SOA 和 MX 记录。

  • MX 记录:邮件交换记录,让发送到一个域名的邮件由其他的主机去接受,用于与 A 记录共存。(RFC 1035

正是因为 MX 记录的存在,所以发往 username@guozeyu.com 的邮件不是指向 guozeyu.com. 对应的 IP 地址,而是使用 mailhostbox.com. 下的服务器。 当然,由于我是 guozeyu.com. 的所有者,所以我也可以控制 guozeyu.com. 下的三级或更高级的域名。比如 www.guozeyu.com.

$ dig @216.239.38.108 www.guozeyu.com any;; QUESTION SECTION:;guozeyu.com.INANY;; ANSWER SECTION:www.guozeyu.com.172800INCNAMEguozeyu.com.guozeyu.com.21600INA104.199.138.99guozeyu.com.172800INNSa.ns.guozeyu.com.guozeyu.com.172800INNSb.ns.guozeyu.com.guozeyu.com.172800INNSc.ns.guozeyu.com.guozeyu.com.21600INSOAa.ns.guozeyu.com. support.tlo.xyz. 1 21600 3600 259200 300guozeyu.com.172800INMX100 us2.mx1.mailhostbox.com.guozeyu.com.172800INMX100 us2.mx2.mailhostbox.com.guozeyu.com.172800INMX100 us2.mx3.mailhostbox.com.;; ADDITIONAL SECTION:a.ns.guozeyu.com.604800INA216.239.38.108a.ns.guozeyu.com.604800INAAAA2001:4860:4802:38::6cb.ns.guozeyu.com.604800INA216.239.36.108b.ns.guozeyu.com.604800INAAAA2001:4860:4802:36::6cc.ns.guozeyu.com.604800INA216.239.34.108c.ns.guozeyu.com.604800INAAAA2001:4860:4802:34::6c
  • CNAME 记录:规范名称记录,一个主机名字的别名。内容必须是一个域名。(RFC 1035

我的三级域名 www.guozeyu.com. 使用 CNAME 记录指向了 guozeyu.com.,这代表着 guozeyu.com.所有资源类型均与 guozeyu.com. 相同。这也是为什么 CNAME 不能和其他任何记录连用的原因,CNAME 的存在会取代任何其他的记录。由于主域名下常常也存在 SOA、NS 以及 MX 记录,所以主域名下不能使用 CNAME 解析。此外,我也可以设置在 guozeyu.com. 下的三级域名指向一个 NS 记录,这样我就可以把我的三级域名再给别人使用。

总结

  1. 如果需要解析一个根域名,使用根域名服务器解析根域名即可。
  2. 如果需要解析一个一级域名,需要先使用根域名服务器解析一级域名,获取到一级域名的域名服务器,然后用一级域名服务器解析一级域名自身。
  3. 如果需要解析一个二级域名,需要先使用根域名服务器解析一级域名,获取到一级域名的域名服务器,然后用一级域名服务器获取二级域名的域名服务器,然后用二级域名服务器解析二级域名自身。
  4. 如果需要解析一个三级域名,需要先使用根域名服务器解析一级域名,获取到一级域名的域名服务器,然后用一级域名服务器获取二级域名的域名服务器,然后用二级域名服务器解析三级域名,若三级域名下没有 NS、CNAME 记录,则解析结束,如果有 CNAME 记录则再通过正常的解析方式解析这个 CNAME 所指向的域名的记录,如果有 NS 记录,则用三级域名服务器解析三级域名自身。

DNS 缓存

通常,凡是解析过的记录,都会被解析服务器、路由器、客户端、软件缓存。这样可以大大减少请求次数。凡是被缓存的记录,其在 TTL 规定的时间内都不会再次去解析,而是直接从高速缓存中读取。正常情况下,服务器、路由器等都不应该扩大 TTL 值。被缓存的内容,TTL 值要在每秒减 1 。

$ dig guozeyu.com;; QUESTION SECTION:;guozeyu.com.INA;; ANSWER SECTION:guozeyu.com.21599INA104.199.138.99;; Query time: 514 msec;; SERVER: 10.0.1.1#53(10.0.1.1);; WHEN: Sat Dec 24 20:00:29 2016;; MSG SIZE  rcvd: 43$ dig guozeyu.com;; QUESTION SECTION:;guozeyu.com.INA;; ANSWER SECTION:guozeyu.com.21598INA104.199.138.99;; Query time: 45 msec;; SERVER: 10.0.1.1#53(10.0.1.1);; WHEN: Sat Dec 24 20:00:30 2016

这是我连续两次在我的电脑上直接通过路由器解析 guozeyu.com. 的结果。显然第一次解析没有命中高速缓存,路由器向运营商的 DNS 服务器查询,运营商的 DNS 再从根域名逐级解析 guozeyu.com.,总耗时 514 毫秒。然后 guozeyu.com. 就会同时在运营商的服务器上和路由器的 DNS 服务器上进行缓存。在第二次请求 guozeyu.com. 时,就命中了在路由器上的缓存,于是由路由器直接返回解析记录,总耗时 45 毫秒。两次查询时间相隔一秒,所以 TTL 值也被减去 1 。

arpa 反向解析

反向解析用于:给定一个 IP 地址,返回与该地址对应的域名。函数 gethostbyaddr 正是使用了这种方法获取 IP 对应的域名。 一级域名 arpa. 用于设置反向解析,对于我的网站的 IPv4 地址 104.199.138.99,其所对应的 arpa 完整域名是:99.138.199.104.in-addr.arpa.,通过获取这个域名的 PTR 记录,就可以得到这个域名所对应的完整域名域名。

$ host 104.199.138.9999.138.199.104.in-addr.arpa domain name pointer 99.138.199.104.bc.googleusercontent.com.$ dig 99.138.199.104.in-addr.arpa. ptr +short99.138.199.104.bc.googleusercontent.com.
  • PTR 记录:指针解析记录,内容是一个完整域名,定义一个 IP 所对应的域名。

可以看到,使用 host 命令获得 IP 地址的域名与使用 dig 获取的相同,均为 99.138.199.104.bc.googleusercontent.com. 。可以看出,这个 IP 是属于 Google 的。此外,需要注意的是 in-addr.arpa. 下的字域名正好与原 IPv4 地址排列相反。 这个记录通常可以由 IP 的所有者进行设置。然而,IP 的所有者可以将这项记录设置为任何域名,包括别人的域名。所以通过这种方法所判断其属于 Google 并不准确,所以,我们还需要对其验证:

$ dig 99.138.199.104.bc.googleusercontent.com a +short104.199.138.99

可以看到,这个域名又被解析到了原本的 IP,此时验证完毕,确认了这个 IP 属于 Google。所以,通过 gethostbyaddr 之后,还要继续 getaddrbyhost 验证。 然而,进行这种解析时解析服务器是由谁提供的呢?我们来看看 99.138.199.104.in-addr.arpa. 的上一级域名的解析记录:

$ dig 138.199.104.in-addr.arpa. any;; QUESTION SECTION:;138.199.104.in-addr.arpa.INANY;; ANSWER SECTION:138.199.104.in-addr.arpa. 21583INNSns-gce-public1.googledomains.com.138.199.104.in-addr.arpa. 21583INNSns-gce-public2.googledomains.com.138.199.104.in-addr.arpa. 21583INNSns-gce-public3.googledomains.com.138.199.104.in-addr.arpa. 21583INNSns-gce-public4.googledomains.com.138.199.104.in-addr.arpa. 21583INSOAns-gce-public1.googledomains.com. cloud-dns-hostmaster.google.com. 1 21600 3600 259200 300

可以看到,上一级 138.199.104.in-addr.arpa. 下配置了 Google 的域名服务器,所以 104.199.138.0/24104.196.123.0 - 104.196.123.255)都是属于 Google 的。然而,既然这个域名下的域名服务器可以设置为 Google 自己的,所以这个域名下就可以设置任何记录,不只是 PTR,所以也可以添加 A 记录把 arpa 域名当作网站! 我虽然没有那么大块的 IPv4 地址,但是我有这个 IPv6 地址:2001:470:f913::/48 并且能够设置在 arpa. 下的 NS 记录。这个 /48 的 IPv6 地址对应着 arpa. 反向解析的完整域名是 3.1.9.f.0.7.4.0.1.0.0.2.ip6.arpa. ,可以看到 IPv6 的反向解析在另一个二级域名 ip6.arpa. 下,此外其地址是将 IPv6 的每一个十六进制为拆开为一个字域并反向排列的。 我已把这个地址设置为了我自己可以控制的 NS,然后配置了 A 记录,瞬间这个反向解析域名就可以当作正常的解析使用了!

  • 3.1.9.f.0.7.4.0.1.0.0.2.ip6.arpa
  • ze3kr.3.1.9.f.0.7.4.0.1.0.0.2.ip6.arpa

如果你试图用浏览器访问这两个域名,会收到证书错误的报告,因为我还没给这个域名签发证书。

利用 GCE 建立一个 Anycast 网络,超快的香港节点,Google Cloud CDN

By: James Guo
4 October 2016 at 09:27

在上一篇文章中,我简单的介绍了 Google Compute Engine(简称 GCE)的基础使用。这篇文章我将介绍如何利用 GCE 建立一个 Anycast 网络,并测试了其速度。 想要实现这个功能,就需要使用 Cross-Region Load Balancing(跨地区的负载均衡),此功能就相当于一个 HTTP(S) 的反向代理,所以只能针对 HTTP/HTTPS 请求进行负载均衡。

简要概述

GCE 上所实现的这个功能是基于第七层的网络代理,所以其拓扑图是这样的: 用户 —> 边缘服务器 —> 实例

  • 用户到边缘服务器之间的连接:使用 HTTP 或 HTTPS;如果是 HTTPS 连接,那么 TLS 加密过程是在边缘服务器上实现。
  • 边缘服务器到实例的连接:使用 HTTP 或 HTTPS 连接,之前的网络是走的 Google 的专线。

不论配置了几个位置的实例,边缘服务器都是使用 Google 全部的边缘服务器。 启用这个功能后,就会得到另一个 Anycast 的 IP 地址,这是个独享的 IP 地址。

什么是 Anycast?Anycast 能够让多个主机使用一个 IP 地址,当用户连接这个 IP 地址的时候,连接到的只是这多个主机中的其中之一,通常会选择最快的线路,能有效的降低延迟,所以很多 DNS/CDN 提供商都使用了 Anycast。

此外,目前使用负载均衡是唯一能让其原生支持 IPv6 的方法。具体可以参见其文档:IPv6 Termination for HTTP(S), SSL Proxy, and TCP Proxy Load Balancing

预留 IPv6 地址的截图

配置方法

建立实例

首先,需要前往到 GCE 后台,建立至少两个不同地区的实例,我专门为测试 Anycast 功能建立了两个新的实例:

为 Anycast 建立的两个实例

每个地区也可以建立多个实例以提高可用性,而我只给每个地区建立了一个实例,这两个实例分别叫 anycast-asia 和 anycast-us。

建立实例组

然后,需要给每个地区的实例建立一个实例组

实例组配置页面

需要注意的是,实例组配置页面中位置里的 “多地区(Multi-zone)” 是指同一个地区(Region)的不同可用区域(Zone),而不是多个不同的地区,所以这实际上是翻译的错误,应该叫做 “多可用区域” 才对。


刚接触云服务的人可能不理解可用区域的概念,可以参考 AWS 的这篇文章来理解。简单点说,地区这个概念就是指离得很远的地区(比如城市之间,如北京和上海),所有在北京的服务器都算北京地区,所有在上海的服务器都算上海地区。但是为了能达到更高的可用性,通常还会在同一个地区设立多个数据中心,也就是可用区域。这些可用区域虽在一个地区中,其之间的距离可能相隔几十甚至几百公里,但这些可用区域之间的距离和不同地区之间的距离相比起来要小得多,所以这些可用区域之间的网络延迟也很低。

设立多个可用区域的意义是:可以能加更高的可用性(主要是为了避免外界因素:比如说火灾等),虽然是异地分布,但是可用区域之间的距离并不远,所以网络延迟可以忽略。

我只给每个地区建立了一个实例,所以我只需要选择 “单地区(Single-zone)”。每个地区都需要建立一个实例组,所以一共需要建立两个(或更多的)实例组。我配置了两个实例组,分别叫 asia-group 和 us-group。

建立负载均衡

完成前两步之后,就需要建立负载均衡的规则了,需要选择 “HTTP(S) 负载平衡” 来实现 Anycast 的功能。

三种负载均衡模式

在负载均衡的配置界面,把这两个实例组都添加到 “后端” 中。 该功能还需要创建一个运行状态检查(相当于监控功能),当主机宕机后能实现切换。

暂时先不开启 CDN 功能保留默认的 “主机路径和规则”目前是需要 HTTP 的例子,如果需要 HTTPS,还需要指定一个证书。

创建成功后,可以看到如下界面,其中的 IP 地址就是 Anycast IP 了。

成功创建了一个 Anycast IP

Nginx 的配置

这里的配置只是为了方便调试,实际使用不用额外修改 Nginx 的配置。 在这两个主机上都安装 Nginx,然后稍微改动默认的配置文件:增加两个 Header,然后 Reload。

add_header X-Tlo-Hostname $hostname always;add_header Cache-Control "max-age=36000, public";

检测是否可用

在测试 Anycast 之前,先测试这两个主机是否存在问题。为了方便阅读,我将 curl 的 IP 地址换为主机名,并省略两个主机都相同的 Header 字段

$ curl anycast-us -IHTTP/1.1 200 OK…ETag: "57ef2cb9-264"X-Tlo-Hostname: **anycast-us**$ curl anycast-asia -IHTTP/1.1 200 OK…ETag: "57ef2b3b-264"X-Tlo-Hostname: anycast-asia

可以看到这两个主机都没有什么问题。然后,我用我的电脑去测试那个 Anycast IP:

$ curl anycast-ip -IHTTP/1.1 200 OK…ETag: "57ef2b3b-264"X-Tlo-Hostname: anycast-asiaAccept-Ranges: bytesVia: 1.1 google

可以看到,这是 anycast-asia 主机响应的。现在我使用另一个在美国的主机继续测试这个 Anycast IP:

$ curl anycast-ip -IHTTP/1.1 200 OK…ETag: "57ef2cb9-264"X-Tlo-Hostname: anycast-usAccept-Ranges: bytesVia: 1.1 google

此时就是 anycast-us 主机响应的,是因为客户端离这个服务器更近。 当通过 Anycast IP 访问时,就可以看到 HTTP Header 中的 Via: 1.1 google 字段。

速度测试

Ping 测试

Ping 测试发现速度很快,看来反代的操作是放在 Google 的边缘服务器上了。速度堪比 Google 啊!

对 Anycast IP 的国外速度测试

中国的速度那更是一流的快,Google 有香港的边缘节点,所以基本上是直接走的香港节点,比原本的连接台湾可用区快不少。(只有部分 IP 段是完全直连的)

对 Anycast IP 的国内速度测试

HTTP GET 测试

在开启 CDN 功能之前,负载均衡器是不会对任何内容缓存的,所以会发现 Connect 的速度很快,但是 TTFB 延迟还是有不少。

对 Anycast IP 进行 HTTP GET 测试

可以预测,如果启用了 HTTPS 功能,其 TLS 所需要的等待时间也会很短,TTFB 时间不变,总时长不会延长太多。

开启 CDN 后进行 HTTP GET 测试

当将 CDN 开启后,负载均衡器就会自动地对静态资源做缓存了,当缓存命中后会显示 Age 字段,这个字段是表示自缓存命中了,后面的数字代表这是多少秒之前缓存的内容。

curl anycast-ip -I
HTTP/1.1 200 OK

Via: 1.1 google
Age: 10

经过多次执行这个指令,会发现有一定几率 Age 字段消失,这可能是流量指到了同一个地区的不同可用区上。但总之,是缓存命中率不高,即使之前曾访问过了。

开启 CDN 后进行 HTTP GET 测试

多次运行测试确保有缓存之后,发现速度似乎并没有太多明显的提升。能够明显的看出改善的是:巴黎和阿姆斯特丹的 TTFB 延迟从 200ms 减少到了 100ms,然而还是不尽人意。可能的原因是:Google 并没有将内容缓存到离访客最近的边缘节点上,而是别的节点上。 CDN 缓存服务器的位置列表

缓存服务器的位置

统计与日志

开启了 Load Balancing 后,就会自动在 Google Cloud Platform 下记录一些信息了。

实时流量查看

在网页后台的 Network,Load balancing,advanced menu 的 Backend service 下,可以查看实时的流量情况:

图形还是很漂亮的

延迟日志

在网页后台的 Stackdriver,Trace 下,可以看到延迟日志:

延迟日志截图 1延迟日志截图 2

这里的延迟包含了网络延迟和服务器响应延迟

总结

GCE 所能实现的 Anycast 功能,只能通过 HTTP 代理(第七层)的方式实现,所以只能代理 HTTP 请求,其他功能(如 DNS)无法实现。所以很多功能受限于负载均衡器的功能(比如证书和 HTTP2 都需要在负载均衡器上配置),然而由于 TLS 加解密过程是在边缘服务器上实现,而且其本身也带有 CDN 功能,所以会比单纯的 Anycast(比如基于 IP 层,或是 TCP/UDP 层)的更快一些。

价格

前五个 Rules $18/月,流量费用相比 GCE 不变,已经被缓存的内容的流量有一点优惠。

对比

Cloudflare

通过使用 Cloudflare 所提供的服务也能实现 Anycast,也是基于第七层的,即将也能实现 Cross-Region Load Balancing 的功能。虽然它还不能根据主机的 CPU 占用率去调整权重(毕竟它拿不到这些数据),却有强大的 Page Rules 功能以及 WAF 功能。 CloudFlare 并不提供独立 IP 地址,不过这不是什么大问题。 由于它属于第三方服务,不受服务提供商的限制,于是就可以给多种不同的服务提供商去做 Anycast 功能;而且无论服务商是否支持,都能够使用。 连接速度上,GCE 的在中国连接速度有明显的优势。

BuyVM

BuyVM 是一家 VPS 提供商,却提供免费的 Anycast 功能,其 Anycast 功能是直接基于 IP 层的 Anycast,所以可以配置 HTTP 之外的各种服务。BuyVM 没有所谓的边缘服务器一说,只能有三个节点,Ping 的结果不像前两家那么快,而且 TLS 过程也是在原本的主机(这三个主机中里用户最近的一个)上进行,也会有一定延迟。 BuyVM 并不提供任何亚洲的主机,所以中国的连接速度也没有比 Cloudflare 快多少,整个亚洲的速度也不是很快。

Google Compute Engine 新手教程及使用体验

By: James Guo
1 October 2016 at 11:00

2017 年 4 月更新:由于 GCE 在国内经常不稳定,本站主机已经换到了 TlOxygen 的虚拟主机上了。 最近想要寻找按流量计费、连接中国速度比较快的 VPS,最终选择了 Google Compute Engine(下文简称 GCE)的亚洲区。GCE 的后台配置页面虽不能在中国访问,但是其 GCE 实例是可以在中国访问的。 创建一个新的 GCE 的流程十分简单,只需要自定义配置、选择操作系统、配置 SSH Key,然后选择创建就好了,整个流程十分像 VPS,但是可自定义的功能却远比 VPS 多。

价格与配置

具体价格请参见官方价格表。(由于有持续使用折扣,每月实际价格比按照每小时更低) GCE 的价格比较亲民,最低配 (f1-micro) 1 共享核-0.6 GB 内存-10GB HDD 每月只需要不到 5 美元,而且由于 CPU、内存大小和磁盘大小都是可调的,所以可以根据自己的需要去购买最适合的,能省去不必要的开销。 而且对于北美的部分机房而言,账户首个最低配 (f1-micro) 实例可以享受到永久免费配额,对于建站而言 (再配合 Cloudflare 使用) 还是很划算的。流量的话对于所有的可用区,连中国大陆 $0.23/Gbyte、美欧地区 $0.12/Gbyte,流量的价格有些小贵,但是如果是连接 Google 自己的服务的话(包括但不限于 Gmail、YouTube),流量不计费(但是流量是双向的,所以是本地通过 GCE 上传完全免费,下载还是原价)。 GCE 还有一点比较特殊的是它是按分钟计费的,当服务处于终止状态(相当于关机,磁盘数据保留)时,不收取费用(除了少量的磁盘使用费用)。每次计算 Uptime 时,如果不到 10 分钟则一律按十分钟算,超过 10 分钟后才是真正的按分钟计费,不过还是很划算了。

关于共享核的实例的补充

f1-micro(0.6 GB)和 g1-small(1.7GB)这两个版本使用的是共享核心(其余配置都是独立核心),根据 Google 的说明,0.60GB 是 0.2 vCPU,1.70GB 是 0.5 vCPU。但是却支持 Bursting,也就是短时间内最高能使用到 1.0 vCPU。 那么 1.0 vCPU 是多少呢?查 cpuinfo,是 Intel(R) Xeon(R) CPU @ 2.50GHz。也就是说这两个版本最高能占用到 2.5GHz。但是假如长时间占用,速度就会压缩到 0.5GHz 和 1.75 GHz。

监控图

我的 f1-micro 装了监控软件,对比 GCE 给的 CPU 占用率(深蓝色)和系统自己监控到的占用率(浅蓝色),发现 GCE 图表上统计的 CPU 占用率正好是本地统计的 5 倍,也就是说如果本地看到的 CPU 占用是 20%,GCE 图表上显示的就正好是 100%,本地为 20100%,GCE 图表上就是 100500%,这时就算作 Bursting 了。 和其他 VPS 对比,其他的 VPS 也几乎都是共享核心,但你却无从判断是否超售。比如有 10 个用户共用一个核心,如果那 10 个人都在不停的占用 CPU,那么你的 CPU 速度会低于单核的十分之一。而 Google 的共享核心,保证了一个最低的速度(0.2 vCPU 和 0.5 vCPU),就算其他用户用的再狠,也能给你保证一定的速度。

使用流程以及配置方法

首先需要前往创建实例的页面,然后进行配置

基础配置

一些基本的配置

其他一些选项配置介绍

  • “抢占”:该模式能够获得更低廉的价格,但是不能用做需要长期保持在线的服务(比如 Web 服务),它最长的使用期限是 24 小时,然而在我的使用中,它有时候不到 1 小时就会被终止使用。它只适合短时间去计算一些东西,计算完后中止它,平常的一般使用不要开启此功能。
  • 自动重启:推荐开启,以获得在云端的好处,以及更好的 Uptime
  • 主机维护期间:推荐选择 “迁移”,原因同上
  • IP 转发:建议关闭,几乎不会用得着此功能,关闭有助于提高安全性
  • SSH:这可能不同于其他一些 VPS,它默认不自动生成用户密码,所以为了远程登录必须配置好公钥私钥。而且所填写的公钥末尾的用户名是有作用的,所填写的用户名就是所需要登录的用户名,默认不支持 root 登陆,除非你将用户名设置成了 root。
SSH 配置截图

防火墙配置

GCE 默认开启了防火墙且不能关闭,只能允许你自己指定的协议和端口的流量;经过我自己的实际测试,GCE 能够自动过滤相当的 DDOS 攻击流量。 由于防火墙不能关闭,所以不能配置类似 IPv6 Tunnel 的服务,所以导致目前的 GCE 是不能够支持 IPv6 的,不过相信以后 Google 还是会启用 IPv6 支持。 在 “网络” 里,可以找到防火墙规则,然后可以添加防火墙规则。 默认已经允许了 SSH 和 ICMP 等(以 default 开头的)

我所启用的所有规则列表SNMP 监控配置

我只需要另一个主机去访问 SNMP 监控,不需要将其公开到互联网上,所以限制了 IP。

用做权威 DNS 服务器的配置

有的 DNS 请求是通过 TCP 发送的,所以需要同样启用 TCP 请求。 如果配置了目标标记,那么就不是默认应用到所有实例的防火墙规则,还需要在实例上配置好同样的标记才可以。

添加上相同的标记

网络——如同 Google 自身一样棒

由于 GCE 是 Google 的,其网络其实也是 Google 的 AS15169,于是不用想也知道连接 Google 旗下的服务会很快,但是实际使用后发现远比我想象的快,GCE 连接 Google 的服务简直就像内网一样。

$ ping google.comPING google.com (74.125.203.102) 56(84) bytes of data.64 bytes from th-in-f102.1e100.net (74.125.203.102): icmp_seq=1 ttl=53 time=0.631 ms64 bytes from th-in-f102.1e100.net (74.125.203.102): icmp_seq=2 ttl=53 time=0.433 ms64 bytes from th-in-f102.1e100.net (74.125.203.102): icmp_seq=3 ttl=53 time=0.330 ms64 bytes from th-in-f102.1e100.net (74.125.203.102): icmp_seq=4 ttl=53 time=0.378 ms64 bytes from th-in-f102.1e100.net (74.125.203.102): icmp_seq=5 ttl=53 time=0.413 ms^C--- google.com ping statistics ---5 packets transmitted, 5 received, 0% packet loss, time 3999msrtt min/avg/max/mdev = 0.330/0.437/0.631/0.103 ms

要是 traceroute 的话就更神奇了:

$ traceroute google.comtraceroute to google.com (64.233.189.113), 64 hops max  1   64.233.189.113  0.826ms  0.313ms  0.435ms

中国目前连接 GCE 亚洲区的速度还算不错,按流量计费,实际测试能够超过 100M 带宽。亚洲区的位置在台湾,中国连接通常会绕香港,然后从香港到台湾这条路线走的是 Google 自己的骨干网,所以最终的结果只是比香港服务器慢了十几毫秒而已。

其他国家连接的话优势就更明显了,Google 的网络实在太强大,无论是亚洲还是欧美,几乎还没有出这个城市/国家就立即跳进 Google 的骨干网络里了,然后 Google 自身的骨干网的选路通常要比运营商的选路要好一些,几乎不会出现绕路的情况。

配置 Anycast

详细内容已在下一篇文章中介绍,通过 Load Balancing 可以分配到一个独立的 IPv4 地址,还能够有原生的 IPv6,支持 CDN 和 HTTPS。Google 的 Anycast 有多快?和 Google 一样快。

内部网络互通

每个实例都有其对应的内网 IP,方便两个主机间建立直接的连接,这个内网 IP 的神奇之处在于:它可以跨可用区使用,包括跨大洲。经过实际测试,使用内网 IP 建立的连接速度会稍快,而且收取的价格(如果是跨州的话)也有优惠。

功能

统计功能

在 GCE 的后台,能够显示长达 30 天的 CPU 利用率、磁盘字节数、磁盘操作字节数、网络字节数、网络数据包量等数据,都能够精确到分钟级别的记录,而且是实时更新的。

快照

你可以为主机增加快照,方便在其他实例中恢复快照,或者用做备份功能。GCE 的快照是增量备份,这意味着如果有两个快照,第二份快照只备份与第一份快照的差异部分。使用这个脚本可以实现自动备份,并且能够实现到期自动删除老备份。

附加硬盘

你可以轻松的添加任意(大于 10 GB)大小的硬盘,有多种磁盘种类可供选择。经过我的测试,如果执行长时间的高 I/O 操作,硬盘读写速度会明显地降低。而且并不一定 SSD 就比 HDD 快,硬盘的大小与吞吐量限制和随机 IOPS 限制呈正相关,也就是说 40G 的 HDD 的速度相当于 10G 的 SSD。

适用场景

低配置的版本用来建站或者是当 “梯子” 都很不错,每月 5 美元的价格还是很吸引人的(做 “梯子” 的一定要注意流量价格!)。已经相当完善的 Web 控制页面可以大大降低使用和学习的门槛。高配置的版本拥有独立 CPU,而且可伸缩性很大。与 Google Cloud 各种功能配合使用,可以搭建大型网站或者游戏服务器

GCE 的一些坑

下面来讲一讲它的一些坑,尤其是从传统 VPS 转到 GCE 会遇到的一些问题。由于 GCE 是基于云端的,所以有很多东西都不太一样。

主机的外网 IP 并不是直接分配的

GCE 虽然是提供独立 IP 的,但是当你执行 ifconfig -a 时,你会看到默认分配的 IP 是一个内网的保留 IP(形如 10.123.0.1),这是为了方便 instance 里之间互相连接的 IP。当你配置一些需要外网的服务要 bind 到指定 IP 时,你只需要 bind 到这个 IP 即可,所分配给你的外网 IP 会自动将流量转发到这个 IP 上。而且,你的主机并不知道那个外网 IP 就是主机本身,所以所有发向主机对应的外网 IP 的流量都会经过一个路由器,然后再由路由器返回,并且会应用防火墙策略。所以,如果需要本地的通讯,建议尽量多使用环回地址(如 127.0.0.1,::1)或那个内网地址。

防火墙

不能关闭的防火墙对于初次接触的人来说可能有些不适,不过一旦习惯后便会爱上这个功能,这个基于在路由器上的防火墙功能要比在 iptables 里做限制更方便。强烈建议利用好防火墙功能,不要默认允许所有端口。比如你的网站流量全部经过 Cloudflare,那么就可以通过防火墙来只允许 Cloudflare 的 IP 与你的主机连接。

不支持多 IP 与 IPv6

GCE 上不能通过加钱的方式去购买多个 IPv4 地址,所以一个实例只能有一个 IPv4 地址,需要多个 IPv4 需求的可以尝试多个实例(或者可以通过 Load Balancing 来实现多个 IP 地址)。 同时,GCE 目前不支持 IPv6,这实在是很可惜的。目前已经可以通过负载均衡器来实现 IPv6

使用免费 Let's Encrypt 实现 ECDSA/RSA 双证书

By: James Guo
21 August 2016 at 10:52

Ubuntu 16.04.01 自带的软件源中的是 Nginx 1.10.0,但是这个版本的 Nginx 的 HTTP/2 模块中存在 Bug,具体见此。现在 Nginx 1.12 Stable 已经推出,直接安装 Stable 版本即可。 2018-06 更新:如果你使用 Ubuntu 18.04 或者是以后的版本,那么系统默认的软件源的 Nginx 版本(1.14)就足够了。

关于双证书,仅建议使用独立 IP 的人去使用,如果没有独立 IP,那么就需要启用 SNI 功能——然而几乎所有支持 SNI 功能的浏览器也都支持了 ECC 证书,所以可以跳过升级步骤,直接换 Let’s Encrypt 的 ECC 证书,不使用 RSA 证书。 我有不止一个服务器,如果都使用自己编译的 Nginx,那么太麻烦了,于是我决定使用添加软件源的方法,通过 apt 升级,方法如下: 首先需要先添加 Nginx mainline 的软件源:

$ sudo add-apt-repository ppa:nginx/stable # sudo apt install software-properties-common$ sudo apt update

然后移除现有 Nginx 并安装新版本:

$ sudo apt remove nginx nginx-common nginx-core$ sudo apt install nginx

安装时可能会询问是否替换原来默认的配置文件,选择 N 即可。 此时安装的 Nginx 已经包含了几乎所有的必要和常用模块,比如包括但不限于 GeoIP Module、HTTP Substitutions Filter Module、HTTP Echo Module。我安装的 Nginx 的 OpenSSL 版本是 1.0.2g-fips,所以并不支持 CHACHA20,想要支持 CHACHA20 只能使用 CloudFlare 的 Patch 然后自己编译。安装完成后就可以验证 Nginx 版本了:

$ nginx -Vnginx version: nginx/1.12.0built with OpenSSL 1.0.2g  1 Mar 2016TLS SNI support enabledconfigure arguments: --with-cc-opt='-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now -fPIC' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_geoip_module=dynamic --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-stream_ssl_preread_module --with-mail=dynamic --with-mail_ssl_module --add-dynamic-module=/build/nginx-DYnRGx/nginx-1.12.0/debian/modules/nginx-auth-pam --add-dynamic-module=/build/nginx-DYnRGx/nginx-1.12.0/debian/modules/nginx-dav-ext-module --add-dynamic-module=/build/nginx-DYnRGx/nginx-1.12.0/debian/modules/nginx-echo --add-dynamic-module=/build/nginx-DYnRGx/nginx-1.12.0/debian/modules/nginx-upstream-fair --add-dynamic-module=/build/nginx-DYnRGx/nginx-1.12.0/debian/modules/ngx_http_substitutions_filter_module

此时,你的服务器就没有 Nginx 的 HTTP/2 bug 了,既然使用了最新版的 Nginx,那么就能够配置 ECDSA/RSA 双证书了。

Nginx 升级的小坑

在我升级的时候,遇到了 GeoIP 模块无法使用的问题,经研究发现是新版本将 GeoIP 改成动态调用模块的方式实现了,在 Nginx 的 http {} 配置中添加下方代码得以解决:

load_module "modules/ngx_http_geoip_module.so";

使用 Let’s Encrypt 签发免费多域名证书

Let’s Encrypt 提供完全面为免费,并且是自动化签发的证书,一张证书最多能签 100 个域名,暂不支持通配。 为了配置双证书,你首先应该签发下来两张证书,以下以 acme.sh 为例,首先先建立目录(以下所有案例均使用 example.com 作为例子,实际使用需自行替换):

$ mkdir -p /etc/letsencrypt$ mkdir -p /etc/letsencrypt/rsa$ mkdir -p /etc/letsencrypt/ecdsa

然后修改 Nginx 配置文件,确保所有在监听 80 端口的都有 location ^~ /.well-known/acme-challenge/ 区块,本配置文件是强制跳转 HTTPS 的案例,这是源站的配置:

server {    listen 80 default_server;    listen [::]:80 default_server;    location ^~ /.well-known/acme-challenge/ {        root /var/www/html;    }    location / {        # Redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.        return 301 https://$host$request_uri;    }}

在签发之前,确保所有要签发的域名都指向了你自己的服务器! 然后签发 RSA 证书(如果需要多域名证书,只需要多个 -d 即可,下同,不过保存的文件目录以及证书显示名称均为第一个域名):

$ acme.sh –issue –reloadcmd “nginx -s reload” -w /var/www/html -d example.com –certhome /etc/letsencrypt/rsa

然后再签发 ECDSA 证书:

$ acme.sh –issue –reloadcmd “nginx -s reload” -w /var/www/html -d example.com -k ec-256 –certhome /etc/letsencrypt/ecdsa

卸载 acme.sh 自带的 cron,自己重新配置:

$ acme.sh –uninstallcronjob
$ vim /etc/cron.d/renew-letsencrypt

输入以下内容,注意替换 acme.sh 的路径为你安装的绝对路径:

15 02 * * * root /path/to/acme.sh --cron --certhome /etc/letsencrypt/rsa20 02 * * * root /path/to/acme.sh --cron --ecc --certhome /etc/letsencrypt/ecdsa

然后就完成了,证书会自动续签。

给证书添加或删除域名

因为 Let’s Encrypt 使用的不是通配符域名,所以会经常遇到有新的子域的情况,此时就需要给证书添加域名,一张证书最多可以添加 100 个域名。最简单的添加方法如下: 首先,修改证书的配置文件,两个证书的配置文件都要修改:

$ vim /etc/letsencrypt/rsa/example.com/example.com.conf$ vim /etc/letsencrypt/ecdsa/example.com\_ecc/example.com.conf

找到 Le_Alt 一行,将新的域名添加进后面(每个域名用逗号隔开,总共不能超过 100 个)。然后开始重新签发这个证书,需要添加 -f

$ acme.sh --renew -d example.com --certhome /etc/letsencrypt/rsa -f$ acme.sh --renew -d example.com --ecc --certhome /etc/letsencrypt/ecdsa -f

要注意的一点是,目前 Let’s Encrypt 签发的 ECC 证书的中间证书和根证书暂且不是 ECC 证书,这将会在以后支持,详情见 Upcoming Features

配置 Nginx

首先需要生成几个 Key:

$ openssl rand 48 > /etc/nginx/ticket.key$ openssl dhparam -out /etc/nginx/dhparam.pem 2048

然后添加以下内容进 Nginx,放在 http 或 server 区块下,虽然不支持 CHACHA20,但是添加进去也没影响。

### SSL Settings##ssl_certificate /etc/letsencrypt/rsa/example.com/fullchain.cer;ssl_certificate_key /etc/letsencrypt/rsa/tlo.xyz/example.com.key;ssl_certificate /etc/letsencrypt/ecdsa/example.com_ecc/fullchain.cer;ssl_certificate_key /etc/letsencrypt/ecdsa/example.com_ecc/example.com.key;ssl_session_timeout 1d;ssl_session_cache shared:SSL:50m;ssl_session_tickets off;ssl_dhparam dhparam.pem;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on;ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';ssl_stapling on;ssl_stapling_verify on;

最后不要忘了 nginx -s reload,然后 前往 SSL Labs 检查配置,可以看到旧的浏览器使用了 RSA 证书(我的服务器有独立 IP,所以无 SNI 支持的也能访问):

支持的客户端

至此,ECDSA/RSA 双证书配置完成,你可以在浏览器里查看到证书类型:

ECDSA 证书
❌
❌