如何在Debian 10上设置OpenVPN服务器

虚拟专用网络(VPN)是两个网络与个人用户之间的安全加密连接,可保护您的Internet连接和在线隐私。 OpenVPN是一种免费的开源VPN协议,该协议实现了在路由配置中创建安全的点对点的技术。 它是跨平台的,并且与所有主要操作系统兼容。

在本教程中,我们将向您展示如何在Debian 10服务器上安装和设置OpenVPN。

先决条件

  • Debian 10 VPS(我们将使用我们的SSD 2 VPS计划)
  • 访问root用户帐户(或访问具有root特权的管理员帐户)

步骤1:登录到服务器并更新服务器操作系统软件包

首先,以root用户身份通过​​SSH登录到您的Debian 10服务器:

ssh [email protected]_Address -p Port_number

您将需要用服务器各自的IP地址和SSH端口号替换“ IP_Address”和“ Port_number”。 此外,如有必要,将“ root”替换为管理员帐户的用户名。

开始之前,您必须确保服务器上安装的所有Debian OS软件包都是最新的。 您可以通过运行以下命令来执行此操作:

apt-get update -y
apt-get upgrade -y

步骤2:安装OpenVPN和EasyRSA

默认情况下,OpenVPN包含在Debian默认存储库中。 您可以使用以下命令进行安装:

apt-get install openvpn -y

一旦安装了OpenVPN软件包,您将需要将EasyRSA下载到您的系统。

EasyRSA是用于构建和管理PKI CA的命令行实用程序。 它允许您生成多种类型的证书,用于创建根证书颁发机构以及为OpenVPN请求和签署证书。

您可以使用以下命令从Git存储库下载最新版本的EasyRSA:

wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz

下载完成后,使用以下命令解压缩下载的文件:

tar -xvzf EasyRSA-3.0.8.tgz

接下来,将提取的目录复制到OpenVPN目录:

cp -r EasyRSA-3.0.8 /etc/openvpn/easy-rsa

此时,您的服务器中已安装OpenVPN和EasyRSA。

步骤3:建立证书颁发机构

接下来,您将需要为OpenVPN构建证书颁发机构(CA)。

首先,使用以下命令将目录更改为EasyRSA:

cd /etc/openvpn/easy-rsa

接下来,您将需要在其中创建一个vars文件。 vars文件是Easy-RSA将为配置提供源的简单文件。

您可以使用以下命令创建它:

nano vars

根据需要添加以下行:

set_var EASYRSA                 "$PWD"
set_var EASYRSA_PKI             "$EASYRSA/pki"
set_var EASYRSA_DN              "cn_only"
set_var EASYRSA_REQ_COUNTRY     "USA"
set_var EASYRSA_REQ_PROVINCE    "Newyork"
set_var EASYRSA_REQ_CITY        "Newyork"
set_var EASYRSA_REQ_ORG         "ROSE CERTIFICATE AUTHORITY"
set_var EASYRSA_REQ_EMAIL    "[email protected]"
set_var EASYRSA_REQ_OU          "ROSE EASY CA"
set_var EASYRSA_KEY_SIZE        2048
set_var EASYRSA_ALGO            rsa
set_var EASYRSA_CA_EXPIRE    7500
set_var EASYRSA_CERT_EXPIRE     365
set_var EASYRSA_NS_SUPPORT    "no"
set_var EASYRSA_NS_COMMENT    "ROSE CERTIFICATE AUTHORITY"
set_var EASYRSA_EXT_DIR         "$EASYRSA/x509-types"
set_var EASYRSA_SSL_CONF        "$EASYRSA/openssl-easyrsa.cnf"
set_var EASYRSA_DIGEST          "sha256"

完成后保存并关闭文件。

接下来,使用以下命令启动公钥基础结构:

./easyrsa init-pki

您应该获得以下输出:

Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars

init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /etc/openvpn/easy-rsa/pki

接下来,您将需要运行build-ca命令来创建ca.crt和ca.key文件。 您可以使用以下命令运行它:

./easyrsa build-ca nopass

您将被问到以下几个问题:

Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars
Using SSL: openssl OpenSSL 1.1.1f  31 Mar 2020

Enter New CA Key Passphrase: 
Re-Enter New CA Key Passphrase: 
Generating RSA private key, 2048 bit long modulus (2 primes)
...+++++
......................................................................+++++
e is 65537 (0x010001)
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.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:vpnserver

CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/etc/openvpn/easy-rsa/pki/ca.crt

步骤4:生成服务器证书和密钥文件

接下来,您将需要使用gen-req命令,后跟通用名称来生成服务器密钥。

./easyrsa gen-req vpnserver nopass

您应该看到以下输出:

Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars
Using SSL: openssl OpenSSL 1.1.1f  31 Mar 2020
Generating a RSA private key
.......................................................+++++
....+++++
writing new private key to '/etc/openvpn/easy-rsa/pki/easy-rsa-1428.Angtmh/tmp.C9prw4'
-----
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.
-----
Common Name (eg: your user, host, or server name) [vpnserver]:

Keypair and certificate request completed. Your files are:
req: /etc/openvpn/easy-rsa/pki/reqs/vpnserver.req
key: /etc/openvpn/easy-rsa/pki/private/vpnserver.key

接下来,您将需要使用CA证书对vpnserver密钥进行签名。 您可以使用以下命令进行操作:

./easyrsa sign-req server vpnserver

