良许Linux教程网 干货合集 Linux系统安装和配置OpenVPN

Linux系统安装和配置OpenVPN

OpenVPN 是一个基于 OpenSSL 库的应用层 VPN 实现。和传统 VPN 相比,它的优点是简单易用。OpenVPN 提供给企业之间或者个人与公司之间安全数据传输的隧道,OpenVPN无疑是Linux下开源VPN的先锋,提供了良好的性能和友好的用户GUI。

image-20211028204929724

安装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="YUNXI@it.cn"
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 日志文件。

以上就是良许教程网为各位朋友分享的Linux系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

img
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部