Linux CentOS安装配置OpenVPN 2.4.0最新版教程
2016.12.27 官方发布了OpenVPN 2.4.0版本,相比之前的版本变化不大,新版引入了一个更快的数据压缩算法叫 lz4(旧版用的是 lzo),新版不再支持Windows XP。
1. 准备工作
下载OpenVPN源码包,下载地址:
https://swupdate.openvpn.org/community/releases/openvpn-2.4.0.tar.gz
下载OpenVPN证书制作工具EasyRSA,下载地址:
https://github.com/OpenVPN/easy-rsa/releases/download/3.0.1/EasyRSA-3.0.1.tgz
2. 安装OpenVPN
安装依赖的软件包
yum -y install openssl openssl-devel pam pam-devel
解压并安装OpenVPN 2.4.0
tar zxf openvpn-2.4.0.tar.gz
cd openvpn-2.4.0
./configure --prefix=/usr/local/openvpn --disable-lzo
make && make install
mkdir /etc/openvpn # 创建配置文件存放目录
cp sample/sample-config-files/server.conf /etc/openvpn/server.conf # 从模板复制一份配置文件
3. 制作证书
制作根证书
tar zxf EasyRSA-3.0.1.tgz
cp -rf EasyRSA-3.0.1 /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa
./easyrsa init-pki # 初始化证书目录pki
./easyrsa build-ca nopass # 创建根证书,提示输入Common Name,名称随意,但是不能和服务端证书或客户端证书名称相同
./easyrsa gen-dh # 生成Diffle Human参数,它能保证密钥在网络中安全传输
制作服务端证书
./easyrsa build-server-full server nopass # server是服务端证书名称,可以用其它名称
制作客户端证书
./easyrsa build-client-full barry nopass # barry是客户端证书名称,可以用其它名称
4. 服务端配置
修改服务端配置文件/etc/openvpn/server.conf
内容如下:local a.b.c.d # 填服务器真实IP
port 1194
proto tcp
dev tun
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/server.crt
key /etc/openvpn/easy-rsa/pki/private/server.key
dh /etc/openvpn/easy-rsa/pki/dh.pem
server 10.8.0.0 255.255.255.0 # 给客户端分配的IP段
ifconfig-pool-persist ipp.txt # 记录客户端和虚拟ip的映射关系,当客户端重新连接时依然被分配断开之前的IP地址
push "redirect-gateway def1 bypass-dhcp" # 重定向客户端网关
push "dhcp-option DNS 8.8.8.8" # 选择一个DNS,这里用Google的DNS示例
client-to-client
keepalive 10 120
compress lz4-v2
push "compress lz4-v2"
user nobody
group nobody
persist-key
persist-tun
status /var/log/openvpn-status.log
log /var/log/openvpn.log
verb 3 # 日志等级
开启路由转发支持,用 vi 编辑/etc/sysctl.conf
文件,修改以下参数net.ipv4.ip_forward = 1
执行下面命令使sysctl.conf
配置文件生效并添加iptables转发规则
sysctl -p
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
service iptables save
启动OpenVPN服务
/usr/local/openvpn/sbin/openvpn --config /etc/openvpn/server.conf &
5. Windows PC客户端配置
下载OpenVPN GUI客户端,64位下载地址:
http://build.openvpn.net/downloads/snapshots/openvpn-install-2.4.0-I602-pr80v18.exe
下载好后按默认设置安装即可。
将以下3个文件下载下来并放到C:\Program Files\OpenVPN\config
目录下/etc/easy-rsa/pki/private/barry.key
/etc/easy-rsa/pki/issued/barry.crt
/etc/easy-rsa/pki/ca.crt
新建客户端配置文件C:\Program Files\OpenVPN\config\client.opvn
,写入如下内容:client
dev tun
proto tcp
remote a.b.c.d 1194 # 填服务器真实IP
persist-key
persist-tun
ca ca.crt
cert barry.crt
key barry.key
verb 3 # 日志等级
双击桌面的OpenVPN GUI图标启动连接,不出意外的话连接成功,如果失败的话右键桌面右下角的OpenVPN GUI小图标点击view log
查看错误日志,找到具体报错原因并解决。连接成功后在浏览器地址栏输入ip.cn
,此时可以看到本地IP已变成OpenVPN服务器的IP。
* 额外教程:配置VPN分流
虽然把OpenVPN服务器搭建好了,但是有一个问题,客户端所有应用的网络都走VPN通道了,有时只是想访问某个站点或连接某个服务走VPN通道而已,其它的还是使用本地网络,也就是实现VPN分流效果。实现方法如下:
注释/etc/openvpn/server.conf
里的以下两行:;push "redirect-gateway def1 bypass-dhcp"
;push "dhcp-option DNS 8.8.8.8"
添加推送到客户端的路由规则,比如:push "route 192.168.100.0 255.255.255.0"
假设192.168.100.0是VPN服务器所在的局域网的网段,那么添加这条规则后,客户端也能访问与VPN服务器同一网段的其它机器了,上面的路由规则可以是具体IP,可以是网段,只要能符合路由表的规范。配置好后重新启动OpenVPN服务,客户端重新连接,此时可以发现只有访问192.168.100.0网段时才会走VPN通道。