参考:https://kaive.me/2017/07/17/Open***/

主要区别就是easy-rsa从2版本更新到3*版本了,配置方式和文件存放目录发生了变化。

1.安装 在配置open***的过程中还需要安装easy-rsa ,主要用来生成秘钥。

yum -y install  epel-release

yum -y install  open*** easy-rsa


第一种方式:(推荐)

复制配置文件

cp /usr/share/doc/open***-2.4.6/sample/sample-config-files/server.conf /etc/open***/

cp /usr/share/doc/easy-rsa-3.0.3/vars.example   /etc/open***/vars

cp -rf /usr/share/easy-rsa/3.0.3/*   /etc/open***/

制作根证书

cd /etc/open***

./easyrsa init-pki                   #初始化证书目录pki

./easyrsa build-ca nopass     #创建根证书,提示输入Common Name,名称随意,但是不能和服务端证书或客户端证书名称相同

./easyrsa gen-dh                   #生成Diffle Human参数,它能保证密钥在网络中安全传输

制作服务端证书

./easyrsa build-server-full server nopass # server是服务端证书名称,可以用其它名称

制作客户端证书

./easyrsa build-client-full client nopass # client是客户端证书名称,可以用其它名称


第二种方式

复制配置文件

cp /usr/share/doc/open***-2.4.6/sample/sample-config-files/server.conf /etc/open***/

cp /usr/share/doc/easy-rsa-3.0.3/vars.example   /etc/open***/server/vars

cp /usr/share/doc/easy-rsa-3.0.3/vars.example   /etc/open***/client/vars

cp -rf /usr/share/easy-rsa/3.0.3/*   /etc/open***/server/

cp -rf /usr/share/easy-rsa/3.0.3/*   /etc/open***/client/

服务端:(这里采用无密码方式创建相关文件,避免后期输入pam密码的各种麻烦)

cd /etc/open***/server/

  1. ./easyrsa init-pki                     #初始化pki目录,默认存放证书和秘钥的地方

  2. ./easyrsa build-ca nopass             #以无密码方式创建服务器根证书

  3. ./easyrsa gen-dh                                           #生成Diffle Human参数,它能保证密钥在网络中安全传输

  4. ./easyrsa gen-req server nopass   #创建服务端key文件,名字建议不要和前面的cn一样

  5. ./easyrsa sign server server    #制作服务端证书,生产服务端crt文件

客户端:

 cd /etc/open***/client/

  1. ./easyrsa init-pki                                     #初始化,会在当前目录创建PKI目录,用于存储一些中间变量及最终生成的证书 

  2. ./easyrsa gen-req client nopass      #创建客户端private key,nopass表示不加密private key

  3. cd /etc/open***/server/

  4. ./easyrsa import-req /etc/open***/client/client.req  client     #回到制作server证书时的那个目录,导入client端证书,准备签名 

  5. ./easyrsa sign client client                     #制作客户端证书,如果设置了密码,输入build-ca时设置的那个密码 


注意:ca、server和client的Common Name最好不要设置为一样,open***连接时会有问题 (我这里是server和cilent来区分的)

至此,server和client端证书已制作完毕 !

修改配置文件server.conf

local a.b.c.d # 填服务器真实IP

port 1194     #如果要修改默认端口,一定关闭selinux

proto tcp

dev tun

ca /etc/open***/pki/ca.crt

cert /etc/open***/pki/issued/server.crt

key /etc/open***/pki/private/server.key

dh /etc/open***/pki/dh.pem

server 10.8.0.0 255.255.255.0 # 给客户端分配的IP段

ifconfig-pool-persist ipp.txt # 记录客户端和虚拟ip的映射关系,当客户端重新连接时依然被分配断开之前的IP地址

push "route 172.20.100.0 255.255.255.0"  # 这里填写的网段是服务端所在网络的网段,使得客户端可以到达服务端所在的服务器网络

keepalive 10 120

user nobody

group nobody

persist-key

persist-tun

status  /var/log/open***-status.log

log      /var/log/open***.log

verb 3 # 日志等级

#explicit-exit-notify 1 #此选项开启只能使用udp协议。否则会报错error: --explicit-exit-notify can only be used with --proto udp

#tls-auth ta.key 0


配置×××分流

虽然把Open×××服务器搭建好了,但是有一个问题,客户端所有应用的网络都走×××通道了,有时只是想访问某个站点或连接某个服务走×××通道而已,其它的还是使用本地网络,也就是实现×××分流效果。实现方法如下:

注释/etc/open***/server.conf里的以下两行:

;push "redirect-gateway def1 bypass-dhcp"

;push "dhcp-option DNS 8.8.8.8"

添加推送到客户端的路由规则,比如:

push "route 192.168.100.0 255.255.255.0"

假设192.168.100.0是×××服务器所在的局域网的网段,那么添加这条规则后,客户端也能访问与×××服务器同一网段的其它机器了,上面的路由规则可以是具体IP,可以是网段。配置好后重新启动Open×××服务,客户端重新连接,此时可以发现只有访问192.168.100.0网段时才会走×××通道。


开启路由转发

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

sysctl -p


配置iptables转发规则

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

//10.8.0.0是***服务器提供的局域网

//如果服务器是双网卡,那么eth0这块就要视情况变动了,例如有两个网卡,一个是外网的,一个是内网的,如果想连上***之后访问内网,这块就要填写内网的网卡

保存iptables规则

service iptables save


启动Open***服务:open***@server

systemctl enable open***@server

systemctl start open***@server

Windows PC客户端配置

下载Open××× GUI客户端,64位下载地址:

http://build.open***.net/downloads/snapshots/open***-install-2.4.0-I602-pr80v18.exe

下载好后按默认设置安装即可。

将以下3个文件下载下来并放到C:\Program Files\Open×××\config目录下

/etc/easy-rsa/pki/private/client.key

/etc/easy-rsa/pki/issued/client.crt

/etc/easy-rsa/pki/ca.crt

客户端配置文件C:\Program Files\Open×××\config\client.opvn,写入如下内容:

client

dev tun

proto tcp

remote a.b.c.d 1194 # 填服务器真实IP

persist-key

persist-tun

ca ca.crt

cert client.crt

key client.key

verb 3 # 日志等级