我的环境:

ubuntu 3.5.0-23-generic(64bit)
需要实现的功能:
因为公司新开的几个网站,可能需要周末安排客服值班,但是客服又不想来公司,又需要使用到公司内部资源,例如我们网站的后台管理,所以没办法,就找了open***这个开源的虚拟专用网络来搭建专门的×××通道,来实现我们异地办公的功能;
搭建步骤:
由于我个人比较懒,毕竟在搭建ubuntu之前,其实我一直使用的centos这个操作系统,所以我就直接使用apt-get这个来安装的open***。安装步骤如下(这里我直接使用的root这个身份登录):
1、apt-get install open*** openssl  #由于需要使用openssl的加密,所以需要安装一下
2、cp -a /usr/share/doc/open***/examples/easy-rsa/1.0 /etc/open***/easy-rsa #很多地方写的是2.0,但是因为2.0这个目录下在安装的时候一直提示没有找到openssl.conf这个文件,但是在1.0下面有,所以我的是在1.0下面安装的
3、cd /etc/open***/easy-rsa/1.0
4、vi vars
修改以下这些地方(其实也不用修改,因为我后面又试过一次,不修改也不会影响样)
export KEY_COUNTRY=CN     #国家
export KEY_PROVINCE=SC    #省份
export KEY_CITY=ChengDu   #地市
export KEY_ORG="Open×××-TEST"    #组织
export KEY_EMAIL="me@myhost.mydomain"  #邮箱
保存退出
5、source ./vars
  这个命令会出现一下结果,属于正常现象:
  NOTE:when you run ..........................
  然后执行:
  ./clean -all #初始化keys这个密匙所放置的目录
  ./build-ca   #生成root CA证书,用于签发server 和 client证书
  ./build-dh
  ./build-key-server server #出现的内容直接回车就行,其中有两步需要你确定y,输入y就行;
  ./build-key client        #生成客服端密匙,步骤和server一样
到了这里,你都顺利的话,那么恭喜你,你的open***已经安装完成,接下来只需要配置就行了;
6、cp -a /usr/share/doc/open***/examples/sample-config-files/server.conf.gz /etc/open***
  cd /etc/open***
  gunzip server.conf.gz
  vi server.conf   #修改一下参数既可
  port 1194  #端口号,看自己的爱好所定
  proto tcp  #使用的协议,我使用的是tcp的协议
  ca /etc/open***/easy-rsa/1.0/keys/ca.crt        #你钥匙存放的绝对路径
  cert /etc/open***/easy-rsa/1.0/keys/server.crt
  key /etc/open***/easy-rsa/1.0/keys/server.key
  dh /etc/open***/easy-rsa/1.0/keys/dh1024.pem
  server 10.8.0.0 255.255.255.0                   #用来分给连接×××机器的IP的,建议是不要和内网一个网段
  push "route 192.168.2.0 255.255.255.0"          #这个重要,这个就是看你能不能访问LAN内其他机器资源的选项
修改以上这些地方,然后保存退出,基本上,你的server端就配置完成了;
接下来就是启动服务了:
/usr/sbin/open*** --config /etc/open***/server.conf
然后查看是否成功:
lsof -i:1194 如果有东西出来,那么表示你的服务启动成功,恭喜了;
client端设置(我们的是 win 操作系统):
首先下载 open***-2.1.4-install.exe ,这个软件就自己在网上自己下载啦!
下载完成过后,双击安装,直接下一步到底就算是安装完成;

客服端的设置:

1、先使用winscp这个工具,进入刚刚你的server端,到 /etc/open***/examples/easy-rsa/1.0/keys 目录下,
把 ca.crt client.crt client.key拷贝到你的本地;
把/usr/share/doc/open***/examples/sample-config-files 目录下的 client.conf 拷贝到和上面三个文件一个文件夹下面;
如果你是默认安装的话,那么在你本地也就是 client 端的C:\Program Files\Open×××\config目录下,把以上的文件复制到这里面,进行下一步操作;
修改本地 C:\Program Files\Open×××\config 目录下的 client.conf 文件,重命名为 client.o***,修改内容如下:
proto tcp  #使用tcp模式
remote 192.168.2.203 1194  #其中192.168.2.203其实是你server端的公网IP,切记切记
cert client.crt
key client.key    #这两个的名字和你目前目录下的 client.crt 一样,为什么要说着这个,因为你以后可能会新建很多,例如 test等client帐号,所以需要记得这个地方就是和你 ./build-key client 后面的 client 这个名字一样;
保存退出后,基本上你的设置就完成了;

然后 就是最恼火的防火墙 和 路由的设置,这一块因为我就一点皮毛,所以弄了我一天的时间,终于是弄好了,具体设置如下:

1、路由设置(这里我们公司使用的硬件路由,是TL-ER5120)
  主要是设置一个端口映射:
  端口转发---->虚拟服务器
  然后按照配置就行了,这样路由就算是配置好了,那么在通过外面的网络访问这个端口的时候他就会到这个端口映射的我们   server端去访问了;
2、防火墙设置
  主要开通如下几个:
  iptables -A INPUT -p tcp --dport 1194 -j ACCEPT
  iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
  iptables -A INPUT -s 10.8.0.0/24 -p all -j ACCEPT
  iptables -A FORWARD -d 10.8.0.0/24 -j ACCEPT
  iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source 192.168.2.203  #这里的IP也是你server端的公网IP
3、IP转发
  vi /etc/sysctl.conf
  net.ipv4.ip_forward=1  #开通IP转发功能
保存退出
  sysctl -p
好了,到这里就都完成了,接下来测试:
在client端,双击桌面上Open××× GUI图标,运行***,然后在你的电脑右下角就会有一个 泛红的小图标,点击上去,鼠标右键,点击connect,接下来就是等待,如果后面变为绿色,并且提示connect to 10.8.0.0这个,那么说明你已经连接成功了,恭喜你,你已经可以使用你公司内部资源了;
花了两天时间,终于把这一块弄出来了,不容易啊
如果还有错误的话,那么需要自己调试了,当然也欢迎大家给反馈问题给我,大家相互学习嘛
EMail : dshaoyun@163.com