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)