您应该获得以下输出:

Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'vpnserver'
Certificate is to be certified until Feb  6 14:38:52 2022 GMT (365 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /etc/openvpn/easy-rsa/pki/issued/vpnserver.crt

接下来,您将需要生成一个强大的Diffie-Hellman密钥以用于密钥交换。 您可以使用以下命令生成它:

./easyrsa gen-dh

步骤5:复制所有证书和密钥文件

接下来,您需要将所有证书和密钥文件复制到/ etc / openvpn / server /目录。 您可以使用以下命令复制:

cp pki/ca.crt /etc/openvpn/server/
cp pki/dh.pem /etc/openvpn/server/
cp pki/private/vpnserver.key /etc/openvpn/server/
cp pki/issued/vpnserver.crt /etc/openvpn/server/

步骤6:创建客户端证书和密钥文件

接下来,您将需要为客户端系统生成证书和密钥文件。

您可以使用以下命令创建它:

./easyrsa gen-req vpnclient nopass

您应该获得以下输出:

Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars
Using SSL: openssl OpenSSL 1.1.1f  31 Mar 2020
Generating a RSA private key
....+++++
.................................+++++
writing new private key to '/etc/openvpn/easy-rsa/pki/easy-rsa-1563.TeOf5v/tmp.i4YxLz'
-----
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.
-----
Common Name (eg: your user, host, or server name) [vpnclient]:

Keypair and certificate request completed. Your files are:
req: /etc/openvpn/easy-rsa/pki/reqs/vpnclient.req
key: /etc/openvpn/easy-rsa/pki/private/vpnclient.key

接下来,使用以下命令对客户端密钥进行签名:

./easyrsa sign-req client vpnclient

您应该获得以下输出:

Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'vpnclient'
Certificate is to be certified until Feb  6 14:43:18 2022 GMT (365 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /etc/openvpn/easy-rsa/pki/issued/vpnclient.crt

接下来,将所有客户端证书和密钥复制到/ etc / openvpn / client /目录。

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

步骤7:配置OpenVPN服务器

至此,服务器证书和客户端证书以及密钥均已准备就绪。 现在,您将需要创建一个OpenVPN配置文件并定义所有证书和密钥。

nano /etc/openvpn/server.conf

添加以下行:

port 1194
proto udp
dev tun
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/vpnserver.crt
key /etc/openvpn/server/vpnserver.key
dh /etc/openvpn/server/dh.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1"

push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
duplicate-cn
cipher AES-256-CBC
tls-version-min 1.2
tls-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-SHA256
auth SHA512
auth-nocache
keepalive 20 60
persist-key
persist-tun
compress lz4
daemon
user nobody
group nogroup
log-append /var/log/openvpn.log
verb 3

保存并关闭文件,然后启动OpenVPN服务并启用它以在系统重新引导时启动:

systemctl start [email protected]
systemctl enable [email protected]

如果一切正常,将创建一个新接口。 您可以使用以下命令检查它:

ip a show tun0

您应该获得以下输出:

4: tun0:  mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
    link/none 
    inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::153d:f29:39a2:571a/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever

步骤8:启用IP转发

IP转发允许您的操作系统接受传入的网络数据包并将其转发到其他网络。 您可以使用以下命令启用它:

nano /etc/sysctl.conf

取消注释或添加以下行:

net.ipv4.ip_forward = 1

保存文件,然后使用以下命令应用配置更改:

sysctl -p

步骤9:安装和配置OpenVPN Client

接下来,您将需要在另一个系统上安装OpenVPN客户端并连接到OpenVPN服务器。

首先,使用以下命令安装OpenVPN:

apt-get install openvpn -y

安装后,将所有客户端证书和密钥从OpenVPN服务器复制到客户端计算机。 您可以使用以下命令进行操作:

scp -r [email protected]:/etc/openvpn/client .

接下来,将目录更改为client并创建一个Client配置文件:

cd client
nano client.ovpn

添加以下行:

client
dev tun
proto udp
remote vpn-server-ip 1194
ca ca.crt
cert vpnclient.crt
key vpnclient.key
cipher AES-256-CBC
auth SHA512
auth-nocache
tls-version-min 1.2
tls-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-SHA256
resolv-retry infinite
compress lz4
nobind
persist-key
persist-tun
mute-replay-warnings
verb 3

保存并关闭文件,然后使用以下命令连接到您的OpenVPN服务器:

openvpn --config client.ovpn

建立连接后,您将获得以下输出:

Sat Feb  6 14:53:50 2021 SENT CONTROL [vpnserver]: 'PUSH_REQUEST' (status=1)
Sat Feb  6 14:53:50 2021 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1,dhcp-option DNS 208.67.222.222,dhcp-option DNS 208.67.220.220,route 10.8.0.1,topology net30,ping 20,ping-restart 60,ifconfig 10.8.0.6 10.8.0.5,peer-id 0,cipher AES-256-GCM'
Sat Feb  6 14:53:50 2021 OPTIONS IMPORT: timers and/or timeouts modified
Sat Feb  6 14:53:50 2021 OPTIONS IMPORT: --ifconfig/up options modified
Sat Feb  6 14:53:50 2021 OPTIONS IMPORT: route options modified

您可以使用以下命令在客户端计算机上验证OpenVPN接口:

ip a show tun0

您应该获得以下输出:

4: tun0:  mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none 
    inet 10.8.0.6 peer 10.8.0.5/32 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::9206:94d7:8fb2:6b21/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever

当然,如果您使用我们的托管OpenVPN托管服务之一,则不必安装OpenVPN,在这种情况下,您可以简单地要求我们的Linux专业管理员为您安装此服务。 它们全天候提供24×7的服务,并会立即处理您的要求。

聚苯乙烯。 如果您喜欢这篇有关如何在Ubuntu上安装OpenVPN的文章,请使用左侧的按钮与社交网络上的朋友分享该文章,或在下面留下一个答复。 谢谢。

Sidebar