环境介绍:
外网IP: 119.119.119.119
内网网络:192.168.0.0/16
OPENVPN: 192.168.98.88
内网办公机:192.168.0.5
系统环境:
OPENVPN:Centos6.6_64 2.6.32-504.12.2.el6.x86_64 openvpn-2.3.6
Client:Windows 7_64
Centos用作openvpn服务端,客户端通过安装windows版openvpn软件进行连接内网。
禁用selinux,清空防火墙规则。
# sed -i ‘/SELINUX/s/enabled/disabled/‘ /etc/selinux/config
# grep disabled /etc/selinux/config
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# iptables -F
# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
2. 开启路由转发功能呢,保证拨入vpn后可连接到内部网络。
# echo "net.ipv4.ip_forward = 1" >/etc/sysctl.conf ;sysctl -p
3. 安装openvpn服务端,通过yum方式来进行安装,这里使用epel的yum源。
# rpm -ivh http://mirrors.ustc.edu.cn/fedora/epel//6/x86_64/epel-release-6-8.noarch.rpm
# yum install openvpn easy-rsa
4. 创建openvpn配置目录,拷贝配置脚本到指定目录下
# mkdir -p /etc/openvpn/easy-rsa/keys
# cp -rf /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa/
5. 准备创建CA证书文件,修改vars文件中变量值。国家、省、城市、组织、邮箱、单位
# vim /etc/openvpn/easy-rsa/vars
export KEY_COUNTRY="CN"
export KEY_PROVINCE="BJ"
export KEY_CITY="Beijing"
export KEY_ORG="TEST"
export KEY_EMAIL="[email protected]"
export KEY_OU="TEST"
6. 到easy-rsa目录下,拷贝openssl配置文件,并且引用之前修改的文件,使变量生效。
# cd /etc/openvpn/easy-rsa/
# cp openssl-1.0.0.cnf openssl.cnf
# source ./vars
7. 初始化证书授权中心,创建CA证书,输出信息中已经引用了之前所设置的变量值,这里一路回车即可
# ./clean-all
# ./build-ca
8. 创建服务端证书和密钥。
# ./build-key-server server
9. 创建客户端证书和密钥。
# ./build-key client
10. 创建Diffie Hellman 参数,Diffie Hellman 用于增强安全性,在OpenVPN是必须的。
# ./build-dh
11.至此所需证书及密钥都已经生成完毕。拷贝服务端所需证书到/etc/openvpn下
# cp dh2048.pem ca.crt server.crt server.key /etc/openvpn/
12.拷贝客户端需要用到的证书文件,这里使用sz命令进行下载到本地
# sz ca.crt client.crt client.key
13.拷贝服务端配置文件,并编辑添加相关内容。
# cp /usr/share/doc/openvpn-2.3.6/sample/sample-config-files/server.conf /etc/openvpn/
# vim /etc/openvpn/server.conf
local 192.168.98.88 #监听本地ip
port 11940 #监听端口这里使用11940
push "dhcp-option DNS 114.114.114.114" #openvpn可以在配置中支持DNS设置
push "dhcp-option DNS 8.8.4.4"
push "route 192.168.0.0 255.255.0.0" #本地内网网段
14. 服务端配置完成,启动程序,查看是否监听11940的udp端口,默认为udp,并且看到多出来一块网卡tun0,IP为10.8.0.1
# service openvpn start
# lsof -i :11940
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEopenvpn 13420 root 7u IPv4 6688438 0t0 UDP 192.168.98.88:11940 # netstat -anuActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 192.168.98.88:11940 0.0.0.0:*
# ifconfig tun0
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.8.0.1 P-t-P:10.8.0.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:2949 errors:0 dropped:0 overruns:0 frame:0
TX packets:2763 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:299160 (292.1 KiB) TX bytes:2198503 (2.0 MiB)
所有服务端都已经配置完毕,现在可以到客户端进行测试
windows客户端安装openvpn-install-2.3.0-I001-x86_64.exe客户端。
2.将客户端证书文件拷贝到安装目录的config目录下。
3.拷贝安装目录下sample-config下的client.ovpn也放到config下面。
并修改remote my-server-1 1194 改为 remote 119.119.119.119 11940
由于openvpn服务端在内网,所以还需到路由器上面做下端口映射,将119.119.119.119的11940映射到192.168.98.88的11940端口
4.启动客户端,可看到分配了一个10.8.0.5的ip,现在ping 192.168.98.88可以通,访问10.8.0.1也通。
客户端到openvpn服务器的网络已经连通,如果想访问内网所有设备,还需要在内网的路由器上面加一条路由条目,将访问10.8.0.0网段的指向192.168.98.88,这样外面就可以连接其他内网设备了。
这里是只开通一台机器来进行测试,把自己办公电脑添加到10.8.0.0的路由,实现拨入vpn后,连接自己办公电脑,所有操作均通过办公电脑来进行跳板操作。
在cmd命令行添加静态路由:route -p ADD 10.8.0.0 MASK 255.255.255.0 192.168.98.88
在外网连接VPN后可通过远程桌面对办公电脑进行操作,从而对内网其他服务器进行操作。