BKJIA精选译文】实不相瞒,我抵挡不住开放式Wi-Fi热点的吸引力。我的智能手机有数据服务方案,我甚至可以把智能手机用作我那台笔记本电脑的无线路由器,但无线的速度比3G快多了,而且通常不会有相应的带宽限制或额外成本。另一方面,无线热点又天生缺乏安全性。这就是为什么每当外出时,我经常让那台iMac开着,那样就能通过与家里那台服务器之间通过SSH加密隧道,上网冲浪。这项技术用起来相当棒,也相当安全。它甚至帮助我在17届DefCon大会期间避免被公布在绵羊墙上BKJIA编辑注:Wall
of
Sheep,又叫耻辱墙,是DefCon大会上的一个特色,这面“墙”会显示大会期间采用不安全的协议使用了Wi-Fi热点的那些用户们的用户名和密码,见下图)。

本文介绍使用 OpenVPNCentOSUbuntu
上搭建基本的VPN服务的方法.

一 openvpn 简介

日前的泄密事件,体现了当前中国的网络安全状况实在令人堪忧。数据库的泄密,可能多少是因为php或者asp的代码漏洞造成的。但其本质是构建于服务器和操作系统之上。尽管现在用windows服务器的公司越来越少了,但并不代表Linux就是安全的,特别是Linux现在越来越庞大,默认安装的东西也越来越多了。很难知道到底哪个进程里包含了漏洞,挨个应用去读源码又太不现实了。所以,干脆找一个高安全性的操作系统是比较一劳永逸的事情。

随着互联网数据规模的爆炸式增长,如何从海量的历史、实时
数据中快速获取有用信息,变得越来越具有挑战性。搜索是获取信息最高效的途径之一,因此也是各类网站、应用的基础标配功能。开发者想在自己的产品中实现搜索功能一般都是基于某个开源搜索系统(如ElasticSearch、Solr、Sphinx)搭建搜索服务。然而,除了购买主机或托管服务器,从系统熟悉、服务搭
建、功能定制,再到服务上线,通常需要耗费较长时间。

图片 1

生成所需密钥和证书

OpenVPN 使用 Easy-RSA 来管理PKI所需要的密钥和证书. Easy-RSA
现在有2和3两个主要版本, 使用方式略有不同. 下面分别介绍用法.
可以根据自己使用的版本选择一种来操作.

     openvpn 是基于SSL的vpn
,其使用工业标准的SSL/TLS协议实现第二层和第三层的安全数据链路VPN
.其优点如下:

一个很简单的逻辑问题是,你的东西越大,越复杂,其包含bug的可能性就越大。你用C语言写一个HelloWorld跟你写一个快速傅立叶变换对比,很明显,快速傅立叶的代码量更大,出错的可能性也越大,需要调试的时间也更长。当你累计书写了几十万行代码的时候,如果发生了内存溢出,你会比helloworld花费更长的时间去调试。以此类推到安全性上,也是一样。

云搜索是一种结构化数据的搜索托管服务,开发者可将数据上传至云端进行数据处理和索引构建,再通过API使用云搜索服务。它的出现很好地解决了以上问题。OpenSearch是阿里巴巴搜索事业部推出的一套自助式、可定制的云搜索服务,初衷是将阿里巴巴积累近10年的搜索引擎技术平台化、服务化,并开放给广大开发者,降低实现专业搜索产品的门槛,让开发者以较低的成本轻松拥有跟淘宝、天猫、一淘等应用的搜索工具类似的专业搜索产品。本文将介绍OpenSearch的发展历程、
基本功能及实现原理和架构,以实际应用场景为例讲述应用实践过程。

比SSH隧道安全更高、功能更多的一种解决方案是,让你的笔记本电脑成为VPN网络的一个成员。传统上,VPN是公司实施的一种安全机制,旨在让员工们在远离办公室时——或者甚至在同一家公司的远程分支机构时,可以全面而安全地访问企业网络。

Easy-RSA 2

      1 基于SSL协议,安全,并使用单一TCP 或者UDP 端口即可实现

所以,在这个层面上,我推荐OpenBSD,Theo de Raadt的理论是,简单即是美。

发展背景

2012年初,我们组建了云搜索技术团队,尝试将当时刚刚替换掉雅虎搜索的搜索引擎平台服务化和产品化。初期,OpenSearch的功能虽然简单,但已完全体现云服务的概念:用户通过各种方式上传数据到云端,云端进行数据处理和索引构
建,用户再通过API使用云端搜索服务,并整合到自己产品中。
产品Beta版发布后,在未做任何推广的情况下,服务了1200多家活跃网站,包括一些较大的垂直门户网站,例如威锋网、青岛新闻网等。

OpenSearch帮助开发者简化了使用搜索服务的复杂度,降低开发成本,加快产品迭代速度。以作文网为例,其站长仅靠自己摸索,从接触产品到上线仅用了一天时间。但我们也逐渐发现仅仅通过现有几个预制的应用场景模板远远满足不了开发者需求,因为不同属性的网站往往有不同的数据结构,千差万别的
相关性排序规则。

当时,我们内部在并行研发另外一款名为站内云搜索的产品,也是一款在云端提供搜索服务的产品,其数据结构固定,搜索结果样式可定制。站长开通这一服务后,网站数据可以被自动采集并进入系统。该产品的系统后台是从当时阿里云全网搜索系统中剥离出来的,本质上类似谷歌、百度
等站内搜索工具,只是实时性更好。但由于无法满足对数据结构、相关性排序等做深度定制等需求,产品被叫停。

这些事例让我们认识到,虽然用户对云搜索服务的需求很大,但一定要有深度定制的服务,否则无法满足开发者复杂多变的搜索需求。

2013年初,我们将精力集中在降低服务成本和提升产品功能上:一方面优化存储和搜索服务架构;另一方面开发数据结构、相关性排序、数据处理定制功能。一年时间内,OpenSearch快速迭代,服务了阿里集团内部上百个产品和应
用。这段时间的技术积累和内部业务的锤炼对OpenSearch至关重要,促使其系统架构更加完善、性能更高、稳定性更好,定制能力也能满足绝大部分搜索产品的需求,同时服务成本降到了一个较低的水平。2014年7月,OpenSearch完成全面改版,并向外部开发者开放,在公测阶段受到了广大开发者的欢迎。在2015年1月,OpenSearch正式开始商业化售卖。

