Open***是一个用于建立虚拟专用网络(Virtual Private Network)加密通道的免费开源软件。使用Open***能够方便地在家庭、办公场所、住宿酒店等不一样网络访问场所之间搭建相似于局域网的专用网络通道。linux
使用Open***配合特定的代理服务器,可用于访问Youtube、FaceBook、Twitter等受限网站,也可用于突破公司的网络限制。vim
Open***架构图服务器
关闭selinux网络
$ setenforce 0 $ sed -i '/^SELINUX=/c\SELINUX=disabled' /etc/selinux/config
安装EPEL扩展库架构
$ yum install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
安装所需依赖软件包app
$ yum install -y openssl openssl-devel lzo lzo-devel pam pam-devel automake pkgconfig
$ yum -y install open*** easy-rsa #EPEL源
$ service open*** start $ chkconfig open*** on
修改vars文件tcp
$ cd /usr/share/easy-rsa/2.0/ $ vim vars #修改注册信息,好比公司地址、公司名称、部门名称等。 export KEY_COUNTRY="CN" export KEY_PROVINCE="ChongQing" export KEY_CITY="ChongQing" export KEY_ORG="jinke" export KEY_EMAIL="jinke@qq.com" export KEY_OU="P2P_TECH"
初始化环境变量ide
$ source vars NOTE: If you run ./clean-all, I will be doing a rm -rf on /usr/share/easy-rsa/2.0/keys
清除keys目录下全部与证书相关的文件优化
下面步骤生成的证书和密钥都在/usr/share/easy-rsa/2.0/keys目录里 $ ./clean-all
生成服务器端CA证书根证书ca.crt和根密钥ca.key,因为在vars文件中作过缺省设置,在出现交互界面时,直接一路回车便可网站
$ ./build-ca
为服务端生成证书和密钥(一路按回车,直到提示须要输入y/n时,输入y再按回车,一共两次)
$ ./build-key-server server
建立迪菲·赫尔曼(DH)密钥,会生成dh2048.pem文件(生成过程比较慢,在此期间不要去中断它)
$ ./build-dh
生成TLS私密文件ta.key(防DDos***、UDP淹没等恶意***)
$ open*** --genkey --secret keys/ta.key
每个登录的***客户端须要有一个证书,每一个证书在同一时刻只能供一个客户端链接,下面创建2份
为客户端生成证书和密钥(一路按回车,直到提示须要输入y/n时,输入y再按回车,一共两次) $ ./build-key client1 $ ./build-key client2
注意:进行证书制做工做时,仍旧须要进行初始化,但只须要进入easy-rsa目录,运行source vars
就能够了,不须要./clean-all 步骤,它会清除一切证书文件,这一点必定要注意!!!
查看keys目录下生成的文件
$ ls keys/ 01.pem 02.pem 03.pem ca.crt ca.key client1.crt client1.csr client1.key client2.crt client2.csr client2.key dh2048.pem index.txt index.txt.attr index.txt.attr.old index.txt.old serial serial.old server.crt server.csr server.key ta.key
在Open***的配置目录下新建一个keys目录
$ mkdir /etc/open***/keys
将须要用到的Open***证书和密钥复制一份到刚建立好的keys目录中
$ cp /usr/share/easy-rsa/2.0/keys/{ca.crt,server.{crt,key},dh2048.pem,ta.key} /etc/open***/keys/
复制一份服务器端配置文件模板server.conf到/etc/open***/
$ cp /usr/share/doc/open***-2.3.9/sample/sample-config-files/server.conf /etc/open***/
编辑server.conf配置文件
$ vim /etc/open***/server.conf #本机要侦听使用的IP地址 local 192.168.1.201 #使用的端口,默认1194 port 1194 #改为tcp,默认使用udp,若是使用HTTP Proxy,必须使用tcp协议 proto tcp #使用的设备可选tap和tun,tap是二层设备,支持链路层协议。 #tun是ip层的点对点协议,限制稍微多一些,建议使用tun,若是使用桥接的话,就必需要使用tap dev tun #路径前面加keys,全路径为/etc/open***/keys/ca.crt #Open***使用的ROOT CA,使用build-ca生成的,用于验证客户是证书是否合法 ca keys/ca.crt #Server使用的证书文件 cert keys/server.crt #Server使用的证书对应的key,注意文件的权限,防止被盗 key keys/server.key # This file should be kept secret dh keys/dh2048.pem #注销用户须要增长 #crl-verify /usr/share/easy-rsa/2.0/keys/crl.pem #默认虚拟局域网网段,不要和实际的局域网冲突便可 server 10.8.0.0 255.255.255.0 #用于记录某个Client得到的IP地址,相似于dhcpd.lease文件, #防止open***从新启动后“忘记”Client曾经使用过的IP地址 ifconfig-pool-persist ipp.txt #经过*** Server往Client push路由,client经过pull指令得到Server push的全部选项并应用 #10.0.0.0/8是我这台***服务器所在的内网的网段,读者应该根据自身实际状况进行修改 push "route 10.0.0.0 255.0.0.0" #配置客户端dns push "dhcp-option DNS 114.114.114.114" push "dhcp-option DNS 8.8.4.4" #可让客户端之间相互访问直接经过open***程序转发,根据须要设置 #不用发送到tun或者tap设备后从新转发,优化Client to Client的访问效率 client-to-client #若是客户端都使用相同的证书和密钥链接***,必定要打开这个选项,不然每一个证书只容许一我的链接***,建议一人一个证书。 duplicate-cn #定义最大链接数 max-clients 10 #NAT后面使用***,若是***长时间不通讯,NAT Session可能会失效, #致使***链接丢失,为防止之类事情的发生,keepalive提供一个相似于ping的机制, #下面表示每10秒经过***的Control通道ping对方,若是连续120秒没法ping通, #认为链接丢失,并从新启动***,从新链接 #(对于mode server模式下的open***不会从新链接)。 keepalive 10 120 tls-auth keys/ta.key 0 # This file is secret #对数据进行压缩,注意Server和Client一致 comp-lzo #经过keepalive检测超时后,从新启动***,不从新读取keys,保留第一次使用的keys persist-key #经过keepalive检测超时后,从新启动***,一直保持tun或者tap设备是linkup的, #不然网络链接会先linkdown而后linkup persist-tun #Open***的状态日志,默认为/etc/open***/open***-status.log status open***-status.log #Open***的运行日志,默认为/etc/open***/open***.log,和log一致,每次从新启动open***后保留原有的log信息,新信息追加到文件最后 log-append /var/log/open***/open***.log #至关于debug level verb 3
配置内核和防火墙
开启路由转发功能
$ sed -i '/net.ipv4.ip_forward/s/0/1/' /etc/sysctl.conf $ sysctl -p
配置防火墙
$ iptables -I INPUT -p tcp --dport 1194 -m comment --comment "open***" -j ACCEPT $ iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE $ service iptables save
复制一份client.conf模板命名为client.o***
$ cp /usr/share/doc/open***-2.3.9/sample/sample-config-files/client.conf client.o***
编辑client.o***
$ vim client.o*** client dev tun #改成tcp proto tcp #Open***服务器的外网IP和端口 remote xxx.xxx.xxx.xxx 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt #client1的证书 cert client1.crt #client1的密钥 key client1.key ns-cert-type server #去掉前面的注释 tls-auth ta.key 1 comp-lzo verb 3
安装客户端
$ yum -y install open*** #EPEL源
配置客户端
将Open***服务器上的client.o***
、ca.crt
、client1.crt
、client1.key
、ta.key
上传到Linux客户端/etc/open***/keys/
文件夹
链接Open***
$ open*** --daemon --config /etc/open***/keys/client.o***
下载并安装客户端
Open***版本:Open*** 2.3.3 Windows 64位
Open*** Windows 32位安装文件: https://swupdate.open***.org/community/releases/open***-install-2.3.10-I601-i686.exe
Open*** Windows 64位安装文件: https://swupdate.open***.org/community/releases/open***-install-2.3.10-I601-x86_64.exe
配置客户端
将Open***服务器上的client.o***
、ca.crt
、client1.crt
、client1.key
、ta.key
上传到Windows客户端安装目录下的config文件夹(C:\Program Files\Open***\config
)
启动Open*** GUI
在电脑右下角的open***图标上右击,选择”Connect”。正常状况下应该可以链接成功,分配正常的IP。
Tunnelblick: https://tunnelblick.net/
Open*** Connect: https://play.google.com/store/apps/details?id=net.open***.open***