常在项目中遇到外地的客户碰到问题,但无法在电话中解决,需要在机器上进行分析和处理。第一个想到的就是远程登陆,但对方没有公网IP,怎么办?此时,如果有个×××通道该多好。所以,我决定搭建一台×××服务器以方便今后的维护,顺便也再熟悉一下相关的配置。
×××硬件是不用考虑的,费用太高。而且既然已经熟悉了Linux环境,当然还是在该环境下寻找了。考虑两点:
1、安全性第一,配置方便;
2、支持多平台连接,毕竟使用Windows桌面的用户还是很多的。
考虑再三,决定使用Open×××来实现。
一、原理
Open×××是基于SSL的×××,其使用工业标准的SSL/TLS协议实现第2层和第3层的安全数据链路×××。最新版本是2.0.7,其优点包括:
1、基于SSL协议,安全,并使用单一TCP或UDP端口即可实现;
2、使用双向验证,服务器只需保存自己的证书和密钥;
3、服务器只接受那些由主CA证书签名的客户端,并有撤回机制,而不需要重建整个PKI;
4、可以实现基于Common Name的权限控制。
官方网站:这里
rpm下载:点击
依赖的lzo包:点击
※注意,Open×××是基于SSL/TLS协议的,所以是不兼容IPSec和PPTP,在Windows也需要安装客户端
二、网络架构
Open×××可以实现多点对单点,以及点对点的×××功能。今天我们先以一个简单的案例来说明,后续再详细描述更深入的配置。
架构如下:
说明:
1、远程客户端通过Internet网络连接到公司网络(模拟成192.168.1.0网段),并建立10.8.0.0的×××通道;
2、公司内部网络为192.168.100.0网段,假设只有一台主机;
3、目标是客户端和后台主机可以双向互通。
三、安装配置
1、首先下载相关的安装包
wget http://open***.net/release/open***-2.0.9.tar.gz
wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz
2、开始安装
tar zxvf lzo-2.03.tar.gz -C /usr/src/
cd lzo-2.03&& make && make install
tar zxvf open***-2.0.9.tar.gz -C /usr/src/
cd open***-2.0.9 && ./configure &&make && make install
3、配置环境变量以及配置服务器端
cd /usr/src/open***-2.0.9/easy-rsa
此目录下以许多程序及脚本, 以下为使用到的程序及脚本说明
vars 脚本, 是用来创建环境变量,设置所需要要的变量的脚本
clean-all 脚本,是创建生成 ca 证书及密钥文件所需要的文件及目录 build-ca 脚本, 生成 ca 证书(交互)
build-dh 脚本, 生成 Diffie-Hellman文件(交互)
build-key-server 脚本, 生成服务器端密钥(交互)
build-key 脚本, 生成客户端密钥(交互)
pkitool 脚本, 直接使用 vars 的环境变量设置, 直接生成证书(非交互)
初始化keys 目录,创建生成ca 证书及密钥文件所需要的文件和目录
./clean-all
编辑 vars 文件,生成环境变量, vars 里的参数根据自己需要改变.
export KEY_SIZE=1024 #生成密钥的位数
export KEY_COUNTRY=CN #定义所在的国家编码, 2 个字符
export KEY_PROVINCE=BeiJing #定义所在的省份
export KEY_CITY=BeiJing #定义所在的城市
export KEY_ORG=”××× Test org” #定义所在的组织
export KEY_OU=”××× COM” #定义所在的单位
export KEY_EMAIL=”china.guorui@gmail.com” #定义你的邮件地址
修改好vars 文件后就可以开始生成ca 证书及密钥文件了!
source ./vars
生成Root Ca证书, 用于签发Server 和 Client 证书
./build-ca
ls keys
可以看到已经生成了ca.crt ca.key 文件
生成Diffie-Hellman文件
./build_dh
ls -l keys/dh2048.pem
可以看到生成了2048 位的 Diffie-Hellman 文件
生成服务器使用的 ××× server Ca证书
./build-key-server server
server是你为CA 证书起的一个名字, 以 server名字为例,生成的服务器使用的 CA证书文件为: server.crt server.key,将生成的CA 证书及密钥拷贝到/etc/open***下
cp keys/{ca.crt,ca.key,server.crt, server.key, dh2048.pem} /etc/open***/ 3.3 生成客户端 CA 证书及密钥
4、 防止恶意***
如果想让open*** 防止恶意***如DOS、UDP port flooding,生成一个"HMAC firewall", 这个功能可以不启用,减少麻烦。
/usr/local/sbin/open*** --genkey --secret /usr/src/open***-2.0.9/easy-rsa/keys/ta.key
这个时候,在keys 目录下,产生一个ta.key,同时也需要在open***.conf 文件里添加一行
open***.conf
tls-auth /usr/src/open***-2.0.9/easy-rsa/keys/ta.key 0
5、 生成客户端 CA证书及密钥使用:build-key 程序即可
./build-key guorui
将在keys 目录下生成 guorui.crt guorui.csr guorui.key 三个客户端证书
将ca.crt ca.key guorui.crt guorui.csr guorui.key 五个文件打包,以备客户端***使用
tar zcvf guorui.***.key.tar.gz keys/{ca.crt ca.key guorui.crt guorui.csr guorui.key}
6、配置服务器端的配置文件
port 2194
proto udp
dev tun
server 10.1.0.0 255.255.255.0
push "route 192.168.100.0 255.255.255.0"
push "dhcp-option DNS 192.168.1.1"
push "dhcp-option DNS 202.96.128.86"
ifconfig-pool-persist /usr/local/etc/ipp.txt
ca /usr/local/etc/keys/ca.crt
cert /usr/local/etc/keys/server.crt
key /usr/local/etc/keys/server.key
dh /usr/local/etc/keys/dh1024.pem
tls-auth /usr/local/etc/keys/ta.key 0
keepalive 10 120
comp-lzo
status /var/log/open***-status.log
log /var/log/open***.log
verb 4
client-to-client
persist-key
persist-tun
启动open***服务
/usr/local/sbin/open*** --daemon --config /usr/local/etc/server.conf
lsof -i :2194 查看该服务是否正常启动
7、启用ip 转发,并且配置iptables, 实现 NAT功能
如果实现在拨到 *** 上后能够使用open*** server上网的话, 需要配置NAT 功能, 修改open*** 的管理脚本.在管理脚本的 start 功能里
添加以下命令(在管理脚本的 119 行)
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 10.1.0.0/24 -j SNAT –to 192.168.100.1
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A INPUT -i tap+ -j ACCEPT
iptables -A FORWARD -i tap+ -j ACCEPT
8、安装open***-2.0.1ms1-gui-1.0.3-nonadmin-install.exe
8.1、修改客户端的配置文件client.conf
client
dev tun
proto udp
remote 192.168.1.1 2194
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server comp-lzo
verb 3
redirect-gateway def1
tls-auth ta.key 1
comp-lzo
nobind
9、测试连接是否成功
转载于:https://blog.51cto.com/zhangbo1119/959324