但你没必要是个大人物才能享用VPN技术的好处。归功于免费开源的OpenVPN,你在家里就能组建起完全属于你自己的VPN服务器,然后能够从你所在的任何地方,安全地访问家庭局域网里面的资源。另外,你只要在OpenVPN配置中稍作几处细小调整,还能使用该服务器来安全地上网冲浪,这意味着你可以通过从笔记本电脑到远程OpenVPN服务器的加密隧道,重新路由发送所有网络流量。

安装

在Ubuntu 16.04上使用 apt 安装的是Easy-RSA 2:

# apt-get install -y easy-rsa

安装完成后, 可以在 /usr/share/easy-rsa/
目录下找到生成密钥对和证书的脚本.
这些脚本会将生成的密钥和证书放在当前目录, 为了安全, 我们将这些脚本复制到
/root 目录下:

# cp -r /usr/share/easy-rsa /root

      2 使用双向验证,服务器只需保存自己的证书和密钥;

可能了解OpenBSD的人并不多,但是说到OpenSSH可能无人不知,OpenSSH即是OpenBSD最先编写,并移植到其他操作系统包括Linux。OpenBSD以其自创建以来就不断强调的高安全性,赢得很多包括政府,军队,乃至大公司的支持。我们听说过的,包括银行,金融,信用卡,美国陆军的DARPA(虽然因为de
Raadt骂美国政府被取消了经费支持),乃至Adobe。OpenBSD作为高度强调安全性的系统,甚至被国际黑客破解大赛所禁用,唯一的原因是:无法破解。其诞生(1995)到现在已经快20年了,在默认安装情况下,仅发现了两个远程漏洞,这真是无法超越的成就。

产品功能

OpenSearch有以下一些主要功能。


支持文档索引结构定制,以及自由修改。OpenSearch将搜索引擎复杂的索引结构概念简单化、可视化和自助定制化。开发者可以通过控制台创建搜索实例,定制文档字段的结构和属性,包括字段名称、类型、分词方式、搜索属性等。搜索实例在运行过程中可以自由修改,满足了产品快速变化的需求,极大缩短了需求变更到上线的过程。

■ 支持多种数据接入方式,数据自动同步更新。开发者的数
据如果在阿里云的云存储服务(RDS、OSS、ODPS等)上,开发者
只需要在OpenSearch控制台中授权,数据就可以自动同步至
OpenSearch中,后续数据的更新也可以自动实时同步。而且在同一区域中,从云存储同步数据至OpenSearch
免收流量费用。数据不在阿里云上的开发者,可以通过RESTful
API或者SDK上传数据,小数据量也可以直接在控制台上传。


支持多表,插件式数据处理。类似于数据库,每个搜索实例可以创建一张或者多张表,每张表的字段上可以内置数据处理
插件,对字段内容做文本处理和转换,例如拼音转换、HTML
标签剔除、JSON数据解释等,多个表可以Join在一起实现多表联合查询。数据存放在RDS数据库里的开发者,可以用此功能
替代数据库全文检索,实现更高的性能和搜索体验。


支持搜索结果相关性两阶段排序定制,线上实时相关性调试。用户使用搜索功能的目的是从海量数据中找到自己想要的信息,搜索结果相关性排序是影响用户体验最关键的一环。
OpenSearch支持开发者定制两轮相关性排序规则来准确控制 搜索结果的排序。

第一轮为粗排,从命中的文档集合里海选出相关文档。支持配置字段、文本相关性和实效性算分特征的权重。第二轮为精排,对粗排的结果做更精细筛选,支持任意复杂的表达式和语
法。这样做除了方便开发者能更准确控制排序效果之外,更重要的是能优化系统性能,提高搜索响应速度。
开发者可以通过排序规则直接在控制台中调试效果,并在效果满意后直接切换
到线上。

OpenSearch底层搜索服务基于阿里自主研发的大规模分布式实时引擎平台ISearch
5,该平台有灵活的相关性计算框架和统
一的业务服务层,并且有自动容错和自动伸缩机制,承载了阿
里集团包括淘宝、天猫、神马搜索等在内的所有主要搜索业务流量,搜索请求峰值数十万QPS。图1是其整体架构图。

图片 2图1
OpenSearch整体架构

开发者通过控制台和API与系统交互。典型的使用流程是开发者进入控制台,创建应用实例,配置应用字段结构、搜索属
性、文本处理插件、定制相关性排序规则等。应用实例创建完
成后,开发者再通过SDK/API将数据推送至云端(阿里云存储
用户可以使用数据自动同步机制),数据实时进入Import子系统的数据导入服务模块(iStream
Service),经过格式解析和数
据处理后,存储在结构化数据存储系统中。随后,Dump子系统的数据导出服务(iStream
Service)将数据经过一定处理后发
送给实时消息队列系统,搜索系统从消息队列中订阅数据,在内存中构建索引并提供搜索服务。这个数据实
时流式处理过程大概十秒左右。

当开发者修改了索引结构后,需要对应用中的数据做增量索引
重建。为了保证搜索效率,系统也会定期对所有数据做全量重
建索引。索引重建流程参见图1红色箭头,这是一个非实时的流程,依数据大小不同可能需要几分钟到十几分钟,全量索引重建则需要数小时。

数据在云端经过一系列处理和索引构建后,开发者就可以通过API搜索应用实例中的数据,搜索请求会被发送到查询聚合服务Aggregator中。如果开发者配置了智能查询分析功能,Aggregator会将查询请求发送给查询改写服务QP,QP按照开发者配置的处理规则(如拼写纠错、同义词或者词权重)改写查询请求,并将改写后的查询回传给Aggregator,Aggregator最终将查询请求发送给搜索系统HA3,HA3根据开发者定制的相关性排序规则对命中的结果文档排序,并最终通过Aggregator将结果返回给开发者。为了保
证不同开发者各个应用数据推送和搜索相互不受影响,配额 管理服务(Quota
Server)会依据开发者的配额(实例容量和QPS峰值)对进入系统的数据和搜索请求频率做限流控制。

前面多次提到的HA3是阿里自主研发的新一代分布式实时搜索系统,中文名叫问天3,具备自动容灾、动态扩容、秒级实时等能力。图2是HA3系统模块组成图。

图片 3图2
HA3系统模块图

