Centos6.2 + open***安装配置与管理
1. 安装前需要说明的
1.1 open***需要的支持:openssl,lzo
1.2 基本设定:连接方式采用路由方式,认证方式采用证书认证,虚拟设备采用tun(比tap更高效)
1.3 网络环境:
open***server open***client 本地pc 本地linux机器
em1:58.68.247.177 em1:192.168.0/24 172.16.1.0/24 192.168.1.0/24
em2:192.168.0.177
2. 下载并安装
2.1 下载指定版本的open***
[root@moniter201~]# cd /u1/tools
[root@moniter201tools]# wget http://swupdate.open***.org/community/releases/open***-2.2.2.tar.gz
[root@moniter201tools]# yum -y install openssl* lzo*
[root@moniter201tools]# tar zxvf open***-2.2.2.tar.gz
[root@moniter201tools]# mkdir -p /usr/local/open***
[root@moniter201tools]# cd open***-2.2.2
[root@moniter201open***-2.2.2]# ./configure--prefix=/usr/local/open*** --enable-pthread
[root@moniter201open***-2.2.2]# make &&make install && make clean
2.2 配置tun/tap驱动(已集成于linux内核中)
2.2.1 确认内核中是否有驱动存在
[root@moniter201~]# locate if_tun.h
或者
[root@moniter201~]# ls /usr/include/linux/if_tun.h
2.2.2 配置tun/tap设备节点
[root@moniter201~]# mknod /dev/net/tun c 10 200
2.2.3 载入tun/tap kernel module
[root@moniter201~]# modprobe tun
2.2.4 开启ip转发功能
[root@moniter201 ~]# echo1 > /proc/sys/net/ipv4/ip_forward
或者
[root@moniter201~]# sysctl -w net.ipv4.ip_forward=1 //注:或者修改/etc/sysctl.conf下net.ipv4.ip_forward=1
3. 配置open***
3.1修改vars文件
[root@moniter201 ~]# cp -a/u1/tools/open***-2.2.2/easy_rsa /usr/local/open***/etc/
[root@moniter201 ~]# vim/usr/local/open***/etc/easy_rsa/2.0/vars
------------------下面仅给出了需要配置的地方--------------------
export EASY_RSA="`pwd`"
export OPENSSL="openssl"
export PKCS11TOOL="pkcs11-tool"
export GREP="grep"
export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`
export KEY_DIR="$EASY_RSA/keys"
echo NOTE: If you run ./clean-all, I will be doing a rm-rf on $KEY_DIR
export PKCS11_MODULE_PATH="dummy"
export PKCS11_PIN="dummy"
export KEY_SIZE=1024
exportCA_EXPIRE=3650
export KEY_EXPIRE=3650
exportKEY_COUNTRY="CN"
export KEY_PROVINCE="zh_CN"
export KEY_CITY="Beijing"
export KEY_ORG="daomain"
export KEY_EMAIL="your@email.com"
export KEY_CN=Beijing
export KEY_NAME=Beijing
export KEY_OU=Beijing
export PKCS11_MODULE_PATH=Beijing
export PKCS11_PIN=1234
--------------------------结束--------------------------------
3.2 生成证书key(初始化PKI)
[root@moniter201 2.0]# ./clean-all //注:用于创建keys目录和所需文件
[root@moniter201 2.0]# ./build-ca //注:生成rootca证书,用于签发server和client证书
3.3 为服务器生成Diffie-Hellman文件
[root@moniter201 2.0]# ./build-dh //注:TLSserver需要使用该文件
3.4 生成server key
[root@moniter201 2.0]# ./build-key-server server //注:server为生成后的文件名,分别为server.crt,server.key
3.5 生成clientkey
[root@moniter2012.0]# . vars //注:修改完vars文件后,使用该命令来加载新vars配置
[root@moniter2012.0]# ./build-key zdh
3.6 生成HMAC firewall
[root@moniter201 2.0]# open*** --genkey --secret keys/ta.key //注:防止恶意***(如:DOS,UDP port flooding)
3.7 生成证书吊销链文件
[root@moniter201 2.0]# ./make-crl crl.pem //注:防止日后有人丢失证书,被非法用户接入***
[root@moniter201 2.0]# ./revoke-full zdh //注:吊销zdh的证书;使用前请确保server.conf中包含crl-verify/usr/local/open***/etc/easy_rsa/2.0/keys/crl.pem
//特别说明:这是open***的一个bug,单纯的仅删除key或者换名后重启服务仍不能有效的吊销证书,需要使用该命令,这一点是经过我多次测验得出的。
3.8 恢复证书文件可用
[root@moniter201 2.0]# source ./vars
[root@moniter2012.0]# ./build-key zdh //注:需要将新的key拷贝到客户端方能使用
4. 配置server.conf
port 1194
proto udp
dev tun
ca /usr/local/open***/etc/easy-rsa/2.0/keys/ca.crt
cert /usr/local/open***/etc/easy-rsa/2.0/keys/server.crt
key /usr/local/open***/etc/easy-rsa/2.0/keys/server.key
dh /usr/local/open***/etc/easy-rsa/2.0/keys/dh1024.pem
server 172.16.1.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 192.168.0.0 255.255.255.0"
#push "redirect-gateway"
#push "dhcp-option DNS 8.8.8.8"
keepalive 10 120
comp-lzo
user nobody
group nogroup
status /usr/local/open***/logs/open***-status.log
log /usr/local/open***/logs/***.log
log-append /usr/local/open***/logs/***.log
persist-key
persist-tun
status open***-status.log
verb 4
mute 20
5. 分配open***的目录权限
[root@moniter201~]# groupadd nogroup
[root@moniter201~]# id nogroup //注:查看nogroup的GID
[root@moniter201~]# chown -R nobody.nobody /usr/local/open***
6. 设定SNAT规则
[root@moniter201~]# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to-source192.168.0.201
7. 在open*** server机器上需要为本机器添加一条路由,让本机能被访问
[root@backup~]# /sbin/route add -net 172.16.1.0 netmask255.255.255.0 gw 172.168.1.2
8. 启动和关闭
[root@moniter201~]# cd/u1/tools/open***-2.2.2/sample-scripts
[root@moniter201sample-scripts]# cp open***.init/etc/init.d/open***
[root@moniter201~]# chkconfig --add open***
[root@moniter201~]# chkconfig --level 35 open*** { on|off }
[root@moniter201~]# /etc/init.d/open*** {start,stop,restart} //注:/usr/local/sbin/open*** –config/usr/local/open***/etc/server.conf –daemon (推荐使用)
-----------------------------------------------------------------------------------------
9. 配置pc端
客户端下载:http://open***.ustc.edu.cn/open***-2.1.1-install.exe
在open***/config/目录下,新建名为gy的文件夹,并从open***服务器上拷贝(ca.crt,zdh.crt,zdh.key,ta.key)到gy文件夹下;然后新建pc端配置文件gy.o***,其内容如下:
client
dev tun
proto udp
##########################
#如果有多个open*** server,可按如下配置,添加以下内容
#remote 58.68.247.177 1194
# remote 58.68.247.178 1194
#remote-random #自动解析DNS名称,选择可用server
#resolv-retry 30 #重试30s
##########################
remote 58.68.247.177 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ./gy/ca.crt
cert ./gy/zdh.crt
key ./gy/zdh.key
ns-cert-type server
keepalive 20 60
#tls-auth ta.key 1
comp-lzo
verb 3
mute 20
-----------------------------------------------------------------------------------------
10. 如何pc需要访问在内网的180,只需要在180上添加以下路由
[root@backup ~]#/sbin/route add -net 172.16.1.0 netmask255.255.255.0 gw 192.168.0.177
-----------------------------------------------------------------------------------------
11. Linux系统open***客户端使用方式
1). 先安装好open***(略)
2). 在open*** server上生成好client key,并将key拷贝到client客户端机器上。
3). 创建client客户端的配置文件,放在/usr/local/open***/etc下,命名为client.conf:
[root@test2 etc]# cat client.conf
client
;dev tap
dev tun
;dev-node MyTap
;proto tcp
proto udp
remote 58.68.247.177 1194
;remote my-server-2 1194
;remote-random
resolv-retry infinite
nobind
user nobody
group nobody
persist-key
persist-tun
;http-proxy-retry
;http-proxy [proxy server] [proxy port
;mute-replay-warnings
ca /usr/local/open***/etc/ca.crt
cert /usr/local/open***/etc/client1.crt
key /usr/local/open***/etc/client1.key
ns-cert-type server
keepalive 20 60
;tls-auth ta.key 1
;cipher x
comp-lzo
verb 3
mute 20
4). 启动
/usr/local/open***/sbin/open*** --config/usr/local/open***/etc/client.conf &
-----------------------------------------------------------------------------------------
12. 问题总结:
各个平台下Open×××连接log所在的位置:
Windows下:如果使用Open××× GUI进行连接,默认的log会存放在Open×××安装目录下log文件夹。
Linux下:在Open×××配置文件中添加一行:log-append/path/to/logfile,连接后/path/to/logfile即为连接log。
Mac OS下:tunnelblick里,Details菜单(感谢@tianyi提供信息:-))
Android下:tunneldroid里,按menu查看log。
Open×××的log文件为普通文本文件,可以用各种文本编辑器,例如记事本、写字板、VIM等工具打开。一般情况下为了方便查看问题所在,建议在Open×××的配置文件中添加verb 5,可以在log里输出更多有效信息。
正常连接时,log的最后一行是:
FriMar 5 09:58:04 2010 Initialization Sequence Completed
这表明Open×××成功建立了连接并成功修改了路由表,已经可以正常使用×××。
问题1:
MonMar 01 21:42:13 2010 us=78000 CreateFile failed on TAP device:\\.\Global\{3D3B7076-EC34-48DE-82A4-B34956532951}.tap
Mon Mar 01 21:42:13 2010 us=78000 All TAP-Win32 adapters on this system arecurrently in use.
Mon Mar 01 21:42:13 2010 us=78000 Exiting
解答:这个问题仅在Windows上出现。原因未知,怀疑与防火墙软件有关。通常情况下可以通过重启系统解决。如果没有解决的话,可以到Open×××安 装目录下bin文件夹,依次执行delalltap.bat和addtap.bat,即可解决。注意,如果使用的是Vista/Win7/Win2003Win2008这样的带UAC的Windows系统,需要用管理员权限执行这两个脚本。
问题2:
ThuDec 03 22:46:07 2009 us=651000 C:\WINDOWS\system32\route.exe ADD 128.0.0.0 MASK128.0.0.0 10.7.0.1
Thu Dec 03 22:46:07 2009 us=667000 ROUTE: route addition failed usingCreateIpForwardEntry: 拒绝访问。 [status=5 if_index=14]
Thu Dec 03 22:46:07 2009 us=667000 Route addition via IPAPI failed [adaptive]
Thu Dec 03 22:46:07 2009 us=667000 Route addition fallback to route.exe
Thu Dec 03 22:46:07 2009 us=667000 ERROR: Windows route add command failed[adaptive]: returned error code 1
解答:这是在Vista/Win7/Win2003Win2008等系统中没有用管理员权限安装及启动Open××× GUI造成的,Open×××进程没有相应权限修改系统路由表。解决方法是重新用管理员权限安装Open×××,并在启动Open××× GUI时右键选择使用管理员权限打开。
问题3:
MonFeb 1 18:44:52 2010 us=241882 /system/xbin/bb/route add -net 128.0.0.0 netmask128.0.0.0 gw 10.7.0.1
Mon Feb 1 18:44:52 2010 us=244293 ERROR: Linux route add command failed: couldnot execute external program
Mon Feb 1 18:44:52 2010 us=244628 Initialization Sequence Completed
解答:这是Android下,Cyanogen Mod和OpenEclair两个ROM,曾经有段时间使用了错误的Open×××二进制文件,导致的无法调用busybox添加ip和路由。具体请参考Android上Open×××的设置与使用这篇日志,重新安装Open×××二进制文件,相应地修复busybox
问题4:
SatMar 06 16:31:42 2010 us=107000 There are no TAP-Win32 adapters on this system.You should be able to create a TAP-Win32 adapter by going to Start -> AllPrograms -> Open××× -> Add a new TAP-Win32 virtual ethernet adapter.
解答:这个问题在Windows上发生,原因未知。解决方案如log所述:开始->所有程序->Open×××->Add a newTAP-Win32 virtual ethernet adapter。如果是Vista/Win7,用管理员权限执行
13. 附录:
open*** server:
tun0 Link encap:UNSPEC HWaddr00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:172.16.1.1 P-t-P:172.16.1.2 Mask:255.255.255.255
UP POINTOPOINT RUNNINGNOARP MULTICAST MTU:1500 Metric:1
RX packets:29802145errors:0 dropped:0 overruns:0 frame:0
TX packets:43271898errors:0 dropped:3020 overruns:0 carrier:0
collisions:0txqueuelen:100
RX bytes:7165234425(6.6 GiB) TX bytes:34083823620 (31.7 GiB)
open*** client
[root@backup ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref UseIface
219.234.86.0 0.0.0.0 255.255.255.0 U 0 0 0 em1
172.16.1.0 192.168.0.177 255.255.255.0 UG 0 0 0 em2
局域网pc:
以太网适配器 本地连接 2:
连接特定的 DNS 后缀 . . . . . . . :
本地链接IPv6 地址. . . . . . . . : fe80::d163:305e:9c06:6c38%19
IPv4 地址 .. . . . . . . . . . . : 172.16.1.10
子网掩码 . . . . . . . . . . . . : 255.255.255.252
默认网关.. . . . . . . . . . . . :
无线局域网适配器无线网络连接:
连接特定的 DNS 后缀 . . . . . . . :
本地链接IPv6 地址. . . . . . . . : fe80::f021:a724:9e9a:3e98%10
IPv4 地址 .. . . . . . . . . . . : 192.168.101.120
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关.. . . . . . . . . . . . : 192.168.101.1
IPv4 路由表
===========================================================================
活动路由:
网络目标网络掩码网关接口跃点数
0.0.0.0 0.0.0.0 192.168.101.1 192.168.101.120 25
127.0.0.0 255.0.0.0 在链路上 127.0.0.1 306
127.0.0.1 255.255.255.255 在链路上 127.0.0.1 306
127.255.255.255 255.255.255.255 在链路上 127.0.0.1 306
169.254.0.0 255.255.0.0 在链路上 169.254.68.90 276
169.254.68.90 255.255.255.255 在链路上 169.254.68.90 276
169.254.255.255 255.255.255.255 在链路上 169.254.68.90 276
172.16.1.1 255.255.255.255 172.16.1.9 172.16.1.10 30
===========================================================================
[root@moniter201 ~]# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.7 on Mon Sep 1723:27:58 2012
*filter
:INPUT ACCEPT [46156:51016440]
:FORWARD ACCEPT [2641288:2576046319]
:OUTPUT ACCEPT [24566:2607593]
COMMIT
# Completed on Mon Sep 17 23:27:58 2012
# Generated by iptables-save v1.4.7 on Mon Sep 1723:27:58 2012
*nat
:PREROUTING ACCEPT [1306:136876]
:POSTROUTING ACCEPT [25:1593]
:OUTPUT ACCEPT [25:1593]
-A POSTROUTING -s 192.168.0.0/24 -o eth1 -j MASQUERADE
COMMIT
# Completed on Mon Sep 17 23:27:58 2012
官网网址:http://www.open***.org (提示:可能无法正常访问,需代理过去,推荐使用goagent)