帮助中心
  • 云主机
  • 数据盘
  • 弹性IP
  • 快照
  • 云防火墙

VPN(虚拟专用网络)的功能是:在公用网络上建立专用网络,进行加密通讯,在企业网络中广泛应用。VPN网关通过对数据包的加密和数据包目标地址的转换实现远程访问。VPN有多种分类方式,主要是按协议进行分类。VPN可通过服务器、硬件、软件等多种方式实现。

针对Linux 环境下VPN Server的部署,常用的VPN服务有PPTP、OPENVPN等,这两种VPN服务比格云均支持,PPTP VPN Server搭建好需要在比格云云防火墙中勾选开放GRE协议支持才可以,由于PPTPD VPN服务搭建过程比较简单,这里不做深入介绍,以下介绍Linux环境下OPENVPN 服务的搭建,以比格云CentOS 7环境为例:

服务器端相关配置

1、安装OPENVPN Server

这里可以使用比格云官网YUM镜像源进行安装,您也可以从openvpn 官网下载源码包进行编译安装。

#yum install -y openvpn easy-rsa

blob.png        

(easy-rsa包做为openvpn 证书制作工具使用)

blob.png


2、初始化服务器端配置文件

这里需要制作相关的server配置文件,以及证书制作工具,使用yum源安装后,相应的sample配置文件存在/usr/share/doc/openvpn-2.3.11(当前的openvpn版本号为2.3.11)目录下,我们可以将其拷贝到/etc/openvpn主配置目录下进行相关编辑,如下:

#cp -dprf /usr/share/doc/openvpn-2.3.11/sample/sample-config-files/server.conf /etc/openvpn/

#cp -dprf /usr/share/easy-rsa/2.0/* /etc/openvpn

blob.png

easy-rsa目录下有相关的程序和脚本,以下为使用到的程序以及脚本说明:

vars            脚本, 用来创建环境变量,设置所需要要的变量的脚本

clean-all        脚本,创建生成 ca 证书及密钥文件所需要的文件及目录

build-ca         脚本, 生成 ca 证书(交互)

build-dh         脚本, 生成 Diffie-Hellman 文件(交互)

build-key-server   脚本, 生成服务器端密钥(交互)

build-key        脚本, 生成客户端密钥(交互)

pkitool       脚本, 直接使用 vars 的环境变量设置, 直接生成证书(非交互)

 

3、生成 CA相关证书、密钥以及服务器端配置文件

- 初始配置PKI 环境

#cd /etc/openvpn/

#vi vars(编辑vars文件)

原始文件内容中注意以下标志项:

export KEY_COUNTRY="US"

export KEY_PROVINCE="CA"

export KEY_CITY="SanFrancisco"

export KEY_ORG="Fort-Funston"

export KEY_EMAIL="me@myhost.mydomain"

export KEY_OU="MyOrganizationalUnit"

根据实际情况将以上红色字体修改为自定义的内容,方便标记与管理,不改的话也可以正常运行,建议修改,在后面生成服务端ca证书时,这里的配置会作为缺省配置,如修改:

export KEY_COUNTRY="CN"

export KEY_PROVINCE="SH"

export KEY_CITY="Shanghai"

export KEY_ORG="XXX"

export KEY_EMAIL="XXXX@XXX.cn"

export KEY_OU="XXXOrganizationalUnit"

接下来做SSL配置的文件软链接以及修改vars可执行权限

         #ln -s /etc/openvpn/openssl-1.0.0.cnf /etc/openvpn/openssl.cnf

         #chmod u+x vars

blob.png

修改好 vars 文件后就可以开始生成 ca 证书及密钥文件了。

- 生成CA证书

#source ./vars

NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/keys

默认的keys会生成在/etc/openvpn/keys目录下,如果执行clean-all将会清理所有的证书,谨慎操作

blob.png

接下来开始配置证书,当我们首次配置时且需要清理原有证书时,可执行:

#./clean-all (仅在第一次安装时可以运行,后面添加完客户端证书后慎重使用,将会清空所有的证书秘钥)

#./build-ca (生成服务器端CA证书)

这里根据提示一路回车即可,将会使用缺省的vars中配置项。

#ls keys/

这里可以看到已经生成了ca.crt ca.key文件。


- 产生服务器证书

#./build-key-server openvpn.biggeryun.com(以此名称为例)

相应提示也一路回车即可,操作可以生成服务器端密钥证书, 后面这个openvpn.XXXX.com就是服务器名,请记住此名称,后面需要用到。

#ls -l keys/openvpn.biggeryun.com.*

blob.png

这里可以看到生成了相应的服务器端证书文件。

- 生成DH验证文件

#./build-dh

此操作为生成diffie hellman参数,用于增强openvpn安全性。

#ls –l keys/dh2048.pem

可以看到生成了 2048 位的 Diffie-Hellman 文件。

- 生成客户端证书

生成客户端 CA 证书及密钥使用build-key 程序即可。

#./build-key test1

#./build-key test2

blob.png

- 生成ta.key文件

# openvpn --genkey --secret /etc/openvpn/keys/ta.key

- 编辑服务配置文件

按照之前拷贝到/etc/openvpn/server.conf 模板文件进行 配置修改,相关内容如下:

;local x.x.x.x (设置监听IP,默认监听所有IP)

port 11940 (设置监听端口,需要确保防火墙打开,默认1194,这里设置11940)

proto tcp  (支持TCP/UDP协议,这里以TCP为例)

;dev tap    (tap 为以太网桥接,二层网络才能通过的通讯)

dev tun   (创建tun的路由IP通道,推荐使用)

ca keys/ca.crt (ca文件是服务器端和客户端都必须要使用的,不需要ca.key)

# 服务端和客户端指定各自的.crt和.key

# 请注意路径,可以使用以配置文件开始为根的相对路径,

# 也可以使用绝对路径

# 请小心存放.key密钥文件

cert keys/openvpn.biggeryun.com.crt

key keys/openvpn.biggeryun.com.key  # This file should be kept secret

dh keys/dh2048.pem (默认2048)

# 配置VPN使用的网段,OpenVPN会自动提供基于该网段的DHCP服务,请确保此网段不要和Server端以及客户端冲突,保证唯一性。

server 10.199.200.0 255.255.255.0 

#维持一个客户端和virtual IP的对应表,以方便客户端重新连接可以获得同样的IP

ifconfig-pool-persist ipp.txt

# 为客户端创建对应的路由,以令其能够访问VPN Server端所在服务器内网

push "route 10.100.0.0 255.255.0.0" (比格云相关Server内网网段)

# 若客户端希望所有的流量都通过VPN传输,则可以使用该语句,其会自动改变客户端的网关为VPN服务器,推荐关闭,一旦设置,请小心服务端的DHCP设置问题

;push "redirect-gateway def1 bypass-dhcp"

# 用OpenVPN的DHCP功能为客户端提供指定的DNS、WINS等

;push "dhcp-option DNS 180.168.255.118"

;push "dhcp-option DNS 116.228.111.18"

# 默认客户端之间是不能直接通讯的,除非把下面的语句注释掉

client-to-client

; tls-auth ta.key 0 # This file is secret

(这句要注释掉)

keepalive 10 120

# 使用lzo压缩的通讯,服务端和客户端都必须配置

comp-lzo

persist-key

persist-tun

# 输出短日志,每分钟刷新一次,以显示当前的客户端

status /var/log/openvpn/openvpn-status.log

# 缺省日志会记录在系统日志中,但也可以导向到其他地方

# 建议调试的使用先不要设置,调试完成后再定义

log         /var/log/openvpn/openvpn.log

log-append  /var/log/openvpn/openvpn.log

# 设置日志的级别

# 0 is silent, except for fatal errors

# 4 is reasonable for general usage

# 5 and 6 can help to debug connection problems

# 9 is extremely verbose

         verb 3

这里贴下用到的范例配置,如下:

blob.png


4、启动服务

#systemctl enable openvpn@server.service

#systemctl start openvpn@server.service

blob.png

以上为CentOS7下systemd控制的openvpn 服务启动方法。

CentOS6 可以使用如下启动方法

# service openvpn start

或者

#/etc/init.d/openvpn start

开机启动方法:

#systemctl enable openvpn@server.service (CentOS7)

#chkconfig openvpn on(CentOS6)


5、开启路由转发以及内网iptables规则

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

#sysctl -p

 

接下来需要在比格云云主机上设置相应的iptables规则,如下:

#允许openvpn 端口对外访问,根据server.cnf中配置的端口

#iptables -A INPUT -p tcp --dport 11940 -j ACCEPT

#iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#通过配置nat将vpn网段IP转发到server内网(重要)

#iptables -t nat -A POSTROUTING -s 10.199.200.0/24 -o eth0 -j MASQUERADE


6、开启比格云云防火墙对应端口

登录比格云控制台,点击云防火墙,选中对应的云防火墙进行修改,添加对应的11940端口以及开放的源IP,确定即可,如下:

blob.png

 

7、Windows PC客户端配置

- 客户端安装

上OPENVPN官网(https://openvpn.net/) 下载Windows 客户端版本,按照默认设置进行安装。

- 客户端配置

将云服务器中 /etc/openvpn/ 目录下的 ca.crt,test1.crt,test1.key)三个文件下载到需要连接 openvpn 的 Windows 客户端上,存放在openvpn 安装目录下config文件夹下,如

C:\Program Files\OpenVPN\config下,同时将服务器上/usr/share/doc/openvpn-2.3.11/sample/sample-windows/下的sample.ovpn文件复制到config目录,改名为client.ovpn, 编辑其内容如下:

client

dev tun

proto tcp

remote xxx.xxx.xxx.xxx 11940 (Server对应的IP和端口号)

ca ca.crt

cert test1.crt

key test1.key

comp-lzo

user nobody (仅供非 windows 客户端配置,windows 请用“;”注释掉)

group nobody   (仅供非 windows 客户端配置,windows 请用“;”注释掉)

persist-key

persist-tun

- 客户端连接

   到C:\Program Files\OpenVPN\bin目录下,找到 openvpn-gui.exe 文件,右键选择以管理员权限运行(避免普通用户运行导致添加路由失败),并选择连接。

 

8、Linux客户端配置

# yum install openvpn

# openvpn --daemon --config client.ovpn

Yum安装即可.

 

9、MAC客户端配置

可下载Tunnelblick(https://tunnelblick.net/)进行安装,相关配置文件同上。

 

OPEN VPN客户端连接成功后,即可访问比格云内网云主机,以及内网相关服务。

 


上一篇 下一篇