其中,Admin是整个系统的大脑,负责节点角色分配、调度决
策、FailOver处理、状态监测、动态扩容等。Amonitor是系统
的性能状态监控模块,收集和展示整个系统所有节点的性能参数。QRS是查询解析和改写服务,是系统对外的搜索接口。
Proxy是搜索代理模块,负责接收QRS的查询请求,并转发给下辖的所有Searcher节点。Searcher节点执行实际的查询匹配计算,将搜索结果汇总后回传给QRS。DeployExpress是分布式链式数据实时分发系统,负责将离线集群构建好的索引数据分发到各个Searcher节点。DeployExpress的最大亮点是将1份数据分发多份拷贝到Searcher节点,其分发时间接近单份拷贝的数据分发时间,而且单节点故障能自动恢复,不影响数据拷贝。在同等硬件条件下,基于1200万数据做单机性能对比测试发现,HA3比ElasticSearch开源系统的QPS高4倍,查询延迟低4倍。

图3是HA3的多集群异构部署图,其中部署了两个异构逻辑集群Cluster1和Cluster2,两者的硬件配置、索引结构、服务能力可以不同。这种部署一般用来实现冷热数据分层查询、异构数
据查询等功能。

图片 4图3
HA3多集群异构部署图

OpenSearch利用异构逻辑集群优化资源配置,提升系统服务能力和降低机器成本。不同特性的应用实例被分配在不同的逻辑
Cluster中。例如,QPS较高,数据量较少的应用实例分配在SSD磁盘的Cluster中,该Cluster列数较少,但行数较多,能承载较大的搜索流量;而一些QPS较低,数据量又较大的应用实例分配在普通磁盘Cluster中,该Cluster行数较少,但列数较多,能
承载海量的用户数据。当每个逻辑集群的数据量增大时,系统可以通过增加列(Partition)来扩大系统数据容量;当搜索流量
增大时,通过增加行来提升系统服务能力。

BKJIA编辑注:当然了,这样的策略也同样适合小型企业。)

生成CA密钥和证书

接下来的操作都是在 /root/easy-rsa 目录下进行的.

首先, 我们需要生成CA根密钥和证书, 用来给VPN
Server和Client的证书进行签名.

  1. 修改 vars 文件
    vars 文件里定义了后续生成密钥和证书所需要的环境变量.
    在文件里找到定义 KEY_COUNTRY, KEY_PROVINCE, KEY_CITY,
    KEY_ORG, 和 KEY_EMAIL 变量的部分,
    根据自己的实际情况修改为需要的值. 这几个值都不能留空. 如下

     export KEY_COUNTRY="CN"
     export KEY_PROVINCE="ZJ"
     export KEY_CITY="HZ"
     export KEY_ORG=" MyCompany"
     export KEY_EMAIL="support@mycompany.com"
    

    其它变量的意义可以参考文件中的注释, 一般不需要修改.
    修改保存后, 执行以下命令来使这些变量生效供后续操作使用:

     # source ./vars
    
  2. 生成密钥和证书
    接下来执行以下脚本来生成CA的密钥和证书

     # ./build-ca
    

    脚本会提示确认证书和密钥所需的字段, 默认值是在 vars 文件里指定的.
    脚本执行完后, 会在 keys 目录下生成CA的密钥 ca.key 和证书
    ca.crt .

      3
服务器只接受那些由主CA证书签名的客户端,并有撤回机制,而不需要重建个PKI;

但是,OpenBSD也有其自身的问题,FFS的读取和写入速度一直是大家所痛苦的根源,所以,在这里我打算拿OpenBSD作为OpenVPN的登录管理服务器使用。因为其强劲和安全的路由交换性能还是非常值得称道的。

应用实践

基于OpenSearch,开发者可以实现各种功能的搜索产品。例如,淘点点实现了基于地理位置的餐厅、外卖、代金券搜索,天猫魔盒实现了电影、电视剧搜索,宝宝树实现了问答、知识搜索,威锋网实现了论坛帖子搜索,书旗网实现了小说搜
索,来往实现了扎堆内容搜索。这些产品,不同程度地使用了
OpenSearch索引结构定制、数据自动同步、两阶段相关性排序
等定制功能。下面结合实际应用场景,讲述OpenSearch的应用实践过程。

下面以两个实际应用场景为例,介绍OpenSearch应用实践过程。

假设开发者做了一个小说网站,小说迷们可以在线搜索、阅读
小说。网站小说数量突破100万大关,活跃用户已过千万。随着
用户数量增长,搜索量越来越大,小说搜索功能刚刚从数据库全文检索迁移到某搜索引擎的站内搜索上。迁移后,虽然解决了搜索并发问题,但新的烦恼来了:搜索结果不全,新增小说无法及时搜索到,搜索功能单一,不支持按作者、章节搜索,不支持按分类、章节、状态、时间、阅读数、评分等条件过滤。在这个场景下,OpenSearch可以为其排忧解难。

开发者先登录OpenSearch控制台,在控制台中创建一个应
用实例,例如my_novel。创建过程中选择“小说类(builtin_
novel)”模板。这个模板已依据小说搜索的应用场景,预先定
义好了小说类数据的字段结构、搜索属性、排序规则、搜索结
果高亮配置等功能。

创建完应用实例后,可以编写代码上传数据。以PHP SDK为例:

//上传数据是json格式,字段根据实际模板不同

$json = <<

[{“fields”:{“id”:”0″,”title”:”the title”, “body”:”the body”},
“cmd”:”ADD”}, {“fields”:{“id”:”1″,”title”:”t he title”,”body”: “the
body”,}, “cmd”:”UPDATE”}, {“fi elds”:{“id”:”2″},”cmd”:”DELETE”}]

EOF;

client=newCloudsearchClient(accessKeyId, //替换成用户自己的AK ID
$secret, //替换成用户自己的AK Secret

array(‘host’ => ‘. com’),

“aliyun”

);

doc=newCloudsearchDoc(‘mynovel′,client);

// 添加文档,参数1是json格式的string或者数组,

// 参数2是应用实例的表名, 一个应用可以创建多张表doc−>add(json,
‘main’);

如果开发者的小说数据在阿里云云存储服务OSS中,一篇小说一个文件,存放在一个bucket下,在创建应用过程中,可以直接配置使用这个bucket作为数据源,小说数据将自动同步至OpenSearch中。

接下来使用API/SDK搜索云端的小说数据,代码示例:

search=newCloudsearchSearch;

// 添加指定搜索的应用:

search−>addIndex;//指定搜索的关键词,search->setQueryString(“default:’鬼吹灯'”);

// 指定搜索返回的格式。

$search->setFormat;

// 返回搜索结果。

$search->search();

到这里,小说搜索云端部分的工作就完成了。开发者可以前往
控制台“下载中心”下载小说搜索结果的模板,做简单修改后,
一个专业的小说搜索产品就可以上线了。此时,更新的小说能即刻搜索,搜索结果全而且结构丰富;搜索功能上不仅支持按书名和作者搜索,而且支持按分类、字数、状态过滤,按默认相
关性、更新时间、评分数、阅读数、推荐数、点击数排序。

