OpenVPN 安装与配置

OpenVPN是一个开源应用程序,可让您通过公共Internet创建安全的专用网络。 OpenVPN实现了虚拟专用网络(VPN)以创建安全连接。 OpenVPN使用OpenSSL库提供加密,并提供几种身份验证机制,例如基于证书的预共享密钥以及用户名/密码身份验证。

在本教程中,我们将使用最新版本的centos服务器(7.5),并将使用带有easy-rsa 3的OpenVPN 2.4。在安装OpenVPN和easy-rsa软件包之前,请确保“ epel”存储库 已安装在系统上。 如果没有,请使用下面的yum命令安装epel信息库。

yum install epel-release -y

步骤1:安装openvpn 和easy-rsa

yum install openvpn easy-rsa -y

安装完成后,检查openvpn和easy-rsa版本

openvpn --version

ss8.png

ls -lah /usr/share/easy-rsa/

ss8.png

已安装带有easy-rsa 3的OpenVPN 2.4。

步骤2:配置RSA

在此步骤中,我们将通过创建新的“ vars”文件来配置easy-rsa 3。 “ vars”文件包含Easy-RSA 3设置。

转到“ /etc/openvpn/”目录并复制“ easy-rsa”脚本。

cd /etc/openvpncp -r /usr/share/easy-rsa /etc/openvpn/

然后,跳转到/etc/openvpn/easy-rsa/3/目录并且创建vars文件,复制粘贴以下内容,并保存

set_var EASYRSA                "$PWD"set_var EASYRSA_PKI            "$EASYRSA/pki"set_var EASYRSA_DN              "cn_only"set_var EASYRSA_REQ_COUNTRY    "ID"set_var EASYRSA_REQ_PROVINCE    "Jakarta"set_var EASYRSA_REQ_CITY        "Jakarta"set_var EASYRSA_REQ_ORG        "hakase-labs CERTIFICATE AUTHORITY"set_var EASYRSA_REQ_EMAIL      "openvpn@hakase-labs.io"set_var EASYRSA_REQ_OU          "HAKASE-LABS EASY CA"set_var EASYRSA_KEY_SIZE        2048set_var EASYRSA_ALGO            rsaset_var EASYRSA_CA_EXPIRE      7500set_var EASYRSA_CERT_EXPIRE    365set_var EASYRSA_NS_SUPPORT      "no"set_var EASYRSA_NS_COMMENT      "HAKASE-LABS CERTIFICATE AUTHORITY"set_var EASYRSA_EXT_DIR        "$EASYRSA/x509-types"set_var EASYRSA_SSL_CONF        "$EASYRSA/openssl-1.0.cnf"set_var EASYRSA_DIGEST          "sha256"

根据需要更改变量的值。

增加“ EASYRSA_KEY_SIZE”以提高安全性。

更改“ EASYRSA_CA_EXPIRE”和“ EASYRSA_CERT_EXPIRE”。

现在,通过更改文件的权限使“ vars”文件可执行。

sudo chmod +x vars

Easy-RSA 3设置的vars文件已创建。

第3步:构建OpenVPN密钥

在此步骤中,我们将基于我们创建的easy-rsa 3'vars'文件构建OpenVPN密钥。 我们将构建CA密钥,服务器和客户端密钥,DH和CRL PEM文件。

我们将使用“ easyrsa”命令行构建所有这些键。 转到“/etc/openvpn/easy-rsa/ 3”目录。

cd /etc/openvpn/easy-rsa/3/

初始化和建立CA

在构建任何密钥之前,我们需要初始化PKI目录并构建CA密钥。

启动PKI目录,并建立使用下面的命令CA密钥。

sudo./easyrsainit-pkisudo./easyrsa build-ca

现在输入CA密钥的密码,您将在'pki'目录下获得ca.crtca.key文件。

构建服务器密钥

现在我们要构建服务器密钥,然后将构建名为“ hakase-server”的服务器密钥。

