Open*** 服务器部署

当时公司架设××× 服务器的目的是能让工作在外地员工通过单点登录的方式(PC-LAN方式)连公司内部的服务器,协同内部员工工作,同时也要考虑以后办事处与总部的(LAN-LAN方式)互连,认证机制能多方面做到相对安全。

经过多次周旋,到今天才完成OPEN×××的应用环境平台实验。主要是在路由上不理解它的工作方式,经朋友抽中午休息多次帮忙才OK.我很感激。

初步应用考虑:能让出差员工或异地员工接入内部的应用服务器,做比较细致的权限控制。用户认证采用***用户密钥+***server CA方式。 

优点:1、 开源框架高级路由功能支持接入用户的的不同网络访问权限的管理,可以分配带宽、可以限定访问路由;

   2×××通道采用ssl加密、安全等级高,数据保密性强,防止截获;

   3、 可采用RADIUS或区域安全认证,用户身份认证灵活,同时可以只有整合现有企业的业务平台的身份认证,做到统一用户管理;


具体实施过程如下:

平台:Centos5.5 x86_64 安装时选择开发库,开发工具

服务器软件:lzo-2.04.tar.gz open***-2.1.4.tar.gz

客户端软件:open***-2.1.3-install.exe

Eth0:192.168.0.106  (开始只用单网卡,发布内部的0网段应用服务器可实现)


安装Openssl及开发库

yum -y install openssl openssl-devel


安装lzo

Tar  zxvf  lzo-2.04.tar.gz

Cd  lzo-2.0.4

./configure && make && make install

安装open***

     Tar zxvf open***-2.1.4.tar.gz

     Cd open***-2.14

     ./configure && make && make install


一、服务器端的配置

     1、建立CA

     Open×××源代码目录下有一个\easy-rsa\2.0目录,进入后修改vars文件最后部分的信息,     

     保存退出,再运行:

     Source vars

     ./clean-all

     ./build-ca

    回车到最后完成CA的建立。

     2、生成服务器证书和密钥

    ./build-key-server ***srv

  在最后按两次“y” 确认。

 3、创建 dhDiffie-Hellman)密钥算法文件

执行“./build-dh”脚本即可建立 dh 文件。

 4、生成 tls-auth 密钥

执行“.open***  (--config /etc/open***/server.cong )这些可有可无  --genkey  –secret keys/ta.key

 5、生成客户端密钥

执行“./build-key-pass  client01”在此过程中输入客户端密码,最后按两次“y”确认。

 6.将上述文件所在的 keys/文件夹转移至/etc/open***/目录

mkdir -p /etc/open***/

mv keys/ /etc/open***/

 7、在服务器配置文件中指定使用 Server 模式,监听默认的 TCP 1194 端口。虚拟接口用tun0设备。可以参考open*** 源码目录中的配置范例

