OpenVPN架构
一、VPN简介
1、VPN概述
VPN(全称Virtual Private Network)虚拟专用网络,是依靠ISP和其他的NSP,在公共网络中建立专用的数据通信网络的技术,可以为企业之间或者个人与企业之间提供安全的数据传输隧道服务。在VPN中任意两点之间的连接并没有传统专网所需的端到端的物理链路,而是利用公共网络资源动态组成的,可以理解为通过私有的隧道技术在公共数据网络上模拟出来的和专网有同样功能的点到点的专线技术,所谓虚拟是指不需要去拉实际的长途物理线路,而是借用了公共Internet网络实现。
2、VPN的作用
VPN功能可以帮助公司里的远程用户(出差,家里),公司的分支机构,商业合作伙伴及供应商等公司和自己的公司内部网络之间建立可信的安全连接或者是局域网连接,确保数据的加密安全传输和业务访问,对于运维工程师来说,还可以连接不同的机房为局域网,处理相关的业务流。我们可以通过一张网络逻辑图为同学们描述VPN的作用。
3、VPN的分类
①远程访问VPN服务
即通过个人电脑远程拨号到企业办公网络。
一般为企业内部员工出差,休假或特殊情况下在远离办公室的时候,又有需求访问公司的内部网络获取相关资源,就可以通过VPN拨号到公司内部。此时远程拨号的员工和办公室内的员工以及其他拨号的员工之间都相当于一个局域网络内。例如:访问内部的域控制器,文件服务器,OA系统,ERP,HTTP服务,内网飞秋聊天工具等局域网服务应用。
②企业内部网络之间VPN服务
- 在公司的分支机构的局域网和公司总部LAN之间的VPN连接。通过公网Internet建立VPN将公司在各地的分支机构的LAN链接到公司总部的LAN。例如:各大超市之间业务结算等。
- 这是由于地域的原因而产生的VPN的需求,通过VPN让不同地域内的机器可以互相访问,就好像是一个局域网一样。例如:办公室互联协同办公,机房互联数据同步及业务访问等。
③互联网公司多IDC机房之间VPN服务
此处是运维架构人员需要考虑的问题。不同机房之间业务管理和业务访问,数据流动。
④企业外部VPN服务
在供应商,合作伙伴的LAN和本公司的LAN之间建立的VPN服务。
⑤访问国外的网站
FQ业务应用
4、常见隧道协议介绍
①pptp
点对点隧道协议(PPTP)是由包括微软和3Com等公司组成的PPTP论坛开发的一种点对点隧道协议,基于拨号使用的PPTP协议,使用PAP或CHAP之类的加密算法,或者使用Microsoft的点对点加密算法MPPE。其通过跨越基于TCP/IP的数据网络创建VPN实现了从远程客户端到专用企业服务器之间数据的安全传输。PPTP支持通过公共网络(例如Internet)建立按需的,多协议的,虚拟专用网络。PPTP允许加密IP通讯,然后在要跨越公司IP网络或公共IP网络(如Internet)发送的IP头中对其进行封装。典型的linux平台的开源软件为pptp。
②L2TP
L2TP第2层隧道协议(L2TP)是LETF基于L2F(Cisco的第二层转发协议)开发的PPTP的后续版本。是一种工业标准Internet隧道协议,其可以为跨越面向数据包的媒体发送点到点协议(PPP)框架提供封装。PPTP和L2TP都使用PPP协议对数据进行封装,然后添加附加包头用于数据在互联网络上的传输。PPTP只能在两端点间建立单一隧道。L2TP支持在两端点间使用多隧道,用户可以针对不同的服务质量创建不同的隧道。L2TP可以提供隧道验证,而PPTP则不支持隧道验证。但是当L2TP或PPTP与IPSEC共同使用时,可以由IPSEC提供隧道验证,不需要在第2层协议上验证隧道使用L2TP。PPTP要求互联网络为IP网络。L2TP只要求隧道媒介提供面向数据包的点对点的连接,L2TP可以在IP(使用UDP),帧中继永久虚拟电路(PVCs),X.25虚拟电路(VCs)或ATM VCs网络上使用。
③IPsec
-
IP安全协议(IPSec:IP Security)实际上是一套协议包而不是一个独立的协议。从1995年开始IPSec的研究以来,IETF IPSec 工作组在它的主页上发布了几十个Internet草案文献和12个RFC文件。其中,比较重要的有RFC2409IKE(互联网密钥交换),RFC2401 IPSec协议,RFC2402 AH验证包头,RFC2406 ESP加密数据等文件。
-
IPSec隧道模式隧道是封装,路由与解封装的整个过程。隧道将原始数据包隐藏(或封装)在新的数据包内部。该新的数据包可能会有细心的寻址与路由信息,从而使其能够通过网络传输。隧道与数据保密性结合使用时,在网络上窃听通讯的人将无法获取原始数据包数据(以及原始的源和目标)。封装的数据包到达目的地后,会删除封装,原始数据包头用于将数据包路由到最终目的地。
④SSL VPN
SSL VPN,SSL协议提供了数据私密性,端点验证,信息完整性等特性。SSL协议由许多子协议组成,其中两个主要的子协议是握手协议和记录协议。握手协议允许服务器和客户端在应用协议传输第一个数据字节以前,彼此确认,协商一种加密算法和密码钥匙。在数据传输期间,记录协议利用握手协议生成的密钥加密和解密后来交换的数据。
SSL独立于应用,因此任何一个应用程序都可以享受它的安全性而不必理会执行细节。SSL置身于网络结构体系的传输层和应用层之间。此外,SSL本身就被几乎所有的Web浏览器支持。这意味着客户端不需要为了支持SSL连接安装额外的软件。这两个特征就是SSL能应用于VPN的关键点。
典型的SSL VPN应用如OpenVPN,是一个比较好的开源软件。OpenVPN允许参与建立VPN的单点使用预设的私钥,第三方证书,或者用户名/密码来进行身份验证。它大量使用了OpenSSL加密库,以及SSLv3/TLSv1协议。OpenVPN能在Linux,xBSD,Mac OSX与Windows 2000/XP上运行.它并不是一个基于Web的VPN软件,也不与IPSec及其他VPN软件包兼容,C/S架构的软件,单独安装openvpn客户端。
二、OpenVPN开源产品
1、OpenVPN产品介绍
在众多vpn产品中,OpenVPN无疑是Linux下开源VPN的先锋,它提供了良好的访问性能和友好的用户GUI。
OpenVPN是一个用于创建虚拟专用网络加密通道的软件包,最早由James Yonan编写。OpenVPN允许参与建立VPN的单点使用预设的私钥,第三方证书,或者用户名/密码来进行身份验证。它大量使用了OpenSSL加密库,以及SSLv3/TLSv1协议。OpenVPN能在Linux,xBSD,MacOS X与Windows上运行。Openvpn是一个服务器和客户端软件,而不是一个基于Web的VPN软件,也不与IPSec及其他VPN软件包兼容。
2、OpenVPN依赖的SSL与TLS协议内容
SSL即,安全套接层(Secure Sockets Layer,SSL)是一种安全协议,诞生的目的是为网络通信提供安全及数据完整性保障,SSL在传输层中对网络通信进行加密。
SSL采用公开密钥技术,保证两个应用间通信的保密性和可靠性,使客户与服务器应用之间的通信不被攻击者窃听。它在服务器和客户机两端可同时被支持,目前已成为互联网上保密通讯的工业标准。现行的Web浏览器亦普遍将HTTP和SSL相结合1,从而实现安全通信。SSL协议其继任者是TLS。
后来IETF(www.ietf.org)将SSL作了标准化,即RFC2246,并将其称为TLS(Transport Layer Security),其最新版本是RFC5246,版本1.2。从技术上讲,TLS1.0与SSL3.0的差异非常微小。
TLS(Transport Layer Security)利用密钥算法在互联网上提供端点身份认证与通讯保密,其基础是公钥基础设施(public key infrastructure,PKI)。不过在实现的典型例子中,只有网络服务者被可靠身份验证,而其客户端则不一定。这是因为公钥基础设施普遍商业运营,电子签名证书通常需要付费购买。协议的设计在某种程度上能够使主从架构应用程序通讯本身防窃听,干扰(Tampering)和消息伪造。
3、OpenVPN的加密通信原理过程
OpenVPN使用TLS加密是通过使用公开密钥(非对称密钥,加密解密使用不同的key,一个称为Public key,另一个是Private key)对数据进行加密的,对于TLS传输的工作原理,这里暂且先不介绍。对于OpenVPN使用TLS_mode,首先Server和Client要有相同CA签发的证书,双方通过交换证书验证双方的合法性以决定是否建立VPN连接,然后使用对方CA把自己目前使用的数据加密方法(类似于密钥)加密后发送给对方,由于使用对方CA加密的,所以只有对方CA对应的Private key才能解密该字串,保证了此密钥的安全性,并且此密钥定期改变,对于窃听者来说,可能还没有破解出密钥,通信双方已经更换密钥了。
4、OpenVPN的多种身份验证方式
OpenVPN提供了多种身份验证方式,用以确认参与连接双方的身份,包括:预享私钥,第三方证书以及用户名/密码组合等。预享密钥最为简单,但同时它只能用于建立点对点的VPN;基于PKI的第三方证书提供了最完善的功能,但是需要额外的精力去维护一个PKI证书体系。OpenVPN2.0后引入了用户名/口令组合的身份验证方式,他可以省略客户端预享密钥,但是仍有一份服务器CA证书需要被用作加密,比较好的验证方式还有LDAP统一验证等。
5、OpenVPN通信原理
OpenVPN所有的通信都基于一个单一的IP端口(默认为1194),默认使用UDP协议通讯,同时TCP也被支持。OpenVPN连接能通过大多数的代理服务器,并且能够在NAT的环境中很好地工作。OpenVPN服务端具有向客户端“推送”某些网络配置信息的功能,这些信息包括:IP地址,路由设置等。OpenVPN提供了两种虚拟网络接口:通用Tun/Tap驱动,通过它们,可以建立三层IP隧道,或者虚拟二层以太网,后者可以传送任何类型的二层以太网络数据。传送的数据可通过LZO算法压缩。OpenVPN2.0以后版本每个进程可以同时管理数个并发的隧道。
OpenVPN使用通用网络协议(TCP与UDP)的特点使它成为IPsec等协议的理想替代1,尤其是在ISP(Internet server provider)过滤某些特定VPN协议的情况下。
在选择协议时候,需要注意2个加密隧道之间的网络状况,如有高延迟或者丢包较多的情况下,请选择TCP协议作为底层协议,UDP协议由于存在无连接和重传机制,导致要隧道上层的协议进行重传,效率非常低下。这里建议用TCP协议方式。
6、OpenVPN生产环境常用场景
(1)远程拨号访问企业网络或IDC机房
用的最多的场景
(2)企业异地内部网络通过VPN连接成局域网
(3)互联网公司多IDC机房之间通过VPN连接交换数据
此处是运维架构人员需要考虑的问题。不同机房之间业务管理和业务访问,数据流动。
(4)企业外部VPN服务
在供应商,合作伙伴的LAN和本公司的LAN之间建立的VPN服务。
从技术上来说,2,3,4的实现是一样的。
三、OpenVPN成产环境及需求模拟
初始环境搭建
1、准备三台服务器和一台windows,三台服务器都要关掉网关
ADSL
VPNserver
内网服务器
三台服务器都开启网卡转发功能
vim /etc/sysctl.conf
将net.ipv4.ip_forward = 0 改成net.ipv4.ip_forward = 1
关闭防火墙,三台服务器都需要关闭
service iptables stop
配置VPN服务器的时间同步(在学校环境下不用做此步骤)
#给VPN服务器的外网网卡添加网关和DNS信息
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=192.168.0.100
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=192.168.0.1
[root@localhost ~]# ifdown eth0;ifup eth0 #重启网卡
Determining if ip address 192.168.0.100 is already in use for device eth0...
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.200.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0 #网关信息
[root@localhost ~]# cat /etc/resolv.conf #查看DNS信息
nameserver 192.168.0.1
[root@localhost ~]# mount /dev/sr0 /media/cdrom/ #挂载光盘
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# yum -y install ntpdate #安装ntpdate
#手动执行如下命令:
[root@localhost ~]# /usr/sbin/ntpdate ntp1.aliyun.com #时间同步
[root@localhost ~]# date +%Y-%m-%d-%H-%M #查看系统时间
#写入定时任务
[root@localhost ~]# echo "* * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null" >> /var/spool/cron/root
[root@localhost ~]# crontab -l
* * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null
特别提示:
如果同学们遇到同步以后时间始终和真实时间对应不上;
那么可能是Linux时区的设置有误
我们只需要执行/bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
命令即可
四、OpenVPN生产环境实战
1、安装OpenVPN,在VPNserver端
OpenVPN所需软件
lzo-2.06.tar.gz
openvpn-2.2.2.tar.gz
安装lzo压缩模块
wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.96.tar.gz
解压并编译安装lzo
[root@VPNserver ~]# tar xf lzo-2.06.tar.gz -C /usr/src/
[root@VPNserver ~]# cd /usr/src/lzo-2.06/
[root@VPNserver lzo-2.06]# ./configure && make && make install
安装OpenVPN支持包
[root@VPNserver lzo-2.06]# yum -y install openssl-devel pam-devel
解压并编译安装OpenVPN
[root@VPNserver ~]# cd /usr/src/openvpn-2.2.2/
[root@VPNserver openvpn-2.2.2]# ./configure --with-lzo-headers=/usr/local/include --with-lzo-lib=/usr/local/lib && make && make install
/2
2、配置OpenVPN server 建立CA证书
初始化配置命令
[root@VPNserver openvpn-2.2.2]# cd /usr/src/openvpn-2.2.2/easy-rsa/2.0/
[root@VPNserver 2.0]# cp vars vars.bak.2018-12-4
修改证书文件vars最后的11行
[root@VPNserver 2.0]# vim vars
export KEY_COUNTRY="CN" #国家
export KEY_PROVINCE="BJ" #省份
export KEY_CITY="Beijing" #城市
export KEY_ORG="yunjisuan" #组织
export KEY_EMAIL="[email protected]" #邮件地址
export KEY_EMAIL=1140180652@qq.com #邮件地址
export KEY_CN=CN #国家
export KEY_NAME=yunjisuan #名字
export KEY_OU=yunjisuan #名字
export PKCS11_MODULE_PATH=changeme
export PKCS11_PIN=1234
#提示:下面在建立证书时,会提示上面配置的内容,直接回车即可
#让vars文件立即生效
[root@VPNserver 2.0]# source vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /usr/src/openvpn-2.2.2/easy-rsa/2.0/keys
[root@VPNserver 2.0]# ./clean-all
[root@VPNserver 2.0]# ./build-ca
查看证书
[root@VPNserver 2.0]# ll keys/
total 12
-rw-r--r--. 1 root root 1367 Dec 4 20:31 ca.crt #证书
-rw-------. 1 root root 916 Dec 4 20:31 ca.key #私钥
-rw-r--r--. 1 root root 0 Dec 4 20:30 index.txt
-rw-r--r--. 1 root root 3 Dec 4 20:30 serial
生成服务器端证书和秘钥key文件
[root@VPNserver 2.0]# ./build-key-server server
Generating a 1024 bit RSA private key
..........++++++
...............................++++++
writing new private key to 'server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [CN]: #回车
State or Province Name (full name) [BJ]: #回车
Locality Name (eg, city) [Beijing]: #回车
Organization Name (eg, company) [yunjisuan]: #回车
Organizational Unit Name (eg, section) [yunjisuan]: #回车
Common Name (eg, your name or your server's hostname) [server]: #回车
Name [yunjisuan]: #回车
Email Address [1140180652@qq.com]: #回车
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123123
An optional company name []:yunjisuan
Using configuration from /usr/src/openvpn-2.2.2/easy-rsa/2.0/openssl-1.0.0.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'CN'
stateOrProvinceName :PRINTABLE:'BJ'
localityName :PRINTABLE:'Beijing'
organizationName :PRINTABLE:'yunjisuan'
organizationalUnitName:PRINTABLE:'yunjisuan'
commonName :PRINTABLE:'server'
name :PRINTABLE:'yunjisuan'
emailAddress :IA5STRING:'[email protected]'
Certificate is to be certified until Dec 1 12:39:05 2028 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
查看证书
生成客户端证书和key文件,一个客户端只能生成一个客户端秘钥
下面建立客户端证书,名称keshushu
[root@VPNserver 2.0]# ./build-key keshushu
Generating a 1024 bit RSA private key
................++++++
........++++++
writing new private key to 'keshushu.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [CN]:
State or Province Name (full name) [BJ]:
Locality Name (eg, city) [Beijing]:
Organization Name (eg, company) [yunjisuan]:
Organizational Unit Name (eg, section) [yunjisuan]:
Common Name (eg, your name or your server's hostname) [keshushu]:
Name [yunjisuan]:
Email Address [1140180652@qq.com]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123123
An optional company name []:yunjisuan
Using configuration from /usr/src/openvpn-2.2.2/easy-rsa/2.0/openssl-1.0.0.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'CN'
stateOrProvinceName :PRINTABLE:'BJ'
localityName :PRINTABLE:'Beijing'
organizationName :PRINTABLE:'yunjisuan'
organizationalUnitName:PRINTABLE:'yunjisuan'
commonName :PRINTABLE:'keshushu'
name :PRINTABLE:'yunjisuan'
emailAddress :IA5STRING:'[email protected]'
Certificate is to be certified until Dec 1 12:46:49 2028 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
生成传输进行秘钥交换时用到的交换秘钥文件
./build-dh #不能落了不执行,否则会出错
查看生成服务器及客户端的证书文件
[root@VPNserver 2.0]# ll keys/ total 68 -rw-r--r--. 1 root root 4087 Dec 4 20:39 01.pem -rw-r--r--. 1 root root 3971 Dec 4 20:46 02.pem -rw-r--r--. 1 root root 1367 Dec 4 20:31 ca.crt -rw-------. 1 root root 916 Dec 4 20:31 ca.key -rw-r--r--. 1 root root 245 Dec 4 20:50 dh1024.pem -rw-r--r--. 1 root root 264 Dec 4 20:46 index.txt -rw-r--r--. 1 root root 21 Dec 4 20:46 index.txt.attr -rw-r--r--. 1 root root 21 Dec 4 20:39 index.txt.attr.old -rw-r--r--. 1 root root 131 Dec 4 20:39 index.txt.old -rw-r--r--. 1 root root 3971 Dec 4 20:46 keshushu.crt -rw-r--r--. 1 root root 790 Dec 4 20:46 keshushu.csr -rw-------. 1 root root 916 Dec 4 20:46 keshushu.key -rw-r--r--. 1 root root 3 Dec 4 20:46 serial -rw-r--r--. 1 root root 3 Dec 4 20:39 serial.old -rw-r--r--. 1 root root 4087 Dec 4 20:39 server.crt -rw-r--r--. 1 root root 790 Dec 4 20:39 server.csr -rw-------. 1 root root 916 Dec 4 20:39 server.key
详解服务器及客户端的证书各文件用途
filename | Needed By | Purpose | Secret |
---|---|---|---|
ca.crt | server+all clients | Root CA certificate | NO |
ca.key | key signing machine only | Root CA key | YES |
dh{n}.pem | server only | Diffie Hellman parameters | NO |
server.crt | server only | Server Certificate | NO |
server.key | server only | Server Key | YES |
chensiqi.crt | chensiqi only | chensiqi Certificate | NO |
chensiqi.key | chensiqi only | chensiqi Key | YES |
benet.crt | benet only | benet Certificate | NO |
benet.key | benet only | benet Key | YES |
3、详解服务器端VPNserver.conf重要参数
①创建OpenVPN配置文件目录,并拷贝keys及配置
[root@VPNserver ~]# mkdir -p /etc/openvpn
[root@VPNserver ~]# cd /usr/src/openvpn-2.2.2/easy-rsa/2.0/
[root@VPNserver 2.0]# /bin/cp -ap keys /etc/openvpn/
[root@VPNserver 2.0]# cd /usr/src/openvpn-2.2.2/sample-config-files/
[root@VPNserver sample-config-files]# cp client.conf server.conf /etc/openvpn/
②查看服务器默认配置文件
[root@VPNserver openvpn]# pwd
/etc/openvpn
[root@VPNserver openvpn]# grep -vE ";|#|^$" server.conf
企业生产环境server.conf配置案例
配置参数 | 参数说明 |
---|---|
local 124.43.12.115 | 哪一个本地地址要被OpenVPN进行监听(Which local IP address should OpenVPN) |
port 52115 | 监听的端口,默认是1194,这里为了安全起见,修改为52115 |
proto udp | 指定监听的协议,当并发访问多时,推荐tcp |
dev tun | vpn server 的模式采用路由模式。可选tap或tun |
ca ca.crt | ca证书,注意此文件和server.conf在一个目录下,否则要用绝对路径调用 |
cert server.crt | |
key server.key | This file should be kept secret |
dh dh1024.pem | |
Server 10.8.0.0 255.255.255.0 | 这个是VPN Server动态分配给VPN CLIENT的地址池,一般不需要更改。这个段不要和任何网络地址段冲突或者重复 |
ifconfig-pool-persist ipp.txt | |
push "route 10.0.0.0 255.255.255.0" | 这是VPN SERVER所在的内网网段,如果有多个可以写多个push,注意,此命令实际作用是在vpn客户端本地生成VPN SERVER所在的内网网段路由,确保能够和VPN Server所在的内网网段通信。路由条目类似:10.0.0.0 255.255.255.0 10.8.0.9 10.8.0.10 1 |
client-to-client | 允许拨号的多个vpn client互相通信 |
duplicate-cn | 允许多个客户端使用同一个账号连接 |
keepalive 10 120 | 每10秒ping一次,若是120秒未收到包,即认定客户端断线 |
comp-lzo | 开启压缩功能 |
persist-key | 当vpn超时后,当重新启动VPN后,保持上一次使用的私钥,而不重新读取私钥。 |
persist-tun | 通过keepalive检测vpn超时后,当重新启动VPN后,保持tun或者tap设备自动连接状态 |
status openvpn-status.log | openvpn日志状态信息 |
log /var/log/openvpn.log | 日志文件 |
verb 3 | 指定日志文件冗余 |
提示:
先执行export LANG="ZH_GB18030",然后编辑配置文件server.conf,清空所有内容,把上面内容考进来。然后,执行dos2unix server.conf本文档目录下,有参考配置文件server.conf
③修改服务端配置文件
[root@VPNserver openvpn]# vim server.conf
local 192.168.8.100
push "route 192.168.200.0 255.255.255.0"
client-to-client
duplicate-cn
log /var/log/openvpn.log
port 52115
proto tcp
dev tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3
4、启动服务端的VPN服务并检查
①启动vpn服务
[root@VPNserver openvpn]# /usr/local/sbin/openvpn --config /etc/openvpn/server.conf &
[1]11003
②查看vpn端口
[root@VPNserver openvpn]# netstat -antup | grep vpn tcp 0 0 192.168.8.100:52115 0.0.0.0:* LISTEN 11003/openvpn
③设置开机自启动
[root@VPNserver openvpn]# echo "/usr/local/sbin/openvpn --config /etc/openvpn/server.conf &" >> /etc/rc.local
[root@VPNserver openvpn]# tail -2 /etc/rc.local
tail: inotify cannot be used, reverting to polling
touch /var/lock/subsys/local
/usr/local/sbin/openvpn --config /etc/openvpn/server.conf &
④查看VPN启动日志
[root@VPNserver openvpn]# tail /var/log/openvpn.log
Tue Dec 4 21:16:27 2018 /sbin/route add -net 10.8.0.0 netmask 255.255.255.0 gw 10.8.0.2
Tue Dec 4 21:16:27 2018 Data Channel MTU parms [ L:1544 D:1450 EF:44 EB:135 ET:0 EL:0 AF:3/1 ]
Tue Dec 4 21:16:27 2018 Listening for incoming TCP connection on 192.168.8.100:52115
Tue Dec 4 21:16:27 2018 TCPv4_SERVER link local (bound): 192.168.8.100:52115
Tue Dec 4 21:16:27 2018 TCPv4_SERVER link remote: [undef]
Tue Dec 4 21:16:27 2018 MULTI: multi_init called, r=256 v=256
Tue Dec 4 21:16:27 2018 IFCONFIG POOL: base=10.8.0.4 size=62
Tue Dec 4 21:16:27 2018 IFCONFIG POOL LIST
Tue Dec 4 21:16:27 2018 MULTI: TCP INIT maxclients=1024 maxevents=1028
Tue Dec 4 21:16:27 2018 Initialization Sequence Completed
⑤查看路由
[root@VPNserver openvpn]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.8.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
10.8.0.0 10.8.0.2 255.255.255.0 UG 0 0 0 tun0
192.168.200.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.8.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth2