设为首页 收藏本站
查看: 2012|回复: 0

[经验分享] Ubuntu16.04系统Open×××的实施过程

[复制链接]
发表于 2019-1-27 11:51:56 | 显示全部楼层 |阅读模式
  为什么需要 Open×××
  对我来讲,有两个原因:
  ·   安全地在不安全的网络环境下上网:如需要在酒店、咖啡厅或者不可信任的 Wi-Fi 环境下上网时,我需要确保自己不会被监听。
  ·   跨过防火墙,享受自由的网络环境。
  那么,为什么我不用 ShadowSocks 呢?答案是,其实我也在用,不过它在 iOS 上的表现确实无法令人满意,另外,PC 端使用 Chrome 配合 ss ×××的时候需要很复杂的配置(或许我不会用吧),相比之下, Open××× 可以非常方便的全部搞定(除了安装比较复杂)。所以,这篇博客记录下 Open××× 服务的安装过程,以供参考。
  文中使用的服务器是 Ubuntu 16.04,不过 Debian 系的操作系统应该是可以通用的。
  安装 Open×××,设置 CA 目录
  首先,在服务器端安装 Open××× 服务。我们可以很方便地通过 apt-get 安装,另外我们也需要安装easy-rsa:
  $ sudo apt-get update
  $ sudo apt-get install open easy-rsa
  然后,复制 easy-rsa 模板到 home 目录:
  $ make-cadir ~/open-ca
  $ cd ~/open-ca
  配置 CA 变量
  进入 open-ca 目录之后,用 vim (或者任意编辑器) 打开 vars 文件,到最后一部分,你将会看到如下内容:
  . . .
  export KEY_COUNTRY="US"
  export KEY_PROVINCE="CA"
  export KEY_CITY="SanFrancisco"
  export KEY_ORG="Fort-Funston"
  export KEY_EMAIL="me@myhost.mydomain"
  export KEY_OU="MyOrganizationalUnit"
  . . .
  修改为任意你想要修改的值,只要不留空就好了:
  . . .
  export KEY_COUNTRY="CN"
  export KEY_PROVINCE="BJ"
  export KEY_CITY="Beijing"
  export KEY_ORG="xlzd"
  export KEY_EMAIL="what@the.fuck"
  export KEY_OU="Community"
