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、创建 dh(Diffie-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 Name为client1,则在/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功能为客户端提供指定的DNS、WINS等
;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) 窗口,输入用户密码建立×××连接。
注:#号和;号开头的都是注释
# Linux或Unix下客户端配置文件使用扩展名为.conf
# Windows下客户端配置文件使用的是.o***
# 把需要使用的keys复制到配置文件所在目录ca.crt elm.crt elm.key ta.key
# 标注自己是个客户端
# 配置从server端pull过来,如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
# 始终重新解析Server的IP地址(如果remote后面跟的是域名),
# 保证Server IP地址是动态的使用DDNS动态更新DNS后,
# Client在自动重新连接时重新解析Server的IP地址
# 这样无需人为重新启动,即可重新接入×××
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,把Proxy的IP地址和端口写到下面
# 如果代理需要验证,使用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.X(0网段默认网关地址)
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
附录:
为了兼容Windows的TAP驱动,所以每对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 7、windows 2008、windows 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)
转载于:https://blog.51cto.com/jack81/478369