1、环境:

cat/etc/redhat-release 

CentOS release 6.8(Final)

uname -a

Linuxnfs_server_177 2.6.32-642.4.2.el6.x86_64 #1 SMP Tue Aug 23 19:58:13 UTC 2016x86_64 x86_64 x86_64 GNU/Linux

ntpdatepool.ntp.org

 

2、安装软件

lzo-2.06.tar.gz压缩模块

open***-2.2.2.tar.gz

 

2.1安装lzo压缩模块:

wgethttp://www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gz

tar xflzo-2.06.tar.gz

cd lzo-2.06

./configure

make

make install

echo $?

cd ../

 

2.2安装open***软件

wgethttp://swupdate.open***.org/community/releases/open***-2.2.2.tar.gz rpm -qaopenssl

tar xf  open***-2.2.2.tar.gz

cd open***-2.2.2

 ./configure--with-lzo-headers=/usr/local/include --with-lzo-lib=/usr/local/lib

make

make install

echo $?

[root@open***_Sopen***-2.2.2]# which open***

/usr/local/sbin/open***

 

3、配置open*** server-建立CA(certificateauthority)证书

3.1初始化配置命令:

cd /home/abu/tools/open***-2.2.2/easy-rsa/2.0/

cp vars vars.ori

vim vars

 

3.2到结尾把,上面的换成下面的

exportKEY_COUNTRY="US"     国家

exportKEY_PROVINCE="CA"    省名

exportKEY_CITY="SanFrancisco"       城市名

exportKEY_ORG="Fort-Funston"        组织名

exportKEY_EMAIL="me@myhost.mydomain"     单元名

export KEY_EMAIL=mail@host.domain

exportKEY_CN=changeme

exportKEY_NAME=changeme

exportKEY_OU=changeme

exportPKCS11_MODULE_PATH=changeme

exportPKCS11_PIN=1234

 

 

exportKEY_COUNTRY="CN"

exportKEY_PROVINCE="GJ"

exportKEY_CITY="guangzhou"

exportKEY_ORG="abu"

exportKEY_EMAIL="784875011@qq.com"

exportKEY_EMAIL=784875011@qq.com

export KEY_CN=CN

export KEY_NAME=abu

export KEY_OU=abu

exportPKCS11_MODULE_PATH=changeme

exportPKCS11_PIN=1234

 

3.3生效配置文件

source vars

NOTE: If you run./clean-all, I will be doing a rm -rf on/home/abu/tools/open***-2.2.2/easy-rsa/2.0/keys

 

./clean-all  ←清楚所有证书keys

./build-ca   ←创建新的ca证书,ca.crt,ca.key。注意,下面是输出,也就是上面配置文件里配置的内容

Generating a 1024bit RSA private key

.++++++

.........++++++

writing newprivate key to 'ca.key'

-----

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

into yourcertificate request.

What you are about to enter is what iscalled a Distinguished Name or a DN.

There are quite afew fields but you can leave some blank

For some fieldsthere will be a default value,

If you enter '.',the field will be left blank.

-----

Country Name (2letter code) [CN]:   ←(国家,回车)

State or ProvinceName (full name) [BJ]:  ←(省份,回车)

Locality Name (eg,city) [Beijing]:  ←(城市,回车)

Organization Name(eg, company) [oldboy]:  ←(组织名,回车)

OrganizationalUnit Name (eg, section) [oldboy]:  ←(单元名,回车)

