目标:让两个私网网段互通,比如公司内网跟服务器内网互通,通过公网,中间没有专线
一、环境
服务器端内网:172.16.88.0/24
服务器网网OpenVPN服务器IP:172.16.88.250(外网:211.211.211.211)
客户端内网:192.168.1.0/24
公司内网OpenVPN服务器IP:192.168.1.10
二、服务器端配置
1、生成ca,服务器及客户端公私钥证书
cd /usr/share/openvpn/easy-rsa/2.0
修改配置,该配置影响后面的ca及公私钥证书生成后存放位置
vi vars
#export KEY_DIR="$EASY_RSA/keys"
export KEY_DIR="/etc/openvpn/keys"
. vars
./clean-all
./build-ca
生成ca
./build-key-server server
为服务器生成公私钥,并签发证书
./build-dh
为服务器生成diffie-hellman相关的参数,用于ssl协商
./build-key
adidas
为客户端adidas生成公私钥,并签发证书
2、生成并修改服务器端配置文件openvpn.conf
cp
/usr/share/doc/openvpn-2.1.1/sample-config-files/server.conf
/etc/openvpn/openvpn.conf
;local a.b.c.d
local 172.16.88.250
ca keys/ca.crt
cert keys/server.crt
key keys/server.key # This file should be kept
secret
dh keys/dh1024.pem
push "route 172.16.88.0 255.255.255.0"
client-config-dir ccd
route 192.168.1.0 255.255.255.0
3、一个样本配置文件如下:
local 172.16.88.250
port 1194
proto udp
dev tun
ca keys/ca.crt
cert keys/server.crt
key keys/server.key # This file should be kept
secret
dh keys/dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 172.16.88.0 255.255.255.0"
client-config-dir ccd
route 192.168.1.0 255.255.255.0
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3
3、ccd下新建一个文件
ccd/adidas.intra.okbuy.com
iroute 192.168.1.0 255.255.255.0
4、运行openvpnd
/sbin/chkconfig openvpn on
/etc/init.d/openvpn start
三、客户端配置
[root@adidas toseed]# pwd
/root/toseed
[root@adidas toseed]# ls
adidas.crt 服务器给这台客户端签发的证书
adidas.key 这台客户端自己的私钥
ca.crt
服务器跟客户端共用的ca证书,用于验证对方的身份
client.conf 客户端的配置,这个需要自己写
上面三个文件来自于服务器,需要从服务器上传过来。
client.conf的配置如下:
client
dev tun
proto udp
remote 211.211.211.211 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert adidas.crt
key adidas.key
ns-cert-type server
comp-lzo
verb 3
以root身份在客户端运行下面的命令,之后测试两个网之间能不能通:
/usr/sbin/openvpn --cd /root/toseed/ --config client.conf
--script-security 2 --daemon
四、加路由
在办公网和服务器网的网关分别增加到对方的静态路由。