本文经高人指点:http://hi.baidu.com/jiekech00

客户端和服务器端走open***,服务器和客户机都不是网关设备,想让服务器可以通过隧道来访问客户端的内网的资源一直访问不了,后来发现要两边都要设置一下路由,然后在客户机上面设置一下SNAT进行源地址转换就可以了。

×××服务器的配置文件里面添加路由

client-config-dir ccd //ccd文件里面有一个和客户端的证书同名的文件内容如下:

iroute 172.16.8.0 255.255.255.0 //让客户端在他本地添加一条路由

push "route 192.168.10.0 255.255.255.0" 为客户端push一条路由

route 172.16.8.0 255.255.255.0 在服务器本地添加一条路由

 配置之后服务器上面的OPEN×××完整配置如下:
dev tun

proto   udp

mode server

tls-server

server  10.1.1.0 255.255.255.0

ca      /etc/open***/ca.crt

cert    /etc/open***/server.crt

key     /etc/open***/server.key

dh      /etc/open***/dh1024.pem

ifconfig-pool-persist /etc/open***/ipp.txt

keepalive 10 120

client-config-dir ccd

push "route 192.168.10.0 255.255.255.0"

route 172.16.8.0 255.255.255.0

max-clients 50

persist-key

persist-tun

status  /etc/open***/open***-status.log

log         /etc/open***/open***.log

log-append  /etc/open***/open***.log

mtu-test

verb 3

 

客户端的配置文件不用更改但是要在iptables里面添加一条SNAT转换,把从隧道过来的数据的源IP全部替换为客户端eth0网卡的IP地址用以进行内网的访问

iptables -t nat -A POSTROUTING -d 172.16.8.0/24 -j SNAT --to 1.1.1.1

echo 1 >  /proc/sys/net/ipv4/ip_forward