Common Name (eg,your name or your server's hostname) [CN]:oldboy  ←(主机名,回车)

Name [oldboy]:  ←(回车)

Email Address[784875011@qq.com]:  ←(回车)

[root@open***_S2.0]# ll keys/

total 12

-rw-r--r-- 1 rootroot 1314 Oct 17 21:06 ca.crt   ←(证书)

-rw------- 1 rootroot  912 Oct 17 21:06 ca.key   ←(密钥)

-rw-r--r-- 1 rootroot    0 Oct 17 21:04 index.txt

-rw-r--r-- 1 rootroot    3 Oct 17 21:04 serial

 

3.4生成服务器端证书和密钥认证文件

[root@open***_S2.0]# ./build-key-server server

Generating a 1024bit RSA private key

...............++++++

.++++++

writing newprivate key to 'server.key'

-----

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

into yourcertificate request.

What you are aboutto enter is what is called a Distinguished Name or a DN.

There are quite afew fields but you can leave some blank

For some fieldsthere will be a default value,

If you enter '.',the field will be left blank.

-----

Country Name (2letter code) [CN]:      ←(证书)

State or ProvinceName (full name) [BJ]:     ←(证书)

Locality Name (eg,city) [Beijing]:     ←(证书)

Organization Name(eg, company) [oldboy]:         ←(证书)

OrganizationalUnit Name (eg, section) [oldboy]:      ←(证书)

Common Name (eg,your name or your server's hostname) [server]:     ←(证书)

Name [oldboy]:        ←(证书)

Email Address[784875011@qq.com]:       ←(证书)

 

Please enter thefollowing 'extra' attributes

to be sent withyour certificate request

A challengepassword []:dev.dev.←输入密码(发生证书请求的密码)

An optionalcompany name []:abu     

Usingconfiguration from /home/abu/tools/open***-2.2.2/easy-rsa/2.0/openssl-1.0.0.cnf

Check that therequest matches the signature

Signature ok

The Subject'sDistinguished Name is as follows

countryName           :PRINTABLE:'CN'

stateOrProvinceName   :PRINTABLE:'BJ'

localityName          :PRINTABLE:'Beijing'

organizationName      :PRINTABLE:'oldboy'

organizationalUnitName:PRINTABLE:'oldboy'

commonName            :PRINTABLE:'server'

name                  :PRINTABLE:'oldboy'

emailAddress          :IA5STRING:'784875011@qq.com'

Certificate is tobe certified until Oct 15 13:12:49 2026 GMT (3650 days)

Sign thecertificate? [y/n]:y

 

 

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

Write out databasewith 1 new entries

Data Base Updated

 

 

3.5服务端证书生成的文件

[root@open***_S2.0]# ll keys/

total 40

-rw-r--r-- 1 rootroot 4002 Oct 17 21:13 01.pem

-rw-r--r-- 1 rootroot 1314 Oct 17 21:06 ca.crt

-rw------- 1 rootroot  912 Oct 17 21:06 ca.key

-rw-r--r-- 1 rootroot  121 Oct 17 21:13 index.txt

-rw-r--r-- 1 rootroot   21 Oct 17 21:13 index.txt.attr

-rw-r--r-- 1 rootroot    0 Oct 17 21:04 index.txt.old

-rw-r--r-- 1 rootroot    3 Oct 17 21:13 serial

-rw-r--r-- 1 rootroot    3 Oct 17 21:04 serial.old

-rw-r--r-- 1 rootroot 4002 Oct 17 21:13 server.crt

-rw-r--r-- 1 rootroot  769 Oct 17 21:12 server.csr

-rw------- 1 rootroot  916 Oct 17 21:12 server.key

 

3.6生成客户端的证书和密钥文件无密码的,客户端名字为client,客户端登陆服务器端用

 

[root@open***_S2.0]# ./build-key client

Generating a 1024bit RSA private key

...............................++++++

....................++++++

writing newprivate key to 'client.key'

-----

Usingconfiguration from /home/abu/tools/open***-2.2.2/easy-rsa/2.0/openssl-1.0.0.cnf

Check that therequest matches the signature

Signature ok

The Subject'sDistinguished Name is as follows

countryName           :PRINTABLE:'CN'

stateOrProvinceName   :PRINTABLE:'BJ'

localityName          :PRINTABLE:'Beijing'

organizationName      :PRINTABLE:'oldboy'

organizationalUnitName:PRINTABLE:'oldboy'

commonName            :PRINTABLE:'client'

name                  :PRINTABLE:'oldboy'

emailAddress          :IA5STRING:'784875011@qq.com'

Certificate is tobe certified until Oct 15 13:22:44 2026 GMT (3650 days)

Sign thecertificate? [y/n]:y

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

Write out databasewith 1 new entries

Data Base Updated

 

3.7生成客户端的证书和密钥文件有密码的,客户端名字为abu,客户端登陆服务器端用

 [root@open***_S 2.0]# ./build-key-pass abu

Generating a 1024bit RSA private key

...................++++++

...............++++++

writing newprivate key to 'abu.key'

Enter PEM passphrase:

Verifying - EnterPEM pass phrase:

 

3.8生成generate diffie hellman parameters

提示:Diffie Hellmanparameters must be generated for the Open××× server.

生成传输进行密钥交换时用到的交换密钥协议文件

./build-dh    ←(不能不操作这个步骤,不然后面会出错)

[root@squid 2.0]#ll keys/dh1024.pem  ←生成的就是这个密钥协议文件

-rw-r--r-- 1 rootroot 245 Oct 18 02:08 keys/dh1024.pem

 

3.9生成一个防止恶意***的文件(如DOS、UDP、portflooding)

[root@squid 2.0]# open***--genkey --secret keys/ta.key

 

3.10上述步骤生成的文件说明注释

[root@squid 2.0]#ll keys/dh1024.pem

-rw-r--r-- 1 rootroot 245 Oct 18 02:08 keys/dh1024.pem

[root@squid 2.0]#ll keys/

total 84

-rw-r--r-- 1 rootroot 3936 Oct 17 21:26 01.pem

-rw-r--r-- 1 rootroot 3809 Oct 17 21:26 02.pem

-rw-r--r-- 1 rootroot 3808 Oct 17 21:27 03.pem

-rw-r--r-- 1 rootroot 3808 Oct 17 21:27 abu.crt

-rw-r--r-- 1 rootroot  757 Oct 17 21:27 abu.csr

-rw------- 1 rootroot 1041 Oct 17 21:27 abu.key

-rw-r--r-- 1 rootroot 1269 Oct 17 21:25 ca.crt    ←ca证书,服务端,和所有的客户端都需要用

-rw------- 1 rootroot  916 Oct 17 21:25 ca.key    ←服务端需要的

-rw-r--r-- 1 rootroot  245 Oct 18 02:08 dh1024.pem     ←协议文件,服务端用

-rw-r--r-- 1 rootroot  337 Oct 17 21:27 index.txt

-rw-r--r-- 1 rootroot   21 Oct 17 21:27 index.txt.attr

-rw-r--r-- 1 rootroot   21 Oct 17 21:26 index.txt.attr.old

-rw-r--r-- 1 rootroot  226 Oct 17 21:26 index.txt.old

-rw-r--r-- 1 rootroot    3 Oct 17 21:27 serial

-rw-r--r-- 1 rootroot    3 Oct 17 21:26 serial.old

-rw-r--r-- 1 rootroot 3936 Oct 17 21:26 server.crt     ←服务端的证书

-rw-r--r-- 1 rootroot  761 Oct 17 21:25 server.csr

-rw------- 1 rootroot  916 Oct 17 21:25 server.key     ←服务器端的key

-rw-r--r-- 1 rootroot 3809 Oct 17 21:26 test.crt       ←客户端使用的证书

-rw-r--r-- 1 rootroot  757 Oct 17 21:26 test.csr      

-rw------- 1 rootroot  916 Oct 17 21:26 test.key       ←客户端使用的key,key都是加密的

 

4、详解服务器端×××重要命令

vars脚本是用来创建环境变量,设置所需要用的变量的脚本

clean-all 脚本是创建生成ca证书及密钥文件所需要的文件及目录

build-ca 脚本生成ca证书(交互)

build-key-server 脚本生成服务器端密钥(交互)

build-key-pass 脚本生成客户端带密码的密钥(交互)

build-dh 脚本生成Diffie-hellman文件,协议文件

pkitool 脚本直接使用vars的环境变量设置,直接生成证书(非交互)

 

5、配置文件

5.1统一管理配置文件

mkdir /etc/open***

cd/home/abu/tools/open***-2.2.2/easy-rsa/2.0/

cp -ap keys//etc/open***/

cd/home/abu/tools/open***-2.2.2/sample-config-files/

cp client.confserver.conf /etc/open***/keys

 

5.2服务端配置文件

cd /etc/open***/

cp server.confserver.conf.ori

grep -vE";|#|^$" server.conf

 

企业生成环境server.conf配置案例

配置参数

参数说明

Local  172.20.18.187

哪一个本地地址要被Open×××进行监听(which local IP address should  Open×××)172.20.18.187:1194

Port  (默认1194) 52115

监听的端口,默认是1194,这里为了安全起见,修改成52115

Proto  udp

指定监听的协议,当并发访问多时,推荐tcp

dev  tun

***  server的模式采用路由模式。可选tap或tun

ca  ca.crt

ca证书,注意此文件和server.conf在一个目录下,否则要用绝对路径调用

cert  server.crt


Key  server.key

This  file should be kept secret

Dh  dh1024.pem


Server  10.8.0.0 255.255.255.0

这个是××× SERVER动态分配给××× CLIENT的地址池,一般不需要更改

Ifconfig-pool-persist  ipp.txt


Push "route 10.0.0.0  255.255.255.0"

这是××× SERVER所在的内网网段,如果有多个可以写多个push,注意,此命令实际作用是在×××客户端本地生成

 

5.3#配置文件配置成如下(注意:如果local那个地址填的不是本机的IP地址,启动的时候会自动退出,起不来)

[root@squidopen***]# cat server.conf

local 172.20.18.186

port 52115

proto tcp

dev tun

ca/etc/open***/keys/ca.crt

cert/etc/open***/keys/server.crt

key/etc/open***/keys/server.key

dh/etc/open***/keys/dh1024.pem

server 10.8.0.0255.255.255.0

push "route 192.168.1.0255.255.255.0"

ifconfig-pool-persistipp.txt

keepalive 10 120

comp-lzo

persist-key

persist-tun

statusopen***-status.log

verb 3

client-to-client

duplicate-cn

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

 

 

6、处理防火墙规则,和内核

iptables -A INPUT-p tcp --dport 52115 -j ACCEPT

vim/etc/sysctl.conf

sysctl -p

net.ipv4.ip_forward= 1    ←0改成1

 

#查看selinux是否开启

[root@squidopen***]# getenforce

Disabled

 

启动服务器端×××服务并检查,并放到开机自启动

/usr/local/sbin/open***--config /etc/open***/server.conf &

echo"#open*** start" >>/etc/rc.local

echo "/usr/local/sbin/open*** --config/etc/open***/server.conf &" >>/etc/rc.local

tail -2/etc/rc.local

#open*** start

/usr/local/sbin/open***--config /etc/open***/server.conf &

 

ifconfig会多下面这快网卡

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 

          inet addr:10.8.0.1  P-t-P:10.8.0.2  Mask:255.255.255.255

          UP POINTOPOINT RUNNING NOARPMULTICAST  MTU:1500  Metric:1

          RX packets:0 errors:0 dropped:0overruns:0 frame:0

          TX packets:0 errors:0 dropped:0overruns:0 carrier:0

          collisions:0 txqueuelen:100

          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

 

#开机自chkconfig启动

cp/home/abu/tools/open***-2.2.2/sample-scripts/open***.init /etc/init.d/open***

 chmod 700 /etc/init.d/open*** 

 chkconfig --add open***

 chkconfig --list open***

 

#改启动148行文件把*改成server

vim/etc/init.d/open***

148         for c in `/bin/ls *.conf2>/dev/null`; do   ←原版

148         for c in `/bin/ls server.conf2>/dev/null`; do   ←改后

到此,服务器端配置OK

 

 

接下来配置客户端

服务端配置好后,安装客户端软件,安装完客户端软件,把服务器端刚才添加的ca证书,秘钥  如:

ca.crt        ←ca证书

client.conf        ←客户端配置文件

test.crt      ←服务器端配置的用户证书

test.key      ←服务器端配置的用户密钥

考到客户端C:\Program Files (x86)\Open×××\config安装目录下面的config目录下面去

注意:每个客户端都需要这么几个文件

 

客户端原版文件内容

[root@squidopen***]# egrep -v "^#|^;|^$" client.conf

client

dev tun

proto udp     ←协议

remote my-server-11194     ←客户端连接服务器端的IP跟端口

resolv-retryinfinite

nobind

persist-key

persist-tun

ca ca.crt

cert client.crt        ←客户端证书

key client.key         ←客户端密钥

ns-cert-typeserver

comp-lzo

verb 3

 

客户端改后的内容

client

dev tun

proto tcp

remote 172.20.18.187 52115

resolv-retryinfinite

nobind

persist-key

persist-tun

ca ca.crt

cert test.crt

key test.key

ns-cert-typeserver

comp-lzo

verb 3

 

在客户端目录下创建一个以o***为扩展名的软件,把配置拷贝进去

 

spacer.gif

 

配置好后,在win7上拨号远程连接open***服务

spacer.gif

 

spacer.gif

 

方法一、route add default gw 172.20.18.187

 

方法二、route add -net 10.8.0.0/24 gw172.20.18.187

 

方法三、iptables -t nat -I POSTROUTING -s10.8.0.0/24 -o eth1 -j SNAT --to-source 192.168.1.10

iptables -t nat -I POSTROUTING -s10.8.0.0/255.255.255.0 -o eth1 -j MASQUERADE

 

提示:

这个是iptables的NAT转换规则,其中:

1)-o eth1为×××服务器内网网卡,

2)192.168.1.10为×××服务器的内网IP

