Open×××服务端配置
简介
Open×××是一个用于创建虚拟专用网络加密通道的软件包最早由James Yonan编写。
Open×××允许参与建立×××的单点使用公开密钥、电子证书、或者用户名密码来进行身份验证。它大量使用了OpenSSL加密库中的SSLv3/TLSv1协议函数库。
目前Open×××能在Solaris、Linux、OpenBSD、FreeBSD、NetBSD、Mac OS X与Windows 2000XPVista7上运行并包含了许多安全性的功能。它并不是一个基于Web的×××软件也不与IPsec及其他×××软件包兼容。
前提
条件允许先关闭selinux
安装使用环境
系统Centos 7.1
软件版本
easy-rsa-2.2.2
open***-2.3.10
安装依赖包
yum install -y openssl openssl-devel lzo lzo-devel pam pam-devel automake pkgconfig
1. 安装服务端Open×××软件包
默认的Centos 的yum源里没有Open×××的软件包我们可以添加rpmforge的repo从而实现yum安装open***
针对CentOS 5系统
rpm -ivh http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
针对CentOS 6系统
rpm -ivh http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
针对Centos 7系统
http://apt.sw.be/redhat/el7/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
安装完rpmforge的repo之后执行yum命令安装Open×××
Yum makecache
yum install -y open***
2. 生成Open×××需要的证书
使用easy-rsa脚本产生Open×××所需的CA证书、CA私钥、服务端证书、服务端私钥、客户端证书、客户端私钥
由于新版×××已经不包含easy-rsa服务所以需要单独下载安装
yum install -y easy-rsa
然后将easy-rsa目录 copy到/etc/open***并添加可执行权限
cp -R /usr/share/easy-rsa/ /etc/open***/
cd /etc/open***/easy-rsa/2.0
chmod +x *
修改vars配置如下使得生成证书时不用再次输入只需一路回车即可。
export KEY_COUNTRY="CN" 国家
export KEY_PROVINCE="BJ" 省份
export KEY_CITY="Beijing" 城市
export KEY_ORG="xxxx" 组织
export KEY_EMAIL="xxxx@xxxx.com" 邮箱
export KEY_OU="xxxx.com" 单位
保存退出
然后使用easy-rsa的脚本生成证书
. vars 注意. 之间有空格
./clean-all 初始化keys目录创建所需要的文件和目录
./build-ca server 生成root CA证书,用于签发server和client证书完成后生成ca.crt ca.key index.txt serial文件
./build-key-server server 生成服务器端密钥, 后面这个server就是服务器名可自定义完成后生成server.crt server.key文件
./build-key client 生成客户端密钥例如客户端用户名为client
./build-dh 生成Diffie Hellman文件,#TLS server 需要使用的一个文件完成后生成dh1024.pem或dh2048.pem文件,大小在配置文件中定义。
执行以上命令后将在/etc/open***/easy-rsa/2.0/keys/目录下产生对应的证书和秘钥,ls一下确认都已经生成后面要用到。
以下为可选项
-------------------------------------------------------------------------
为防止恶意***如DOS、UDP port flooding我们生成一个"HMAC firewall"
#open*** --genkey --secretkeys/ta.key
生成证书吊销链文件防止日后有人丢失证书被非法用户接入×××
#./make-crl ***crl.pem
Using configuration from /etc/open***/easy-rsa/openssl.cnf
-------------------------------------------------------------------------
3.生成Open×××服务端配置文件
cp /usr/share/doc/open***-2.2.2/sample-config-files/server.conf /etc/open***/
编辑/etc/open***/server.conf文件内容如下
port 1194 (使用的端口默认1194可自定义)
proto tcp 使用的协议可以设置为udp客户端o***文件中设置要与此一致
dev tun #基于路由的隧道
ca /etc/open***/easy-rsa/2.0/keys/ca.crt #之前执行./build-ca建立的根证书
cert /etc/open***/easy-rsa/2.0/keys/server.crt #之前执行./build-key-server生成的服务器私有证书
key /etc/open***/easy-rsa/2.0/keys/server.key #之前执行./build-key-server生成的服务器私有密钥
dh /etc/open***/easy-rsa/2.0/keys/dh2048.pem #之前执行./build-dh生成的文件
server 10.1.1.0 255.255.255.0 #要分配的×××网段不能与本机IP网段相同
ifconfig-pool-persist ipp.txt #记录客户端所获得IP
push "route 172.31.90.0 255.255.255.0" #通过××× Server去往其它网段路由重启***服务生效
log /var/log/open***.log #定义日志路径
max-clents 100 #允许客户端并发连接的数量
client-to-client #允许客户端之间相互通讯
status open***-status.log #定义open***连接状态日志
comp-lzo #开启×××连接压缩.客户端必须做相同设置
persist-key
persist-tun
crl-verify /etc/open***/easy-rsa/2.0/crl.pem ####用于注销已删除用户的key
其它选择默认即可
4.开启Open×××服务
/usr/sbin/open*** --config /etc/open***/server.conf & 配置文件路径及名称可自己定义
如果Open×××启动失败请查看Open×××的启动日志/var/log/open***.log。可能导致启动失败的原因
添加open***开机启动
echo "/usr/sbin/open*** --config /etc/open***/server.conf &" >> /etc/rc.local
若成功运行执行ifconfig命令会多出一个tun0即×××的虚拟网卡
5.服务端开启nat功能
客户端拨入Open×××后默认网关会指向Open×××服务器为了能使客户端可以上网需要在服务端开启nat功能
首先打开ip forward功能
sed -i '/net.ipv4.ip_forward/s/0/1/g' /etc/sysctl.conf
sysctl -w net.ipv4.ip_forward=1
然后配置iptables nat(此处不配置的话客户端连上×××后只能登陆服务端一台主机需要特别注意)
iptables -t nat -A POSTROUTING -s 192.168.21X.0/24 -o em2 -j MASQUERADE
192.168.21X.0为***server分配给客户端的虚拟网段em2为出口网卡
/etc/init.d/iptables save 保存配置
6、客户端配置
对于Windows客户端
到http://open***.se/download.html 下载gui版的Open×××按照提示安装完成
然后进入到安装目录如D:\Program Files\Open×××。将Linux服务端使用easy-rsa产生的客户端证书、私钥和ca证书下载到客户端电脑。需要下载的文件如下
/etc/open***/easy-rsa/2.0/keys/ca.crt #ca证书
/etc/open***/easy-rsa/2.0/keys/client.crt #客户端证书client为测试客气端用户名
/etc/open***/easy-rsa/2.0/keys/client.key #客户端私钥
将这些文件下载到D:\Program Files\Open×××\config下。
编辑客户端C:\Program Files (x86)\Open×××\sample-config\client.o***,内容如下
client
dev tun
proto udp 协议要与服务器端口配置文件定义一致
remote 211.112.112.112 1194 #×××服务器的外网IP地址和端口
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt #####client为测试用户名正式环境改为正式用户名.crt
key client.key #####client为测试用户名正式环境改为正式用户名.key
comp-lzo
verb 3
redirect-gateway def1
route-method exe
route-delay 2
将client.o***文件拷贝到C:\Program Files (x86)\Open×××\config下
右键以管理员身份运行open***客户端软件不以管理员运行可以出现连接后也不能访问的情况稍后在桌面右下角灰色小图标处右击选择connect即可。如下图
×××连接过程
×××连接成功如下图
对于Mac 客户端
到 http://sourceforge.net/projects/tunnelblick/ 下载Open××× 客户端软件 Tunnelblick
7、一些官方open***排错
如果遇到Open×××初始化失败或者ping失败下面有一些共同的问题症状和解决办法:
1.你得到如下错误信息: TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity). 这个错误指出客户端不能跟服务器建立网络链接.
解决办法
a.请确认客户端访问的服务器的机器名/IP和端口是正确的.
b.如果你的Open×××服务器是单网卡并处在受保护的局域网中请确认你你的网关防火墙使用了正确的端口转发规则。比如你的Open×××机器的地址是192.168.4.4但处在防火墙保护下时刻监听着UDP协议1194的连接请求那么负责维护192.168.4.x子网的网关就会有一个端口转发策略即所有访问UDP协议1194端口的请求都被转发到192.168.4.4 。
c.打开服务器的防火墙允许UDP协议1194端口连接进来或者不管是TCP还是UDP协议在服务器的配置文件中配置了。
2.你得到如下错误信息: Initialization Sequence Completed with errors – 这个错误可能发生在windows下a你没有启用DHCP客户端服务b你的XP SP2使用了某个第三方的个人防火墙。
解决办法: 启动DHCP客户端服务或者你确认你的XP SP2正确使用了个人防火墙.
3.你虽然获得了Initialization Sequence Completed 的信息但ping测试还是失败了那就通常是在服务器或者客户端的防火墙阻止过滤了在TUN/TAP设备结构上的网络流量。
解决办法: 关闭客户端的防火墙如果防火墙过滤了TUN/TAP设备端口的流量。比如在Windows XP SP2系统你可以到Windows 安全中心 -> Windows 防火墙 -> 高级 然后不要选择TAP-Win32 adapter设备 (即禁止TUN/TAP设备使用防火墙过滤 实质上就是告诉防火墙不要阻止×××认证信息)。 同样在服务器端也要确认TUN/TAP设备不实用防火墙过滤 (也就是说在TUN/TAP接口上选择过滤是有一定的安全保障的. 具体请看下面一节的访问策略).
4.当以udp协议的配置文件启动的时候连接停止服务器的日志文件显示如下一行信息
TLS: Initial packet from x.x.x.x:x, sid=xxxxxxxx xxxxxxxx
不管怎么样这信息只在服务器端显示在客户端是不会显示相同的信息。
解决办法: 你只拥有单向连接从客户端到服务器从服务器到客户端的连接被防火墙挡住 通常在客户端这边防火墙a可能是个运行在客户端的个人防火墙软件b或者服务客户端的NAT路由 网关被设置为从服务器端访问客户端的UDP协议包被阻挡返回。
END
转载于:https://blog.51cto.com/linuxtech/1739943