实现效果如图4所示:

图片 5图4
小说搜索效果图

复杂场景:外卖搜索(场景中所有配置均为示例,开发者需 按实际需求调整)。

假设开发者开发了一个外卖App,聚合了上百万的外卖商家数据,用户可以在App中基于地理位置搜索附近的商家,支持按菜品、商家名搜索,按配送范围、配送速度、配送时间、菜品类
型等条件过滤,按人均消费、评价、距离远近排序。开发者基于数据库在实现这些功能的过程中碰到了一些问题:菜品或商家搜索匹配效果不理想,基于地理位置的排序效果不好,搜索结果无法定制(例如实现一些商业排序逻辑)。

对于这个场景,OpenSearch的内置模板目前并没有覆盖,但开发者仍然可以基于OpenSearch解决上述问题。首先,在创建应
用实例流程里,选择“自定义结构”,配置数据表的字段结构、
数据处理方式、索引属性,最后提交创建应用实例。表1中是配置
的字段和类型(限于篇幅字段数量做了精简)示例。

图片 6图片 7

激活应用实例后,进入“应用详情”配置页,选择“搜索结果相关性配置”,添加一个粗排配置,可以配置数值类型字段、文本相关性特征(static_bm25)、时效性(timeliness)特征的权重,例如:

static_bm25()*0.3 +speed_score*0.2 + sold_score*0.5

在粗排排序过程中,每家商家将按上述表达式计算分值。在这
个例子里,商家名的文本相关性特征的分值比重是0.3,配送评价分值比重是0.2,外卖评价分值比重是0.2。

接着,在“搜索结果相关性配置”界面中,继续添加一个精排配置,这里可以是一个非常复杂的表达式,例如:

text_relevance(auction_title)*3+if(text_
relevance(auction_title)>0.1, speed_score*1.5, speed_ score*0.6)

  • atan(speed_score + sold_score)*0.5

在精排排序过程中,粗排计算得到的商家按上述表达式计算分值。这个表达式用自然语言描述是:auction_title字段上的文本
相关性分值乘以3倍,如果auction_title字段的文本相关性分值大于0.1,则配送速度speed_score分值乘以1.5,否则乘以0.6。
speed_score、sold_score累加后做atan数学运算,比重是0.5。各
部分分值累加后作为商家的最后分值,所有商家按分值高低排
序后作为最终搜索结果返回。将添加的粗排、精排配置设置为默认,搜索结果就会按照自定义的规则排序。开发者也可以直
接在API或SDK中指定粗排、精排名称,具体参考API说明文档。

最后,在“应用详情”配置页中进入“搜索结果摘要”,添加需要做摘要和高亮的文本类型字段,配置摘要片段长度、片段数
量、高亮标签。这样配置后,将会在搜索返回的商家列表中将命中的搜索关键词高亮显示。

至此,商家搜索应用实例定制基本完成,开发者可以依据上一实
例介绍的方法上传数据,并且设计和开发产品的搜索结果页。

另外一个基于地理位置排序效果不好的问题,可以在搜索查询串中使用distance语法实现,例如:

sort=-distance(lon, lat, “20.23”, “20.84349”)

从上述介绍的应用实践案例可以看出,使用OpenSearch,对搜
索了解不多的开发者可以轻松上手;当数据结构复杂时,对相
关性要求高的开发者也能灵活定制。

为了给开发者提供更简洁、流畅的云搜索服务体验,我们将在 以下几方面发力。


增强相关性定制功能、提升定制灵活性。在粗排和精排规则中增加电商搜索、O2O地理位置搜索、图片搜索、音视频搜索
等常见业务场景的相关性特征函数。这些特征函数将进一步提高相关性排序效果。精排规则将允许使用成熟的脚本语言,例如Lua,来编写更加复杂的相关性排序逻辑。

■ 丰富应用场景模板。在应用场景模板方面,将预制更多模
板,并丰富搜索结果页样式,允许开发者定制样式,并将结果页在云端托管。再进一步,将支持开发者分享和交易自己创建的模板,传承开发者在各个领域积累的搜索经验。

■ 帮助开发者盈利。通过流量盈利:我们将对接广告系统,允
许开发者通过API在自己的搜索结果页中嵌入广告,或者在云端托管的搜索结果页中定制和嵌入广告,将搜索流量转换成广告收益。通过数据盈利:开发者以搜索服务的方式共享数据源在线交易,其他开发者利用这些数据定制和创建自己的产品。

云搜索服务在国内外都还刚刚起步,还没有广泛应用。但在可预见的未来,云搜索必将像其他基础云服务一样,成为互联网产品的基础设施。我们希望能和广大开发者一起努力,打造更为好用、更为强大的云搜索服务。

原文作者:jaredguo

先决条件

生成VPN Server密钥和证书

有了CA密钥和证书, 就可以生成VPN Server所需要的密钥和证书了.
执行以下脚本:

# ./build-key-server myvpn

脚本需要一个参数来指定证书和密钥的CN, 这里就是 myvpn ,
根据自己的需要来指定对应的值. 脚本在执行时,
同样会提示需要确认和输入的字段值. 脚本执行完成后, 同样会在 keys
目录下生成VPN Server的密钥和证书. 密钥和证书的文件名前缀都是指定的CN,
后缀分别是 crtkey . 在这里就是 myvpn.crtmyvpn.key .

      4 可以实现基于Common Name 的权限控制

其实影响一个操作系统在英语国家以外地区的推广,除了语言问题就是语言问题了。BSD系统对于本地化的支持似乎都不太好,这些系统的开发者们更注重安全,性能和稳定,所以国内使用BSD的人凤毛麟角。但是用好了,的确是节省成本和一劳永逸。

你可以将OpenVPN安装在市面上的任何一款操作系统上,不过最好是用Linux或*BSD。对我来说,选择Linux是明摆着的。虽然一开始我认为自己会选择Ubuntu
Server,但Amahi Home Server很快因极其容易的安装和配置而赢得了我的芳心。

生成Client密钥和证书

Client端同样需要CA签名过的密钥和证书来. 执行以下脚本:

# ./build-key hongling

类似于VPN Server的密钥证书生成脚本, 这个脚本参数同样是Client的CN.
根据提示确认和输入必要参数后, Client所需的密钥 hongling.key 和证书
hongling.crt 也会保存在 keys 目录下.