3)-j MASQUERADE自动转换,固定转换-jSNAT --to-source 192.168.1.10

配置linux下open***客户端

安装lzo压缩模块:

wgethttp://www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gz

tar xflzo-2.06.tar.gz

cd lzo-2.06

./configure

make

make install

echo $?

cd ../

 

安装open***软件

wgethttp://swupdate.open***.org/community/releases/open***-2.2.2.tar.gz rpm -qaopenssl

tar xf  open***-2.2.2.tar.gz

cd open***-2.2.2

 ./configure --with-lzo-headers=/usr/local/include--with-lzo-lib=/usr/local/lib

make

make install

echo $?

[root@open***_Sopen***-2.2.2]# which open***

/usr/local/sbin/open***

 

配置open*** client

安装好后,创建一个放置目录

mkdir /etc/open***

然后把windows客户端的配置直接拿上来就好了,

但是linux的不需要o***这个文件,直接

[root@testhostopen***]# ll

total 16

-rw-r--r-- 1 rootroot 3816 Oct 24  2016 abutest.crt

-rw-r--r-- 1 rootroot  916 Oct 24  2016 abutest.key

-rw-r--r-- 1 rootroot 1269 Oct 24  2016 ca.crt

-rw-r--r-- 1 rootroot  198 Oct 24  2016 client.conf

/usr/local/sbin/open***--config /etc/open***/client.conf &      ←直接启动即可

#添加开机自启动

echo"#open*** client start" >>/etc/rc.loca

echo "/usr/local/sbin/open***--config /etc/open***/client.conf &" >>/etc/rc.local

配置文件内容

[root@testhostopen***]# cat client.conf

client

dev tun

proto tcp

remote172.20.18.187 52115

resolv-retryinfinite

nobind

persist-key

persist-tun

ca ca.crt

cert abutest.crt

key abutest.key

ns-cert-typeserver

comp-lzo

verb 3

客户端启动过程中容易出现的错误

解决方案,客户端配置文件加一个--script-security3

spacer.gif

 

第二种情况,客户端配置文件改名

spacer.gif

到此linux client配置完成。

 

多个IDC机房利用×××互联架构方案

spacer.gif

 

 

open***多机房互联

http://blog.youkuaiyun.com/reyleon/article/details/50554179