openvpn安装部署

1.1 openvpn搭建

1.1.1 基本环境

主机名

系统版本

IP地址

角色

openvpn版本

openvpn

CentOS7.4

10.0.0.252

openvpn服务端

openvpn-2.4.6.tar.gz

Administrator

Windows10

10.0.0.1

openvpn客户端

openvpn-install-2.4.6-I602.exe

1.1.2 服务端

1.1.2.1 解压编译安装

# yum -y install openssl-devel lzo-devel pam-devel

# tar xf openvpn-2.4.6.tar.gz

# cd openvpn-2.4.6/

# ./configure --prefix=/usr/local/openvpn --disable-lzo

# make && make install

# mkdir /etc/openvpn    #创建配置文件存放目录

# egrep -v "^#|^$" sample/sample-config-files/server.conf >/etc/openvpn/server.conf   #从模板复制一份配置文件

1.1.2.2 制作证书

1.1.2.2.1 制作根证书

# tar xf EasyRSA-3.0.1.tgz

# cd EasyRSA-3.0.1

# ./easyrsa init-pki       #初始化证书目录pki

# ./easyrsa build-ca nopass  #创建根证书,名称随意,但是不能和服务端证书或客户端证书名字相同

/server/tools/EasyRSA-3.0.1/pki/ca.crt   #生成的根证书

# ./easyrsa gen-dh       #生成diffle human参数,它能保证秘钥在网络中安全传输

/server/tools/EasyRSA-3.0.1/pki/dh.pem    #生成的文件

1.1.2.2.2 制作服务端证书

# ./easyrsa build-server-full server nopass   #server是服务端证书名称,可以用其他名称

/server/tools/EasyRSA-3.0.1/pki/issued/server.crt  #生成的服务端证书文件

/server/tools/EasyRSA-3.0.1/pki/private/server.key  

1.1.2.2.3 制作客户端证书

# ./easyrsa build-client-full client nopass    #client是客户端证书名称,可以随意定义名称

/server/tools/EasyRSA-3.0.1/pki/private/client.key

1.1.2.3 修改配置文件

# cat /etc/openvpn/server.conf 

local 10.0.0.252      #本机的外网IP地址

port 1194           #默认的openVPN端口为1194

proto tcp           #使用tcp协议

dev tun            #虚拟网卡使用tun模式

ca /server/tools/EasyRSA-3.0.1/pki/ca.crt

cert /server/tools/EasyRSA-3.0.1/pki/issued/server.crt

key server.key /server/tools/EasyRSA-3.0.1/pki/private/server.key

dh /server/tools/EasyRSA-3.0.1/pki/dh.pem

server 10.8.0.0 255.255.255.0    #为客户端分配的IP网段地址,注意不要和openVPN服务器内网段相同

ifconfig-pool-persist ipp.txt #记录客户端和虚拟IP的映射关系,当客户端重新连接时依然被分配断开之前的IP地址

# 重定向客户端网关,这样客户端不需要推送172网段路由就可以访问内网了,但是无法访问互联网,此处注释

# push "redirect-gateway def1 bypass-dhcp"

# 给客户端推送的路由,这样可以访问内网了,客户端使用自己本地网关访问外网

push "route 172.16.1.0 255.255.255.0"

push "dhcp-option DNS 223.5.5.5"    #给客户端推送的DNS服务器地址

push "dhcp-option DNS 223.6.6.6"

client-to-client   #所有vpn客户端之间可以通信

keepalive 10 120

compress lz4-v2

push "compress lz4-v2"

max-clients 100   #openVPN服务端允许同时连接的最大客户端数量

user nobody

group nobody

persist-key

persist-tun

status /var/log/openvpn-status.log   #记录已连接客户端的日志

log         /var/log/openvpn.log   #openVPN服务日志文件

log-append  /var/log/openvpn.log

verb 3     #日志级别为3

 

开启路由转发功能

# echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf

# sysctl -p

1.1.2.4 防火墙配置

# systemctl stop firewalld

# systemctl disable firewalld

# yum -y install iptables-services

# systemctl start iptables

# systemctl enable iptables

# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE

# service iptables save

1.1.2.5 启动openvpn服务

# /usr/local/openvpn/sbin/openvpn --config /etc/openvpn/server.conf &

1.1.3 客户端配置

windows10里安装openvpn的客户端openvpn-install-2.4.6-I602.exe

我的安装路径是E:\soft\openVPN\anzhuang

Linux服务端中以下三个文件放到WindowsE:\soft\openVPN\anzhuang\OpenVPN\config目录下

/server/tools/EasyRSA-3.0.1/pki/ca.crt

/server/tools/EasyRSA-3.0.1/pki/private/client.key

/server/tools/EasyRSA-3.0.1/pki/issued/client.crt

 

E:\soft\openVPN\anzhuang\OpenVPN\config目录下创建客户端配置文件client.ovpn,内容如下

client

dev tun

proto tcp

remote 10.0.0.252 1194 # 填服务器真实IP

persist-key

persist-tun

ca ca.crt

cert client.crt

key client.key

verb 3 # 日志等级

 

最后双击桌面的客户端图标连接服务端,不出意外的话连接成功,如果失败的话右键桌面右下角的OpenVPN GUI小图标点击view log查看错误日志,找到具体报错原因并解决。

1.1.4 配置VPN分流

虽然把OpenVPN服务器搭建好了,但是有一个问题,客户端所有应用的网络都走VPN通道了,有时只是想访问某个站点或连接某个服务走VPN通道而已,其它的还是使用本地网络,也就是实现VPN分流效果。实现方法如下:
注释/etc/openvpn/server.conf里的以下三行:

push "redirect-gateway def1 bypass-dhcp"

push "dhcp-option DNS 223.5.5.5"

push "dhcp-option DNS 223.6.6.6"
添加推送到客户端的路由规则,比如:
push "route 172.16.1.0 255.255.255.0"
假设172.16.1.0VPN服务器所在的局域网的网段,那么添加这条规则后,客户端也能访问与VPN服务器同一网段的其它机器了,上面的路由规则可以是具体IP,可以是网段,只要能符合路由表的规范。配置好后重新启动OpenVPN服务,客户端重新连接,此时可以发现只有访问172.16.1.0网段时才会走VPN通道。


猜你喜欢

转载自blog.51cto.com/wn2100/2120637