56

CentOS7 install and configuration OpenVPN

 5 years ago
source link: https://www.linuxprobe.com/centos7-openvpn-server.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

OpenVPN是一个开源应用程序,可以通过公共Internet创建一个专用网络。在我们开始之前,我们首先需要安装Enterprise Linux(EPEL)存储库的额外包。下面就是关于如何在CentOS 7上设置Client和OpenVPN服务器的教程。

安装EPEL套件库,顺道更新
# yum -y install epel-release && yum -y update
安装 OpenVPN

首先我们需要安装OpenVPN。我们还将安装Easy RSA来生成我们的SSL密钥对,这将保护我们的VPN连接。

# yum install -y openvpn easy-rsa
生成密钥及证书的前置条件

3.1.创建密钥与证书储存目录,并且准备好要产生密钥与证书的相关文件:

# mkdir -p /etc/openvpn/easy-rsa/keys
# cp -rf /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa
# cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf

3.2.修改凭证的默认资料,之后产生凭证时就会自动填写,不必再手动输入。

# vim /etc/openvpn/easy-rsa/vars
所有凭证资料的预设值分别是:国家、省份、城市、组织、电子邮件位址、单位。

...
 export KEY_COUNTRY="CN"
 export KEY_PROVINCE="GD"
 export KEY_CITY="ZHUHAI"
 export KEY_ORG="YUNXI"
 export KEY_EMAIL="[email protected]"
 export KEY_OU="IT YUNXI."
 ...

上述参数的值可以自定义设置,对配置无影响。

Server 端密钥与证书生成
4.1.清除并删除 keys 目录下的所有 key
# cd /etc/openvpn/easy-rsa
以下步骤列出需要清理的目录:

# source ./vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys
# ./clean-all
4.2.生成CA的密钥及凭证,设定值不需修改的话,可以直接按Enter使用vars档案里的预设值。

# ./build-ca
4.3.生成 OpenVPN Server 端的密钥及凭证,同样可以使用vars档案的预设值。

注意:一直回车,直至最后有两次交互,输入 y 确认。

# ./build-key-server renwoleserver
4.4.生成 Diffie Hellman 参数,这个步骤比较久,可能要跑大约 6 分钟左右。

# ./build-dh
4.5.将Server的密钥及凭证放到主目录里:

# cd /etc/openvpn/easy-rsa/keys
# cp dh2048.pem ca.crt renwoleserver.crt renwoleserver.key /etc/openvpn
生成 Client 端的密钥及凭证,文件名可以自定义,有两种方式,分别是:(一直回车即可)
5.1.生成不用输入密码的凭证:

# /etc/openvpn/easy-rsa/build-key renwoleusers
5.2.生成需要输入密码的凭证:

# /etc/openvpn/easy-rsa/build-key-pass renwoleusers
生成TLS-auth密钥(可选)

OpenVPN提供了TLS-auth功能,可以用来抵御Dos、UDP端口淹没攻击。出于安全考虑,你可以启用该功能;启用该功能,你需要执行以下命令:

# cd /etc/openvpn
# openvpn --genkey --secret ta.key
6.目前我们总共产生了这些金钥及凭证:

# ll keys/

total 84

01.pem
02.pem
renwoleserver.crt
renwoleserver.csr
renwoleserver.key
renwoleusers.crt
renwoleusers.csr
renwoleusers.key
ca.crt
ca.key
dh2048.pem
index.txt
index.txt.attr
index.txt.attr.old
index.txt.old
serial
serial.old
配置 OpenVPN server.conf
OpenVPN安装目录默认存在 server.conf 配置文件,我们拷贝一份并修改使用:

# cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn
我们进入 /etc/openvpn/ 目录编辑 server.conf  文件。

配置完成后的内容如下:

# egrep -v "^$|^#|^;" server.conf

local 10.10.204.62
port 1194
proto udp
dev tun
ca ca.crt
cert renwoleserver.crt
key renwoleserver.key # This file should be kept secret
dh dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 223.5.5.5"
client-to-client
keepalive 10 120
tls-auth ta.key 0 # This file is secret
cipher AES-256-CBC
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
explicit-exit-notify 1
启动IP转发功能
# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
# sysctl -p
配置firewall转发规则

确保服务器可以转发数据包到服务器内外网,开启必要的通讯服务,并启用IP伪装(Masquerade)功能。

# firewall-cmd --permanent --add-service openvpn
# firewall-cmd --permanent --add-masquerade
# DEV=$(ip route get 223.5.5.5 | awk 'NR==1 {print $(NF-2)}' )
# firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o $DEV -j MASQUERADE
# firewall-cmd --reload
# firewall-cmd --list-all

public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client openvpn ssh
ports:
protocols:
masquerade: yes
forward-ports:
sourceports:
icmp-blocks:
rich rules:
启动 OpenVPN

重启网络与OpenVPN服务,并且让OpenVPN开机后自动启动:

# systemctl restart network
# systemctl restart openvpn@server
# systemctl enable openvpn@server
执行以下命令我们会看到一个新增的OpenVPN 专用网络:tun0
# ip a
...
tun0:  mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100
link/none
inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
valid_lft forever preferred_lft forever
Windows PC 客户端的配置
12.1.下载 openvpn 客户端并安装:Windows系统下安装,按照默认安装完成即可。

12.2.将Server端生成的Client密钥与证书下载到本地并放在 C:\Program Files\OpenVPN\config 目录下。

需要下载的文件列表:

/etc/openvpn/easy-rsa/keys/renwoleusers.crt
/etc/openvpn/easy-rsa/keys/renwoleusers.key
/etc/openvpn/easy-rsa/keys/ca.crt
/etc/openvpn/ta.key
12.3.将 C:\Program Files\OpenVPN\sample-config 下 client.ovpn 文件拷贝到 C:\Program Files\OpenVPN\config 目录。

client.ovpn 文件配置完成后的内容如下:

client
dev tun
;proto tcp
proto udp
remote 10.10.204.62 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert renwoleusers.crt
key renwoleusers.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-CBC
verb 3

此时点击桌面上的 “OpenVPN GUI” 图标,如果不出意外即可连接成功,若连接报错,请查看分析 C:\Users\yunxi\OpenVPN\log\client.log 日志文件。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK