需求:
   首先我们的需求是这样,我们在外地有三个分部,分别在上海,南京,无锡。这三个地方的同学们需要通过***访问北京办公室内网的某台主机,同时在北京的我们也需要在家里***进到办公室里边进行访问。
   实现的方法是通过 open*** server 端指定客户端的专有配置,配置里边可以指定特定客户端的ip地址,之后我可以在iptables的FORWARD链里边,根据指定给客户端的ip地址来指定访问规则,规则的制定是这样的,允许指定ip访问特定主机,然后deny特定主机的所有访问,之后放行其它
   open*** 的ip地址访问权限。
   系统需求:
       1,开启iptables 
       2,开启路由转发功能
          vi /etc/sysctl.conf --->把 net.ipv4.ip_forward = 0 ---> 把最后的0 改成 1 -->保存退出 ---> sysctl -p 
       3,open*** 安装,网上教程一堆不赘述。
       4,根据自己的需求生成对应的客户端证书,我这个例子里边会生成四个,admin,shanghai,nanjing,wuxi
   权限划分如下:
       上海,南京,无锡   --允许需要访问内网的一台机器上的服务
       我们组的同事      --允许访问内网所有的机器

    在open*** server的配置文件中添加如下配置
       client-config-dir ccd
    然后在open*** 目录下建立 ccd 文件夹,根据客户端的名字建立对应的文件,*这里要声明一下,我的open*** 是证书和密码双重认证的,经过我的实验如果想通过客户端配置文件分配指定IP地址给客户端的话,是需要证书认证的,用系统认证方式是行不通的,所以证书的名字和ccd文件里边文件名字一定要一致。只有证书和ccd 里边的文件名字一致时候,open*** 才会把登录用户和ccd 配置文件联系起来。
      	文件里边指定的ip地址可以根据自己的实际需求指定,但是必须按照最下边分配出来的指定。
      	文件ccd/shanghai:
      	ifconfig-push 10.8.0.5 10.8.0.6

		文件ccd/nanjing:
		ifconfig-push 10.8.0.9 10.8.0.10

		文件ccd/wuxi:
		ifconfig-push 10.8.0.13 10.8.0.14

		ifconfig-push中的每一对IP地址表示虚拟客户端和服务器的IP端点。它们必须从连续的/30子网网段中获取(这里是/30表示xxx.xxx.xxx.xxx/30,即子网掩码位数为30),以便于与Windows客户端和TAP-Windows驱动兼容。明确地说,每个端点的IP地址对的最后8位字节必须取自下面的集合:
		
		[  1,  2]   [  5,  6]   [  9, 10]   [ 13, 14]   [ 17, 18]
		[ 21, 22]   [ 25, 26]   [ 29, 30]   [ 33, 34]   [ 37, 38]
		[ 41, 42]   [ 45, 46]   [ 49, 50]   [ 53, 54]   [ 57, 58]
		[ 61, 62]   [ 65, 66]   [ 69, 70]   [ 73, 74]   [ 77, 78]
		[ 81, 82]   [ 85, 86]   [ 89, 90]   [ 93, 94]   [ 97, 98]
		[101,102]   [105,106]   [109,110]   [113,114]   [117,118]
		[121,122]   [125,126]   [129,130]   [133,134]   [137,138]
		[141,142]   [145,146]   [149,150]   [153,154]   [157,158]
		[161,162]   [165,166]   [169,170]   [173,174]   [177,178]
		[181,182]   [185,186]   [189,190]   [193,194]   [197,198]
		[201,202]   [205,206]   [209,210]   [213,214]   [217,218]
		[221,222]   [225,226]   [229,230]   [233,234]  
    这些配置完成之后,我们需要配置iptables 的FORWARD 链了,规则如下边的例子,这里只列举了一组,注意一定是先ACCEPT 需要访问的网段,然后再DROP。最后需要一个ACCEPT all的规则来放行管理员的访问权限。
       iptables -I FORWARD -i tun0 -s 10.8.0.5 -d 192.xxx.xxx.x -j ACCEPT 
       iptables -I FORWARD -i tun0 -s 10.8.0.5 -d 192.xxx.0.0/24 -j DROP 

       iptables -A FORWARD -j ACCEP

   

    这样配置完成之后服务器端就ok了,然后就是客户端的配置了,客户端一定要有证书认证,服务器端才能下发指定的ip地址。以下的这两个选项必有才行。

       cert xxx.crt

       key xxx.key

 这样小伙伴们就可以愉快的一起用open*** 玩耍了,这样做如果客户端众多的话需要废点力气。