(open***-2.0.9/sample-config-files/server.conf

Cp /etc/opt/open***-2.1.4/sample-config-files/server.conf /etc/open***/

 vim server.conf

注:#号和;号开头的都是注释

 # 设置监听IP,默认是监听所有IP

;local a.b.c.d

local 192.168.0.106

# 设置监听端口,必须要对应的在防火墙里面打开

port 1194

# 设置用TCP还是UDP协议?

proto tcp

;proto udp

# 设置创建tun的路由IP通道,还是创建tap的以太网通道

# 路由IP容易控制,所以推荐使用它;但如果如IPX等必须

# 使用第二层才能通过的通讯,则可以用tap方式,tap

# 就是以太网桥接

;dev tap

dev tun

# Windows需要给网卡一个名称,这里设置,linux不需要

;dev-node MyTap

# 这里是重点,必须指定SSL/TLS root certificate (ca),

# certificate(cert), and private key (key)

# ca文件是服务端和客户端都必须使用的,但不需要ca.key

# 服务端和客户端指定各自的.crt.key

# 请注意路径,可以使用以配置文件开始为根的相对路径,

# 也可以使用绝对路径

# 请小心存放.key密钥文件

ca keys/ca.crt

cert keys/server.crt

key keys/server.key  # This file should be kept secret

# 指定Diffie hellman parameters.

dh keys/dh1024.pem

# 配置×××使用的网段,Open×××会自动提供基于该网段的DHCP

# 服务,但不能和任何一方的局域网段重复,保证唯一

server 10.8.0.0 255.255.255.0

# 维持一个客户端和virtual IP的对应表,以方便客户端重新

# 连接可以获得同样的IP

ifconfig-pool-persist ipp.txt

# 配置为以太网桥模式,但需要使用系统的桥接功能

# 这里不需要使用

;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100

# 为客户端创建对应的路由,以另其通达公司网内部服务器

# 但记住,公司网内部服务器也需要有可用路由返回到客户端

push "route 10.8.0.0 255.255.255.0"

push "route 192.168.0.0 255.255.255.0"

push "route 192.168.2.0 255.255.255.0"

;push "route 192.168.20.0 255.255.255.0"

push "route 192.168.56.0 255.255.255.0"

# 为特定的客户端指定IP或指定路由,该路由通常是客户端后面的

# 内网网段,而不是服务端连接的网段

# ccd/etc/open***下的目录,其中建有希望限制的客户端Common

# Name为文件名的文件,并通过下面的命令写入固定IP地址

# 例如Common Nameclient1,则在/etc/open***/ccd/client1写有:

# ifconfig-push 10.9.0.1 10.9.0.2

client-config-dir ccd

;route 192.168.40.128 255.255.255.248

# 为可以对不同的客户端设置防火墙等权限

# 可以让其自动运行对应脚本,可参考man

;learn-address ./script

# 若客户端希望所有的流量都通过×××传输,则可以使用该语句

# 其会自动改变客户端的网关为×××服务器,推荐关闭

# 一旦设置,请小心服务端的DHCP设置问题

;push "redirect-gateway"

# Open×××DHCP功能为客户端提供指定的DNSWINS

;push "dhcp-option DNS 10.8.0.1"

;push "dhcp-option WINS 10.8.0.1"

# 默认客户端之间是不能直接通讯的,除非把下面的语句注释掉

client-to-client

# 如果您希望有相同Common Name的客户端都可以登陆

# 也可以注释下面的语句,推荐每个客户端都使用不用的Common Name

# 常用于测试

;duplicate-cn

# 设置服务端检测的间隔和超时时间

keepalive 10 120

# 下面是一些对安全性增强的措施,后续说明吧

# For extra security beyond that provided

# by SSL/TLS, create an "HMAC firewall"

# to help block DoS attacks and UDP port flooding.

#

# Generate with:

#   open*** --genkey --secret ta.key

#

# The server and each client must have

# a copy of this key.

# The second parameter should be 0

# on the server and 1 on the clients.

tls-auth ta.key 0

# This file is secret

# Select a cryptographic cipher.

# This config item must be copied to

# the client config file as well.

;cipher BF-CBC        # Blowfish (default)

;cipher AES-128-CBC   # AES

;cipher DES-EDE3-CBC  # Triple-DES

# 使用lzo压缩的通讯,服务端和客户端都必须配置

comp-lzo

# 设置最大用户数

;max-clients 100

# Open×××nobody用户和组来运行(安全)

user nobody

group nobody

# The persist options will try to avoid

# accessing certain resources on restart

# that may no longer be accessible because

# of the privilege downgrade.

persist-key

persist-tun

# 输出短日志,每分钟刷新一次,以显示当前的客户端

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

 

# 缺省日志会记录在系统日志中,但也可以导向到其他地方

# 建议调试的使用先不要设置,调试完成后再定义

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

log-append  /var/log/open***/open***.log

# 设置日志的级别

#

# 0 is silent, except for fatal errors

# 4 is reasonable for general usage

# 5 and 6 can help to debug connection problems

# 9 is extremely verbose

verb 3

# Silence repeating messages.  At most 20

# sequential messages of the same message

# category will be output to the log.

mute 20

红色部分是我的server.conf的配置。

8.建立ccd 配置文件

[root@gw1 ~]# mkdir -p /etc/open***/ccd

[root@gw1 ~]# cd /etc/open***/ccd/

Vim client01 内容如下:

Ifconfig-push 10.8.0.6 10.8.0.5  

 9.open***开机自启

cp -p open***-2.1.4/sample-scripts/open***.init /etc/init.d/open***

chmod +x /etc/init.d/open***

chkconfig --add open***

chkconfig --level 2345 open*** on 

二、客户端配置

1.双击邮件中下载的 open***-2.1.4-install.exe文件,按照向导提示安装即可。安装时不勾选定制组件列表中的“Open××× Service”
一路回车直到安装完成。 

2.将邮件中附件config.rar解压在c:\Program Files\Open×××目录里;

双击桌面上的 Open*** GUI图标,在窗口右下角open***图标上右击选择connect 单击,如下图(同时下图中Change Password 可以改变client端用户初始密码,强烈建议用户第一使用***建立连接时改变初始密码,以确保安全。)

打开Open××× Connection(client) 窗口,输入用户密码建立×××连接。

 

注:#号和;号开头的都是注释

# LinuxUnix下客户端配置文件使用扩展名为.conf
# Windows
下客户端配置文件使用的是.o***
#
把需要使用的keys复制到配置文件所在目录ca.crt elm.crt elm.key ta.key
#
标注自己是个客户端
#
配置从serverpull过来,如IP地址,路由信息之类"Server使用push指令push过来的"
client

#
路由模式或桥模式
#
这项要和服务器端一样
dev tap
dev tun

#
Windows上如果你更多的网络接口,你需要在网络连接控制面板上增加
# TAP-Win32
适配器接口名
#
XP SP2或更高系统上,你需要使windows防火墙对该接口不执行过滤规则
#
Windows系统通常不需要设置这个
;dev-node MyTap

# TCP
还是UDP server?
proto tcp
;proto udp

#
远程服务器主机名和端口
#
你可以设置多个服务器来做负载均衡
remote X.X.X.X 1194   #
用域名比较好,除非dns DOWN
;remote my-server-2 1194

#
负载均衡时所用:
#
随机选择一个Server连接,否则按照顺序从上到下依次连接
;remote-random

#
始终重新解析ServerIP地址(如果remote后面跟的是域名),
#
保证Server IP地址是动态的使用DDNS动态更新DNS后,
# Client
在自动重新连接时重新解析ServerIP地址
#
这样无需人为重新启动,即可重新接入×××
resolv-retry infinite

#
在本机不绑定任何端口监听incoming数据,
# Client
无需此操作,除非一对一的×××有必要
nobind

# Downgrade privileges after initialization (non-Windows only)
user nobody
group nobody

#
通过keepalive检测超时后,重新启动×××,不重新读取keys,保留第一次使用的keys
persist-key
#
通过keepalive检测超时后,重新启动×××,一直保持tun或者tap设备是linkup的,
#
否则网络连接会先linkdown然后linkup
persist-tun

#
这项用于通过http代理访问open***服务器的情况
#
如果你使用HTTP代理连接××× Server,把ProxyIP地址和端口写到下面
#
如果代理需要验证,使用http-proxy server port [authfile] [auth-method]
#
其中authfile是一个2行的文本文件,用户名和密码各占一行,
# auth-method
可以省略,详细信息查看Manual
;http-proxy-retry # retry on connection failures
;http-proxy [proxy server] [proxy port #]
;http-proxy-retry # retry on connection failures
;http-proxy [proxy server] [proxy port #]

#
这项用于无线网络
# Wireless networks often produce a lot
# of duplicate packets.   Set this flag
# to silence duplicate packet warnings.
;mute-replay-warnings

#
证书/key文件指向
# Root CA
文件的文件名,用于验证Server CA证书合法性,
#
通过easy-rsa/build-ca生成的ca.crt,和Server配置里的ca.crt是同一个文件
ca ca.crt

# easy-rsa/build-key
生成的key pair文件,
#
上面生成key部分中有提到,不同客户使用不同的keys修改以下两行配置并使用他们的keys即可。
cert client01.crt
key client01.key


#
该项检测服务器证书可靠性
# Server
使用build-key-server脚本生成的,在x509 v3扩展中加入了ns-cert-type选项
#
防止××× client使用他们的keys DNS hack欺骗*** client连接他们假冒的××× Server
#
因为他们的CA里没有这个扩展
ns-cert-type server

# If a tls-auth key is used on the server
# then every client must also have the key.
#
Server配置里一致,ta.key也一致,注意最后参数使用的是1
tls-auth ta.key 1

#
选择一种加密算法,必需和服务器端一致
;cipher x

#
允许数据压缩
#
这项和服务器配置文件一样
comp-lzo

#
设置日志记录冗长级别
verb 3

#
重复日志记录限额
mute 20

三、建立路由

 其实到这里,Open×××部分的工作已经完成。服务端和客户端的通讯已经正常。但常见一个问题,就是客户端虽然可以访问到192.168.0.106,但却不能访问公司网内部的192.168.0.X服务器。 原因很简单,因为通讯是双方的,192.168.0.X没有到10.8.0.0网段的路由,有几种可能:
     a
×××服务器与公司网的网关不是同一台机器,解决办法是在公司网网关上设置到10.8.0.0网段的路由,接口是×××服务器网卡;
     b
192.168.0.X没有设置默认网关,解决办法是设置默认网关就是×××服务器,或已经做了配置的公司网网关;
     c
、有防火墙屏蔽。
 
对于本示例中只有一台192.168.0.X,可以这样做:
     1
)原路由表不变

2)增加路由 route add -net 10.8.0.0 netmask 255.255.255.0 gw 192.168.0.106 dev eth0

3)增加默认网关

