1.环境:
一台H3C路由器接入外网,有公网IP,内网一台linux(CentOS7.0)做OpenVPN服务器,路由器配了静态NAT。(如果IP紧张,也可以做端口映射。)
2.目标:
证书认证的内网OpenVPN。
3.步骤:
OpenVPN服务器:
1.CentOS7采用了最新的firewalld机制替代了iptables(默认iptables服务未安装),为了方便使用一下命令直接关掉。
systemctl stop firewalld
systemctl disable firewalld
systemctl stop iptables(CentOS7默认没启用iptables) 所需软件(软件后续更新链接):
https://static.saintic.com/download/thirdApp/OpenVPN/openvpn-2.1_rc21.tar.gz
https://static.saintic.com/download/thirdApp/OpenVPN/openvpn-2.1_rc21_eurephia.patch
2.安装软件生成证书
yum -y install pam-devel openssl-devel lzo-devel automake gcc gcc-c++ patch
yum install -y pkcs11-helper pkcs11-helper-devel
过程:(先同步时间!ntpdate ntp.pool.org)
tar zxf openvpn-2.1_rc19.tar.gz ; cd openvpn-2.1_rc19
patch -p1 < ../openvpn-2.1_rc21_eurephia.patch
./configure && make && make install
cd easy-rsa/2.0/
vim vars ; source ./vars ##修改默认国家、组织、邮件等,可不修改
./clean-all
./build-ca ##创建根证书,可以加上--batch免交互确认
./build-key-server server ##创建服务器证书,可以加上--batch免交互确认(./build-key-server --batch server)
./build-dh ##使用DH加密
./build-key client ##创建客户端证书,可以加上--batch免交互确认或使用./pkitool client
cd keys
mkdir /etc/openvpn
cp ca.crt ca.key dh1024.pem server.key server.crt client.* ../../../sample-config-files/server.conf /etc/openvpn
cp ../../../sample-scripts/openvpn.init /etc/init.d/openvpn
chkconfig --add openvpn
chkconfig openvpn on
3.修改配置文件/etc/openvpn/server.conf
;local
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
server 192.168.234.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push “route 192.168.1.0 255.255.255.0” ##向客户端推送内网网段
push “route 192.168.234.0 255.255.255.0” ##推送VPN网段
push “dhcp-option DNS 192.168.1.153” ##推送首选DNS,可以多个
push “dhcp-option DNS 114.114.114.114”
client-to-client ##允许OpenVPN客户端之间通信
duplicate-cn
keepalive 10 120
comp-lzo
user nobody ##默认的程序用户,建议以低权限账户运行
group nobody
persist-key
persist-tun
status openvpn-status.log
log openvpn.log
verb 3
4.开启转发,并关闭防火墙和 SELinux
vim /etc/sysctl.conf #修改net.ipv4.ip_forward = 0
net.ipv4.ip_forward = 1
sysctl -p ##让sysctl.conf生效
vim /etc/sysconfig/selinux
SELINUX=disabled
reboot #修改了SELinux需要reboot,临时禁用SELinux使用setenforce 0
5. iptables转发规则
centos7,需要安装iptables的服务, yum install iptables-services -y
需要所有流量通过vpn出口时server.conf添加一条 push "redirect-gateway def1 bypass-dhcp",添加iptables规则, iptables -t nat -A POSTROUTING -s 192.168.234.0/24 -o 出口网卡 -j MASQUERADE
6.H3C路由器:
添加一条VPN内网路由,下一跳指向OpenVPN服务器!
客户端配置:
win7 win8安装https://static.saintic.com/download/thirdApp/OpenVPN/openvpn-install-2.3.6-I601-x86_64.exe
winxp安装https://static.saintic.com/download/thirdApp/OpenVPN/openvpn-2.0.9-gui-1.0.3-install-FOR_-XP.exe
将./build-key client这一步产生的client.crt client.key ca.crt复制到客户端安装目录下的config/
将安装目录下的sample-config/client.ovpn复制到config/下,修改其中的remote VPN-SERVER-IP Port,即remote OpenVPN服务器IP 端口(默认是1194)
然后以管理员身份启动OpenVPN GUI,避免无法创建路由问题。
附录一个一键部署openvpn的脚本:
https://github.com/staugur/scripts/blob/master/services/openvpn.sh
# 自行下载,可能需要根据注释修改些变量。
# 脚本并没有一键完成所有,您还要按需配置。