使用以下命令构建服务器密钥“ hakase-server”。

./easyrsa gen-req hakase-server nopass

nopass =选项,用于禁用“ hakase-server”密钥的密码。

并使用我们的CA证书签署“ hakase-server”密钥。

sudo ./easyrsa sign-req server hakase-server

系统将要求您输入“ CA”密码,输入密码,然后按Enter。 您将在“ pki / issued /”目录下获得“ hakase-server.crt”证书文件

创建的服务器证书位于

/etc/openvpn/easy-rsa/3.0.6/pki/issued/hakase-server.crt

使用OpenSSL命令验证证书文件,并确保没有错误。出现下面的信息就代表你前面所做的操作是没问题的

$ sudo openssl verify-CAfilepki/ca.crt pki/issued/hakase-server.crt$pki/issued/hakase-server.crt:OK

已创建所有服务器证书密钥。

服务器私钥位于“ pki / private / hakase-server.key”。

服务器证书位于“ pki / issued / hakase-server.crt”。

创建客户端密钥

现在我们需要为客户端构建密钥。 我们将生成名为“ client01”的新客户端密钥。

使用以下命令生成“ client01”密钥

sudo ./easyrsa gen-req client01 nopass

ss8.png

现在,使用我们的CA证书签署“ client01”密钥,如下所示。

sudo ./easyrsa sign-req client client01

键入“yes”以确认客户端证书请求,然后键入CA密码。

已生成名为“ client01”的客户端证书,请使用openssl命令验证客户端证书。

sudo openssl verify-CAfile pki/ca.crt pki/issued/client01.crt

**生成Diffie-Hellman密钥

此操作将花费大量时间,具体取决于我们选择的密钥长度和服务器上的可用熵。 我们将使用在“ vars”文件中定义的长度键。

使用以下命令生成Diffie-Hellman密钥

ss8.png

可选:生成CRL密钥,本文跳过这一步骤

CRL(证书吊销列表)密钥将用于吊销客户端密钥。 如果您的VPN服务器上有多个客户端证书,并且想撤消某些密钥,则只需使用easy-rsa命令撤消。

如果要撤消某些密钥,请运行以下命令

./easyrsa revoke xxxx

然后生成CRL密钥。

./easyrsa gen-crl

复制证书文件

已生成所有证书,现在复制证书文件和PEM文件。

复制服务器密钥和证书。

cp pki/ca.crt/etc/openvpn/server/cp pki/issued/hakase-server.crt/etc/openvpn/server/cp pki/private/hakase-server.key/etc/openvpn/server/

复制client01密钥和证书。

cp pki/ca.crt/etc/openvpn/client/cp pki/issued/client01.crt/etc/openvpn/client/cp pki/private/client01.key/etc/openvpn/client/

复制DH和CRL密钥。

cp pki/dh.pem /etc/openvpn/server/

第4步-配置OpenVPN

在这一步中,我们将为openvpn服务器创建新的配置'server.conf'。转到"/etc/openvpn/"目录,并使用vim创建新的配置文件"server.conf"

将以下OpenVPN服务器配置粘贴到此处。

cd /etc/openvpn/vim server.conf

将以下OpenVPN服务器配置粘贴到此处。

# OpenVPN Port, Protocol and the Tunport 1194proto udpdev tun# OpenVPN Server Certificate - CA, server key and certificateca /etc/openvpn/server/ca.crtcert /etc/openvpn/server/hakase-server.crtkey /etc/openvpn/server/hakase-server.key#DH and CRL keydh /etc/openvpn/server/dh.pem#注意本文没有跳过了丢消证书的检测#crl-verify /etc/openvpn/server/crl.pem# Network Configuration - Internal network# Redirect all Connection through OpenVPN Serverserver 10.10.1.0 255.255.255.0push "redirect-gateway def1"# Using the DNS from https://dns.watchpush "dhcp-option DNS 84.200.69.80"push "dhcp-option DNS 84.200.70.40"#Enable multiple client to connect with same Certificate keyduplicate-cn# TLS Securitycipher AES-256-CBCtls-version-min 1.2tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256auth SHA512auth-nocache# Other Configurationkeepalive 20 60persist-keypersist-tuncomp-lzo yesdaemonuser nobodygroup nobody# OpenVPN Loglog-append /var/log/openvpn.logverb 3