route add default gw 192.168.0.X0网段默认网关地址)

 

11、发布内部的单网卡××× server

    在外网防火墙上添加:

    /sbin/iptables -t nat -A PREROUTING -d 58.60.231.84 -p tcp --dport 1194 -j DNAT --to 192.168.0.106:1194

/sbin/iptables -t nat -A PREROUTING -d 58.60.231.84 -p udp --dport 1194 -j DNAT --to 192.168.0.106:1194

/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.106 -o eth0 -j SNAT --to 58.60.231.84

 附录:

为了兼容WindowsTAP驱动,所以每对tun都必须在/30子网中,如下列表:

引用

[  1,  2] [  5,  6] [  9, 10] [ 13, 14] [ 17, 18]

[ 21, 22] [ 25, 26] [ 29, 30] [ 33, 34] [ 37, 38]

[ 41, 42] [ 45, 46] [ 49, 50] [ 53, 54] [ 57, 58]

[ 61, 62] [ 65, 66] [ 69, 70] [ 73, 74] [ 77, 78]

[ 81, 82] [ 85, 86] [ 89, 90] [ 93, 94] [ 97, 98]

[101,102] [105,106] [109,110] [113,114] [117,118]

[121,122] [125,126] [129,130] [133,134] [137,138]

[141,142] [145,146] [149,150] [153,154] [157,158]

[161,162] [165,166] [169,170] [173,174] [177,178]

[181,182] [185,186] [189,190] [193,194] [197,198]

[201,202] [205,206] [209,210] [213,214] [217,218]

[221,222] [225,226] [229,230] [233,234] [237,238]

[241,242] [245,246] [249,250] [253,254]

 

 

 

问题一:

windows 7windows 2008windows Vista 下, open*** 需要做一些调整才能正确设置路由,方法如下:
1
、如果的配置文件没有以下两行,请手工在配置文件里加入两行:
route-method exe
route-delay 2
2
、到open***的安装目录bin(默认是C:\program files\open***\bin),找到open***-gui.exe, 在这个open***-gui.exe文件上单击鼠标右键,选择"以管理员身份运行"(英语是Run as Administrator)