. . .
  然后,还需要将 KEY_NAME 改为你喜欢的,这里简单起见,我们改成 server:
  export KEY_NAME="server"
  然后,保存并关闭文件。
  构建 Certificate Authority
  在刚才的目录中,执行 source vars ,然后,你将会看到如下输出:
  NOTE: If you run ./clean-all, I will be doing a rm -rf on /home/xlzd/open***-ca/keys
  然后执行:
  $ ./clean-all
  $ ./build-ca
  这将会启动创建根证书颁发密钥、证书的过程。由于我们刚才修改了 vars 文件,所有值应该都会自动填充。所以,一路回车就好了:
  Output
  Generating a 2048 bit RSA private key
  ..........................................................................................+++
  ...............................+++
  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) [BJ]:
  Locality Name (eg, city) [Beijing]:
  Organization Name (eg, company) [xlzd]:
  Organizational Unit Name (eg, section) [Community]:
  Common Name (eg, your name or your server's hostname) [the.fuck]:
  Name [server]:
  Email Address [waht@the.fuck]:
  到此,我们就有了创建以下步骤需要的 CA 证书。
  创建服务器端证书、密钥和加密文件
  执行 ./build-key-server server 命令,然后继续一路回车就好了。到最后,你需要输入两次 y 注册证书和提交:
  . . .
  Certificate is to be certified until May  1 17:51:16 2026 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
  然后还需要生成一些其他东西,在终端执行 ./build-dh,这个操作大约会花费几分钟不等。然后,我们可以生成 HMAC 签名加强服务器的 TLS 完整性验证功能:
  open --genkey --secret keys/ta.key
  生成客户端证书、密钥对
  这一步之后可能会执行多次以生成不同的证书,这里我们以 xclient 作为第一组密钥对的名字:
  cd ~/open-ca
  source vars
  ./build-key xclient
  跟刚才一样,一路回车就好。
  配置 Open××× 服务
  首先,复制文件到 Open××× 的目录下:
  $ cd ~/open-ca/keys
  $ sudo cp ca.crt ca.key server.crt server.key ta.key dh2048.pem /etc/open
  然后,复制并解压一个 Open××× 的配置示例:
  $ gunzip -c /usr/share/doc/open/examples/sample-config-files/server.conf.gz | sudo tee /etc/open/server.conf
  接着是调整配置,打开 /etc/open**/server.conf 文件,找到 redirect-gateway 的位置,去掉注释,修改为如下:
  push "redirect-gateway def1 bypass-dhcp"
  然后找到 dhcp-option 位置,修改为下面这样:
  push "dhcp-option DNS 208.67.222.222"
  push "dhcp-option DNS 208.67.220.220"
  再找到 tls-auth 位置,去掉注释,并在下面新增一行:
  tls-auth ta.key 0 # This file is secret
  key-direction 0
  最后,去掉 user 和 grup 行前的注释:
  user nobody
  group nogroup
  调整服务器网络配置
  允许 IP 转发
  编辑 /etc/sysctl.conf 文件,去掉 net.ipv4.ip_forward 设置前的注释:
  net.ipv4.ip_forward=1
  输入 sudo sysctl -p 以读取文件并对当前会话生效。
  调整 UFW 规则
  编辑 /etc/ufw/before.rules 文件,在文件顶部,新增如下 11-18 行的内容:
  01 #
  02 # rules.before
  03 #
  04 # Rules that should be run before the ufw command line added rules. Custom
  05 # rules should be added to one of these chains:
  06 #   ufw-before-input
  07 #   ufw-before-output
  08 #   ufw-before-forward
  09 #
  10
  11 # START OPEN××× RULES
  12 # NAT table rules
  13 nat
  14 :POSTROUTING ACCEPT [0:0]
  15 # Allow traffic from Open××× client to eth0
  16 -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
  17 COMMIT
  18 # END OPEN××× RULES
  19
  20 # Don't delete these required lines, otherwise there will be errors
  *filter
  . . .
  其中,第 16 行还需要做一点调整。在终端执行 ip route | grep default 命令,你会看到类似如下的输出:
  default via 100.110.78.1 dev ens3
  dev 之后的内容便是我们需要的,如我执行后输出如上,则我需要的是 ens3,每个人的结果可能不同,用它替换掉刚才文件第 16 行的 eth0,然后保存文件,退出。
  接着需要修改 /etc/default/ufw 文件,找到 DEFAULT_FORWARD_POLICY 设置,修改为:
  DEFAULT_FORWARD_POLICY="ACCEPT"
  打开 Open××× 端口并使变化生效
  执行下面的命令:
  $ sudo ufw allow 1194/udp
  $ sudo ufw disable
  $ sudo ufw enable
  启动 Open×××
  执行:
  $ sudo systemctl start open@server
  然后设置自启动:
  $ sudo systemctl enable open@server
  创建客户端配置
  执行:
  $ mkdir -p ~/client-configs/files
  $ chmod 700 ~/client-configs/files
  $ cp /usr/share/doc/open***/examples/sample-config-files/client.conf ~/client-configs/base.conf
  然后打开 ~/client-configs/base.conf 文件,修改 remote server_IP_address 1194 一行为你的服务器公网 IP,然后去掉 user 和 group 前的注释:
  #Downgrade privileges after initialization (non-Windows only)
  user nobody
  group nogroup
  找到 ca/cert/key,注释掉:
  #SSL/TLS parms.
  #See the server config file for more
  #description.  It's best to use
  #a separate .crt/.key file pair
  #for each client.  A single ca
  #file can be used for all clients.
  #ca ca.crt
  #cert client.crt
  #key client.key
  最后在文件末新增一行:
  key-direction 1
  保存,退出文件。
  创建配置生成脚本
  新建 ~/client-configs/make_config.sh 文件,复制如下内容:
  #!/bin/bash

  #First argument: Client>  KEY_DIR=~/open***-ca/keys
  OUTPUT_DIR=~/client-configs/files
  BASE_CONFIG=~/client-configs/base.conf
  cat ${BASE_CONFIG} \
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-668209-1-1.html 上篇帖子: 探测文件存在与否push状态至falcon 下篇帖子: Mysql master slave Failed to open the relay log
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表