这两天弄了弄open***,也算是在这里记录一下成果。
具体的介绍这里就不多说了,百度就可以搜出一大堆。
首先准备环境需要gcc gcc++ loz
# yum install gcc # yum install gcc-c++ # cd /aaa/ # wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz # tar -xvzf lzo-2.03.tar.gz # cd lzo-2.03 # ./configure --prefix=/usr/local/lzo && make && make install # vi /etc/ld.so.conf include ld.so.conf.d/*.conf /lib /lib64 /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64
然后#ldconfig让他生效一下
安装openssl
# cd /aaa/ # wget http://www.openssl.org/source/openssl-0.9.8.tar.gz # tar -xvzf openssl-0.9.8.tar.gz # ./config --prefix=/usr/local/openssl && make && make install
yum安装open***
由于centos 6 默认的yum 源没有open***,所以需要添加外部的源
获取
#wget #rpm -Uvh rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
之后还需要刷新一下yum库
yum makecache && yum clean all&& yum –rebuilddb && yum update #yum -y install open***
把模板复制过来
#cp -r /usr/share/doc/open***-2.0.9/easy-rsa/ /etc/open***/ #cp /usr/share/doc/open***-2.0.9/sample-config-files/server.conf /etc/open***/
接着需要生成证书,这里可能是因为版本的关系,比网上的路径多了文件夹
# cd /etc/open***/easy-rsa/2.0/ # ll 总用量 148 -rwxrwxrwx 1 root root 119 8月 8 11:17 build-ca -rwxrwxrwx 1 root root 352 8月 8 11:17 build-dh -rwxrwxrwx 1 root root 188 8月 8 11:17 build-inter -rwxrwxrwx 1 root root 163 8月 8 11:17 build-key -rwxrwxrwx 1 root root 157 8月 8 11:17 build-key-pass -rwxrwxrwx 1 root root 249 8月 8 11:17 build-key-pkcs12 -rwxrwxrwx 1 root root 268 8月 8 11:17 build-key-server -rwxrwxrwx 1 root root 213 8月 8 11:17 build-req -rwxrwxrwx 1 root root 158 8月 8 11:17 build-req-pass -rwxrwxrwx 1 root root 428 8月 8 11:17 clean-all -rwxrwxrwx 1 root root 1457 8月 8 11:17 inherit-inter drwxrwxrwx 2 root root 4096 8月 8 13:53 keys -rwxrwxrwx 1 root root 295 8月 8 11:17 list-crl -rwxrwxrwx 1 root root 413 8月 8 11:17 Makefile -rwxrwxrwx 1 root root 7768 8月 8 11:17 openssl-0.9.6.cnf -rwxrwxrwx 1 root root 8325 8月 8 11:17 openssl-0.9.8.cnf -rwxrwxrwx 1 root root 8222 8月 8 11:17 openssl-1.0.0.cnf -rwxr-xr-x 1 root root 8325 8月 8 11:37 openssl.cnf -rwxrwxrwx 1 root root 12675 8月 8 11:17 pkitool -rwxrwxrwx 1 root root 9299 8月 8 11:17 README -rwxrwxrwx 1 root root 918 8月 8 11:17 revoke-full -rwxrwxrwx 1 root root 178 8月 8 11:17 sign-req -rwxrwxrwx 1 root root 684 8月 8 11:23 vars -rwxr-xr-x 1 root root 1841 8月 8 11:20 vars.bak -rwxrwxrwx 1 root root 714 8月 8 11:17 whichopensslcnf
我这是图省事直接把权限都改了,生产环境***意相应的权限。
设定一下参数
#vi vars export KEY_COUNTRY=CN //定义你所在的国家,两个字符 export KEY_PROVINCE=Beijing //你所在的省份 export KEY_CITY=Beijing //你所在的城市 export KEY_ORG="HuaYi" //你所在的组织 export KEY_EMAIL="xxx@xxxxx.cn" //你的邮件地址
#source ./vars //或者可以直接用 . ./ 两个点之间有空格 #./clean-all //会清空keys下的文件
生成密钥
# ./build-c
接下来一路回车就可以了,keys文件夹下会生成ca.crt ca.key index.txt serial这几个文件
生成dh文件
# ./build-dh
接下来就是生成证书
# ./build-key-server aaa //这个aaa是名字,可以随便改
一直回车到最后点y再回车就可以
最后生成客户端的证书
# ./build-key client-aaa
之后我们就可以在keys文件夹里看到ca.crt ca.key client-aaa.crt client-aaa.csr client-aaa.key
接下来是open***的主配
# cat /etc/open***/server.conf local 118.123.7.110 //open***的地址 port 1195 //端口,默认是1194,我小改了一下 ;proto tcp proto udp //使用udp还是tcp根据需求 ;dev tap dev tun //tap还是tun也是根据需求 ;dev-node MyTap ca ca.crt cert aaa.crt //这个是你刚才生成的那个文件,下面也是 key aaa.key # This file should be kept secret dh dh1024.pem server 10.8.0.0 255.255.255.0 //客户端连过来的ip,基本不用改 ifconfig-pool-persist ipp.txt ;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100 ;server-bridge ;push "route 192.168.10.0 255.255.255.0" ;push "route 192.168.20.0 255.255.255.0" ;client-config-dir ccd ;route 192.168.40.128 255.255.255.248 ;client-config-dir ccd ;route 10.9.0.0 255.255.255.252 ;learn-address ./script ;push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 208.67.222.222" //客户端的dns,我最开始因为就是没写这个所以上不了网 push "dhcp-option DNS 8.8.8.8" client-to-client //各个open***可以互联 duplicate-cn //开启这个就可以多人用同一个号登陆 keepalive 10 120 ;tls-auth ta.key 0 # This file is secret ;cipher BF-CBC # Blowfish (default) ;cipher AES-128-CBC # AES ;cipher DES-EDE3-CBC # Triple-DES comp-lzo ;max-clients 100 user nobody //定义用户,下同 group nobody persist-key persist-tun status open***-status.log log open***.log //日志文件,下同 log-append open***.log verb 3 ;mute 20
TUN
可以视为虚拟的点对点装置,就像一般家用的modem,ADSL一样,使用此虚拟装置的模式称为Routed mode。 因为是在连线后才决定×××双方的连线路径,因此可了解TUN装置所处理的是OSI Layer 3 的工作。
TAP
则可被视为虚拟的Ethernet网络卡, 可以透过此装置启动一个Daemon来接收Ethernet讯框,称为Bridge mode,因为此装置时以Bridge的方式来运作,这个是TUN装置所做不到的!所以TAP装置所处理的是OSI Layer 2的工作。
这时候就可以启动open***了
# service open*** restart 正在关闭open***: [确定] 正在启动 open***: [确定]
如果失败的话,看看是不是权限或者防火墙的问题。
如果想要客户端上网还需要开始路由转发和iptable的nat
最后是客户端的,因为我用的window,所以这里只说window客户端的用法。
把之前考出来的5个文件拷到客户端目录下的config里,把客户端目录sample-config里的client.o***也考到config文件下。
然后将里面的文件修改下
dev tun proto tcp remote 你的***地址 1195(端口) user nobody group nogroup ca ca.crt cert client-aaa.crt //就是我们之前考过来的证书 key client-aaa.key comp-lzo redirect-gateway def1 //路由走网关
全都搞定之后,点连接,等你看到小电脑绿起来,open***就连接成功啦
参考:http://www.blogjava.net/dongbule/archive/2010/11/01/336714.html
转载于:https://blog.51cto.com/8693858/1537561