OpenVPN的配置已创建。

步骤5-启用端口转发并配置路由Firewalld

在此步骤中,我们将启用端口转发内核模块并为OpenVPN配置路由“防火墙”。

ss8.png

通过运行以下命令来启用端口转发内核模块。

echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.confsysctl -p

接下来,使用Firewalld for OpenVPN配置路由。

将 "openvpn"服务添加到防火墙列表服务,并将“tun0”接口添加到防火墙信任区域。

sudo firewall-cmd--permanent--add-service=openvpnsudo firewall-cmd--permanent--zone=trusted--add-interface=tun0

在防火墙的“受信任”区域上启用“ MASQUERADE”。

sudo firewall-cmd--permanent--zone=trusted--add-masquerade

如果你的网关是使用iptable,并且iptable默认情况下阻止该服务,那么请使用以下配置使openvpn正常运行。 首先,让我们在openvpn端口上进行tcp连接。 如果您使用的是udp或其他端口号,请相应地更改此行。

iptables-AINPUT-i enp3s0-m state--stateNEW-p udp--dport1194-jACCEPT

允许TUN接口连接到OpenVPN服务器

iptables -A INPUT -i tun+ -j ACCEPT

允许通过其他接口转发TUN接口连接

iptables -A FORWARD -i tun+ -j ACCEPTiptables -A FORWARD -i tun+ -o enp3s0 -m state --state RELATED,ESTABLISHED -j ACCEPTiptables -A FORWARD -i enp3s0 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT

NAT VPN客户端流量到Internet。 运行“ ifconfig”命令时,根据您的tun0结果信息更改IP地址掩码。

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

如果您的默认iptables OUTPUT的值不是ACCEPT的话,则还需要以下行:

iptables -A OUTPUT -o tun+ -j ACCEPT

最后记得保存iptables的防火墙配置

sudo iptables-save>/etc/sysconfig/iptables

端口转发和防火墙路由已完成,现在启动openvpn服务,并使它能够在每次系统引导时自动启动。

systemctl start openvpn@serversystemctl enable openvpn@server

我们通过netstat -plntu | grep 1194查看服务器的监听接口

第6步-OpenVPN客户端设置

转到“/etc/openvpn/client”目录,并使用vim创建一个新的openvpn客户端配置文件“ client01.ovpn".

cd /etc/openvpn/clientvim client01.ovpn

复制粘贴以下内容到ovpn

clientdev tunproto udp#真实的ip地址自己填写remote x.x.x.x 1194ca ca.crtcert client01.crtkey client01.keycipher AES-256-CBCauth SHA512auth-nocachetls-version-min 1.2tls-cipherTLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256resolv-retry infinitecompress lzonobindpersist-keypersist-tunmute-replay-warningsverb 3

保存后退出

现在将“/etc/openvpn/client”目录压缩为“ zip”或“ tar.gz”文件,并使用scp从本地计算机下载压缩文件。

将“ /etc/openvpn/client”目录压缩到“ client01.tar.gz”文件。

cd /etc/openvpn/tar -czvf client01.tar.gz client/*

然后将该客户端所需的证书和配置文件拷贝到需要链接入vpn的客户端

步骤7-测试OpenVPN

安装OpenVPN软件包,如果需要GUI配置,请安装OpenVPN network-manager

ss8.png

如果要使用终端外壳进行连接,请运行以下OpenVPN命令。

openvpn --config client01.ovpn

作者:铁甲万能狗

链接:https://www.jianshu.com/p/17a56994b74f

来源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容