对于每个Client, 都需要生成一套密钥和证书.

二 系统环境:RHEL5.4
应用软件
 openvpn-2.1.4.tar.gz
     lzo-2.05.tar.gz
三 安装openvpn
   # tar xvf   lzo-2.05.tar.gz

选择安装OpenBSD的版本为最新发布的5.0。相比FreeBSD,OpenBSD的安装界面更加简陋,全命令行方式。另外,罗嗦一句,相比FreeBSD,OpenBSD硬件驱动的支持更糟,所以想体验OpenBSD,请找尽可能老旧的可使用的PC或服务器,否则很有可能垮在驱动问题上。de
Raadt以其固执的态度和无所不说的嘴,赢得了各大硬件厂商的不支持。

说到类似组建环境的软件部分,你其实只需要一款Linux发行版。至于硬件部分,配备奔腾3级处理器、512MB内存和20GB硬盘的这样一种中规中矩的设备完全够用了。另外,你总是可以为Amahi准备一个虚拟机,然后使用该虚拟机而不是物理机。实际上我就是这么做的。

生成Diffie Hellman参数

Diffie Hellman参数用于VPN Server和Client之间进行公钥交换. 执行以下脚本:

# ./build-dh

这个脚本执行完成以后, 可以在 keys 目录下找到生成的文件 dh2048.pem .
文件名中的2048是密钥长度, 可以在 vars 文件中设置, 默认为2048.

   #cd lzo-2.05

一、安装OpenBSD

至于虚拟化平台,我本该选择免费的VirtualBox软件——顺便说一下,这款软件可供Windows、Mac
OS
X和Linux等主机使用。但VMware很早就赢得了我的信任。说实话,我使用VMware的技术也觉得最自在。我那台旧iMac运行Mac
OS X Snow
Leopard,担任小型虚拟化主机的角色完全绰绰有余,于是我开始用VMware
Fusion构建了一台Amahi虚拟机。如果你的主机电脑运行Windows或Linux,又想继续使用VMware,那么你可以使用工作站版本或免费的VMware
Player。

Easy-RSA 3

   # ./configure
   # make

图片 8

我会在下文演示如何使用Amahi发行版来构建完全属于自己的OpenVPN家庭服务器,只要遵照七个步骤,轻轻松松就能搞定。

安装

在Centos 7.5上, 首先要确认是否安装了 epel 源:

# yum repolist

如果源列表中没有 epel 源, 需要安装:

# yum install -y epel-release

然后就可以安装 easy-RSA 了:

# yum install -y easy-rsa
# yum list installed easy-rsa

可以看到这里安装的是 Easy-RSA 3 . 安装目录在 /usr/share/easy-rsa .
对于不同的具体版本, 这个目录下的内容可能会有不同:

# ls -l /usr/share/easy-rsa/
总用量 4
lrwxrwxrwx 1 root root    5 7月  16 18:21 3 -> 3.0.3
lrwxrwxrwx 1 root root    5 7月  16 18:21 3.0 -> 3.0.3
drwxr-xr-x 4 root root 4096 7月  16 19:41 3.0.3

如以上情况中, 实际的安装目录在 3.0.3 子目录下. 为了安全,
将安装目录复制到 /root 目录下:

# cp -r /usr/share/easy-rsa/3.0.3 /root/easyrsa

后续密钥和证书操作都在 /root/easyrsa 目录下进行.

   # make check

按I安装,要大写I

要想有可能建立起VPN连接,客户机必须处在与服务器不同的子网。从哪个子网来连接你没得选择,不过可以确保你的OpenVPN服务器处在一个不太常见的子网,比如10.10.10.*或10.20.30.*等。你只要相应地设置住宅ADSL)路由器,可能还要重新配置局域网里面使用静态IP地址的任何个人电脑。话虽如此,在下面的一些屏幕截图中,你会看到我们的OpenVPN服务器处在极其常见的子网192.168.1.*里面。但那是由于我们构建的这台服务器只是用于本文演示而已。

生成CA密钥和证书

在生成密钥和证书前, 需要进行初始化:

# ./easyrsa init-pki

这个操作会在当前目录下创建 pki 子目录,
接下来的操作生成的文件都会保存在这个子目录里. 如果这个 pki
子目录已经存在, 这个操作会将子目录下所有的文件清空. 所以,
如果希望重新生成所有的密钥和证书资源, 也可以使用这个命令.

接下来就可以生成CA的密钥和证书了:

# ./easyrsa build-ca

这个命令会要求输入密钥的密码和证书的CN. 这个密钥在后续给VPN
Server和Client的证书签名里, 会用到. 命令完成后, 会在 pki
目录下生成密钥文件 ca.key 和证书文件 ca.crt . 有了CA的密钥和证书,
就可以生成VPN Server和Client的密钥和证书了.

   # make test    

图片 9

生成VPN Server的密钥和证书

首先, 需要生成Server的密钥和签名请求:

# ./easyrsa gen-req myvpn

命令的输入参数是使用这套密钥和证书的实体名,
这个名字会用来标识生成的文件, 并作为证书默认的CN. 同样,
这个命令会提示输入密钥密码和CN. 其中密钥在后续启动VPN Server时需要验证,
而CN的默认值就是命令的参数. 命令完成后, 会在 pki/reqs
下生成签名请求文件, pki/private 下生成密钥文件.
在这个例子中文件名分别为 myvpn.reqmyvpn.key .

然后对生成的请求进行签名, 生成VPN Server的证书:

# ./easyrsa sign-req server myvpn

这个命令接收两个参数, 第一个是证书类型, 这里是 server ,
第二个是证书使用的实体名, 需要和上一步生成签名请求的实体名一致,
这里同样为 myvpn . 命令会提示要求确认证书信息, 并输入CA的密钥密码.
命令执行完成后, 会在 pki/issued 目录下生成CA签名的证书, 在这个例子里,
文件名是 myvpn.crt .

   # make install

回车

生成VPN Client的密钥和证书

生成Client需要的密钥和证书与生成Server的密钥和证书基本一致.
比如我们希望创建一个为用户 hongling 创建密钥和证书:

# ./easyrsa gen-req hongling
# ./easyrsa sign-req client hongling

唯一的不同是 sign_req 的第一个参数需要指定为 client .
以上两个命令执行完成后, 会生成文件 pki/private/hongling.key ,
pki/reqs/hongling.reqpki/issued/hongling.crt .

   #tar xvf openvpn-2.1.4.tar.gz

图片 10

生成Diffie-Hellman参数文件

为了在Server和Client之间交换密钥, 需要生成Diffie-Hellman参数文件:

# ./easyrsa gen-dh

命令执行完成后, 会在 pki
目录下生成长度为2048位的Diffie-Hellman参数文件 dh.pem .

   #cd openvpn-2.1.4

输入主机名 localhost,你也可以输别的

安装和配置VPN Server

   #./configure

图片 11

安装

在Ubuntu下, 执行

# apt-get install -y openvpn

在CentOS下, 需要首先确认安装了 epel 源, 然后执行以下命令来安装
OpenVPN :

# yum install -y openvpn

   #make && make install

选择网卡,回车即可。

配置

OpenVPN 安装完成后, 可以在 /usr/share/doc/openvpn
目录下找到示例配置文件. 目录在不同的版本或者Linux下可能会略有不同, 比如
/usr/share/doc/openvpn-2.4.6 , 目录结构也会略有不同. 将 server.conf
文件复制到 /etc/openvpn/server 目录下, 命名为VPN Server的CN.
如果没有这个目录, 可以手动创建.

# cp /usr/share/doc/openvpn/sample/sample-config-files/server.conf /etc/openvpn/server/myvpn.conf

然后将CA的证书, VPN Server的证书和密钥, 以及Diffie-Hellman参数文件复制到
/etc/openvpn/server 目录下:

# cp /root/easyrsa/pki/ca.crt /etc/openvpn/server
# cp /root/openvpn/easyrsa/pki/issued/ myvpn.crt /etc/openvpn/server
# cp /root/easyrsa/pki/private/myvpn.key /etc/openvpn/server
# cp /root/easyrsa/pki/dh.pem /etc/openvpn/server/

接下来修改配置文件. 这里只做最基本的修改:

  1. 修改Server密钥和证书文件名
    找到 certkey 两个配置项, 原始值分别为 server.crt
    server.key . 这里修改为 myvpn.crtmyvpn.key :

     cert myvpn.crt
     key myvpn.key  # This file should be kept secret
    
  2. 修改Diffie-Hellman参数文件名
    找到 dh 配置项, 修改为 dh.pem :

     dh dh.pem
    
  3. 关闭 TLS-auth
    找到 tls-auth 配置项, 如果配置项存在, 将其注释掉或者删除,
    因为这里我们没有生成所需要的资源.

四   配置openv

图片 12

激活IP转发

我们使用的是TUN工作模式, VPN Server上需要激活操作系统的IP转发功能,
这样VPN Server才能正常的作为VPN的网关工作.

执行以下命令激活当前系统运行时的IP转发功能:

 # sysctl -w net.inet.ip.forwarding=1

同时, 在 /etc/sysctl.conf 文件中添加

net.ipv4.ip_forward=1

以便在系统重启后, 仍然会自动激活IP转发.

   1 为openvpn
建立专用CA,并分别为Openvpn的服务器端机器各个客户端申请所需要的证书;openvpn
支持两种认证模型:以共享密钥及基于TLS 认证模型.
出于安装机器简话认证过程等目的,Openvpn
要求服务器端在建立通信前进行基于证书的双向认证.而证书的使用依赖于PKI
 OpenVPN 为使用私有的CA 来颁发证书准备了许多脚本,在openvpn
源码包下面的easy-rsa 下面
2 创建CA及Openvpn
服务器和个客户端所需要的证书,需啊哟为证书使用者所处的国家等信息,而这些可以在vars
文件中指定其默认值,参数包括
#cd /root/openvpn/openvpn-2.1.4/easy-rsa/2.0
#vim   vars

我是虚拟机演示,没有分配地址,做dhcp,装完会说明如何手动配置网络地址。

配置防火墙

如果VPN Server所在的操作系统上安装了防火墙, 需要为 OpenVPN 进行配置.

export KEY_COUNTRY=”CN”
export KEY_PROVINCE=”SHANGHAI”
export KEY_CITY=”SHANGHAI”
export KEY_ORG=”Frank”
export KEY_EMAIL=623195090@qq.com
3 配置PKI
#source vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on
/root/openvpn/openvpn-2.1.4/easy-rsa/2.0/keys

接下来会问你是否分配IPv6和是否配置其他网卡,连按三个回车即可。

CentOS

首先我们可以通过以下命令查看 OpenVPN 的相关信息:

# firewall-cmd --permanent --info-service=openvpn
openvpn
  ports: 1194/udp
  protocols:
  source-ports:
  modules:
  destination:

上面的配置中, OpenVPN 服务开启的是默认的 1194/udp 端口.
如果我们希望使用非默认端口, 比如 2194/udp ,
可以使用以下命令将新端口加入服务配置, 并将原有默认端口删除:

# firewall-cmd --permanent --service=openvpn --add-port=2194/udp
# firewall-cmd --permanent --service=openvpn --remove-port=1194/udp

接下来我们可以查看防火墙的已激活配置:

# firewall-cmd --permanent --list-services
ssh

上面的例子里, 防火墙只激活了 ssh 服务. 我们需要将 OpenVPN 激活

# firewall-cmd --permanent --add-service=openvpn

要使上面的配置生效, 需要重装防火墙配置:

# firewall-cmd --reload

[root@openvpn 2.0]# ./clean-all
4 创建本地CA
[root@openvpn 2.0]# ./build-ca
Generating a 1024 bit RSA private key
………………………………………………………++++++
……..++++++

然后会问你root密码,输两次即可

Ubunut

TBD

writing new private key to ‘ca.key’

You are about to be asked to enter information that will be incorporated

into your certificate request.
What you are about to enter is what is called a Distinguished Name or a
DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter ‘.’, the field will be left blank.


Country Name (2 letter code) [CN]:
State or Province Name (full name) [SHANGHAI]:

Locality Name (eg, city) [SHANGHAI]:
Organization Name (eg, company) [Frank]:
Organizational Unit Name (eg, section) []:Frank

Common Name (eg, your name or your server’s hostname) [Frank CA]:FRANK

Name []:frank
Email Address [623195090@qq.com]:
4 为Openvpn 创建密钥及证书
 [root@openvpn 2.0]# ./build-key-server server

Generating a 1024 bit RSA private key
……………………………………………………….++++++
..++++++

然后会问是否开机启动sshd,当然,否则怎么登录。

作为系统服务启动

先检查是否有我们希望使用的服务配置文件. 在 /lib/systemd/system
目录下查看是否有 openvpn-server@.service 文件. 如果没有, 复制
openvpn@.service 文件为 openvpn-server@.serivce , 然后将文件中指向
/etc/openvpn 目录的值, 都修改为 /etc/openvpn/server 目录. 例如:

WorkingDirectory=/etc/openvpn/server
ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn/server --script-security 2 --config /etc/openvpn/server/%i.conf --writepid /run/openvpn/%i.pid

有了 openvpn-server@.service 文件, 执行以下命令激活并启动系统服务:

# systemctl enable openvpn-server@myvpn
# systemctl start openvpn-server@myvpn

服务名 openvpn-server@myvpn@ 后面的部分 myvpn
/etc/openvpn/server 下配置文件的前缀, 在我们的例子里是
/etc/openvpn/server/myvpn.conf . 可以根据实际的配置情况相应调整.

在启动服务时, 会提示使用 systemd-tty-ask-password-agent 命令输入密码.
在当前终端上直接执行

# systemd-tty-ask-password-agent

然后根据提示输入创建VPN Server密钥时指定的密码.

启动后可以查看服务状态是否为 Active :

# systemctl status openvpn-server@server

启动成功的话, 可以看到一个新增的TUN设备, 因为默认 OpenVPN 是使用TUN.
其IP地址为VIP的子网网关, 默认为10.8.0.1 :

# ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:16:3e:13:0e:9c brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.228/24 brd 172.16.0.255 scope global dynamic eth0
       valid_lft 314765499sec preferred_lft 314765499sec
10: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none
    inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
       valid_lft forever preferred_lft forever

默认配置下, OpenVPN 的日志输出到系统日志, 可以查看文件
/var/log/syslog 或者使用 journalctl 命令查看.

writing new private key to ‘server.key’

You are about to be asked to enter information that will be incorporated

into your certificate request.
What you are about to enter is what is called a Distinguished Name or a
DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter ‘.’, the field will be left blank.


Country Name (2 letter code) [CN]:
State or Province Name (full name) [SHANGHAI]:

Locality Name (eg, city) [SHANGHAI]:
Organization Name (eg, company) [Frank]:
Organizational Unit Name (eg, section) []:Frank

Common Name (eg, your name or your server’s hostname) [server]:

Name []:frank
Email Address [623195090@qq.com]:
 
Please enter the following ‘extra’ attributes

to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from
/root/openvpn/openvpn-2.1.4/easy-rsa/2.0/openssl.cnf

Check that the request matches the signature

Signature ok
The Subject’s Distinguished Name is as follows

countryName           :PRINTABLE:’CN’
stateOrProvinceName   :PRINTABLE:’SHANGHAI’
localityName          :PRINTABLE:’SHANGHAI’
organizationName      :PRINTABLE:’Frank’
organizationalUnitName:PRINTABLE:’Frank’
commonName            :PRINTABLE:’server’
name                  :PRINTABLE:’frank’
emailAddress          :IA5STRING:’623195090@qq.com’
Certificate is to be certified until Aug 9 17:43:47 2021 GMT (3650 days)

Sign the certificate? [y/n]:y
 
 
1 out of 1 certificate requests certified, commit? [y/n]y

Write out database with 1 new entries
Data Base Updated
5 创建客户端的的密钥及证书
[root@openvpn 2.0]# ./build-key frank
Generating a 1024 bit RSA private key
…………………..++++++
….++++++

问ntpd是否启动,默认是否,可以改成yes

使用密码文件

在上面的例子中, 启动 OpenVPN 服务时, 需要使用
systemd-tty-ask-password-agent 命令手工输入VPN Server密钥的密码.
这种方式十分不方便, 这里介绍读取密码文件的配置方式.

首先, 在VPN Server配置文件所在的目录下, 将密码保存到和配置文件前缀相同的
.pass 文件里. 在这个例子里, 我们将密码保存到
/etc/openvpn/server/myvpn.pass :

# echo "mypassword" > /etc/openvpn/server/myvpn.pass

接下来修改系统服务的配置文件. 打开
/lib/systemd/system/openvpn-server@.service 文件, 找到 Service
部分的 ExecStart 配置项, 在启动命令中添加参数 --askpass %i.pass,
如下例:

ExecStart=/usr/sbin/openvpn --status %t/openvpn-server/status-%i.log --status-version 2 --suppress-timestamps --config %i.conf --askpass %i.pass

保存后, 再创建服务 openvpn-server@myvpn 并启动时,
就会自动读取密码文件中的密码了.

writing new private key to ‘frank.key’

You are about to be asked to enter information that will be incorporated

into your certificate request.
What you are about to enter is what is called a Distinguished Name or a
DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter ‘.’, the field will be left blank.


Country Name (2 letter code) [CN]:
State or Province Name (full name) [SHANGHAI]:

Locality Name (eg, city) [SHANGHAI]:
Organization Name (eg, company) [Frank]:
Organizational Unit Name (eg, section) []:Frank

Common Name (eg, your name or your server’s hostname) [frank]:  

Name []:frank
Email Address [623195090@qq.com]:
 
Please enter the following ‘extra’ attributes

to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from
/root/openvpn/openvpn-2.1.4/easy-rsa/2.0/openssl.cnf

Check that the request matches the signature

Signature ok
The Subject’s Distinguished Name is as follows

countryName           :PRINTABLE:’CN’
stateOrProvinceName   :PRINTABLE:’SHANGHAI’
localityName          :PRINTABLE:’SHANGHAI’
organizationName      :PRINTABLE:’Frank’
organizationalUnitName:PRINTABLE:’Frank’
commonName            :PRINTABLE:’frank’
name                  :PRINTABLE:’frank’
emailAddress          :IA5STRING:’623195090@qq.com’
Certificate is to be certified until Aug 9 18:45:05 2021 GMT (3650 days)

Sign the certificate? [y/n]:y
 
 
1 out of 1 certificate requests certified, commit? [y/n]

CERTIFICATION CANCELED

图片 13

问是否启动X windows,不,不要那些占用系统资源的东西,所以输入no

配置Client

不同的系统下使用的 OpenVPN 客户端是不同的,
不过需要的配置和资源是相同的. 这里, 我们先准备Client需要的配置和资源.

/root 下创建一个目录 vpnclient/hongling 来存放用户 hongling
所需要的所有资源.

同样, 在 /usr/share/doc/openvpn 下找到 client.conf 文件, 将其复制到
/root/vpnclient/hongling 目录下. 然后将CA证书,
以及客户端的密钥和证书也放到这个目录下:

# cp /usr/share/doc/openvpn/sample/sample-config-files/client.conf /root/vpnclient/hongling/hongling.conf
# cp /root/easyrsa/pki/ca.crt /root/vpnclient/hongling
# cp /root/easyrsa/pki/private/hongling.key /root/vpnclient/hongling
# cp /root/easyrsa/pki/issued/hongling.crt /root/vpnclient/hongling

接下来修改配置文件, 使其与之前Server端的配置一致.

  1. 指定Server地址
    找到 remote 配置项, 将地址和端口改为期望值. 端口默认为1194,
    如果Server端没有修改, 这里保留1194的值. 如:

     remote myvpn.com 1194
    
  2. 修改密钥和证书文件名
    找到 certkey 配置项, 将其修改为当前用户的文件名, 如:

      cert  hongling.crt
      key hongling.key
    
  3. 关闭 TLS-auth
    找到 tls-auth 配置项, 如果配置项存在, 将其注释掉或者删除,
    因为这里我们没有生成所需要的资源.

图片 14

客户端安装和运行

不同操作系统需要使用不同的客户端软件, 接下来介绍Linux, Mac
OS和Windows上的客户端的主要用法.

后续操作都是将前一步生成好的所有客户端配置文件和资源文件下载到客户端系统后进行的.

然后输入时区,如果没有提示,则输入Asia/Shanghai即可

Linux

CentOS和Ubunut下也可以和VPN Server端一样直接安装 openvpn ,
然后将客户端配置文件放到一个安全的目录, 比如 /root/hongling .
接下来有三种方式来启动客户端.

接下来就是硬盘分区了。一路回车即可

在终端前台运行

进入配置文件目录, 如 /root/hongling , 然后执行:

# openvpn --config client.conf

然后命令会提示输入密钥密码, 也就是我们在生成客户端密钥时指定的密码.
命令的日志会在当前终端上输出.

图片 15

在终端后台运行

在终端后台启动和运行 OpenVPN 时, 程序没有办法从终端获取密码输入,
我们只能使用文件的方式来提供密码. 将密码保存到文本文件里:

# echo "mypass" > /root/hongling/hongling.pass

接下来可以在任意目录执行以下命令启动 OpenVPN

# openvpn --config /root/hongling/hongling.conf --cd /root/hongling--daemon --askpass /root/hongling/hongling.pass

OpenVPN 的日志会出现在系统日志中.

图片 16

作为系统服务启动

将客户端配置文件, 证书和密钥都复制到 /etc/openvpn/client 目录下,
如果没有 client 目录, 可以手工创建. 然后再将客户端密钥密码保存到
/etc/openvpn/client/hongling.pass 文件中.
具体文件名前缀和配置文件保存一致.

/lib/systemd/system 目录下查找 openvpn-client@.service 文件.
如果没有, 复制 openvpn@.service 文件为 openvpn-client@.service 文件,
然后将文件中的使用 /etc/openvpn 目录的地方都改为 /etc/openvpn/client
目录. 同时, 在启动命令中添加密码文件参数 --askpass %i.pass .
如下例如示:

WorkingDirectory=/etc/openvpn/client
ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn/client --script-security 2 --config /etc/openvpn/client/%i.conf --writepid /run/openvpn/%i.pid --askpass /etc/openvpn/client/%i.pass

然后就可以激活并启动服务了:

# systemctl enable openvpn-client@hongling
# systemctl start openvpn-client@hongling

OpenVPN 的日志会出现在系统日志中.

以以上三种方式的任一一种连接VPN成功以后, 可以查看到OpenVPN创建的TUN设备,
类似:

2: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none
    inet 10.8.0.10 peer 10.8.0.9/24 scope global tun0
       valid_lft forever preferred_lft forever

同时, 也可以PING通VPN网关, 如默认配置下:

# ping -c 5 10.8.0.1
PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.
64 bytes from 10.8.0.1: icmp_seq=1 ttl=64 time=5.78 ms
64 bytes from 10.8.0.1: icmp_seq=2 ttl=64 time=5.48 ms
64 bytes from 10.8.0.1: icmp_seq=3 ttl=64 time=5.54 ms
64 bytes from 10.8.0.1: icmp_seq=4 ttl=64 time=6.83 ms
64 bytes from 10.8.0.1: icmp_seq=5 ttl=64 time=5.55 ms

--- 10.8.0.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4007ms
rtt min/avg/max/mdev = 5.481/5.841/6.831/0.512 ms

接下来是格式化硬盘和选择安装包如果你不需要某个安装包,就打 “-包名.tgz”

Mac OS

在Mac OS上, 我们需要安装
Tunnelblick客户端来连接VPN.

安装完成后找开 Tunnelblick , 进入 配置 窗口, 再同时打开访达,
进入存放配置, 证书和密钥文件的目录, 然后将配置文件拖入 Tunnelblick
的配置列表

图片 17

添加完配置后, 选中配置, 然后点击右下角的 连接 来连接到VPN Server

图片 18

连接成功, 同样可以在终端PING通VPN网关. 如果连接不成功, 可以查看
Tunnelblick 上的日志排查问题.

比如我不想要game50.tgz,则打 “-game50.tgz” 回车。

Windows

Windows系统上, 可以在OpenVPN Community
Download页面上找到Windows安装程序的下载地址.
下载并根据提示安装成功后, 在用户目录下会多出一个 OpenVPN 目录.
将客户端配置, 密钥和密钥文件复制到这个目录的 config 子目录下. 接着启动
OpenVPN GUI 程序, 然后可以在右下角提示栏, 在弹出窗口中点击 Settings
来修改配置:

图片 19

Advance 窗口中, 将 Extension 项改为期望值. 在本例中, 应当为
conf :

图片 20

保存修改后, 在提示栏中再次点击 OpenVPN 图标, 然后在弹出菜单中点击
Connect 来连接VPN Server:

图片 21

连接成功后, 可以在 cmd 窗口中PING通VPN网关.

全部选择完成后,直接敲回车即可。

参考资料

  • OpenVPN
    HOWTO

  • Easy-RSA 3
    Quickstart

图片 22

然后就开始安装系统了。这时我们说一下,硬盘分区默认即可,但你可以按照自己的分区去定义。通常它自己不会把/usr定的很大,这样对于我们用ports安装软件不太方便,但是没关系,我们有别的解决办法,当然最好还是自己定义一下。

图片 23

选择扩展的软件安装路径,直接回车即可。

图片 24

安装完成。Congratulations!下节我说说配置网络安装软件和OpenVPN的安装配置。

取出光盘,敲reboot重启,就可以感受OpenBSD了

图片 25

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图