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
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
客户端改后的内容
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***为扩展名的软件,把配置拷贝进去
配置好后,在win7上拨号远程连接open***服务
方法一、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
第二种情况,客户端配置文件改名
到此linux client配置完成。
多个IDC机房利用×××互联架构方案
open***多机房互联
http://blog.youkuaiyun.com/reyleon/article/details/50554179
转载于:https://blog.51cto.com/11012498/1868352