如何在Windows服务器上使用OpenVPN创建VPN

需要一种安全、加密的方式访问互联网吗?为什么不尝试在Windows服务器上使用OpenVPN呢?搭建第一个VPN可能会有点麻烦,但你来对地方了!

在这个教程中,你将学到如何设置一个免费的VPN,并将恶意实体拒之Windows服务器之外。

准备好保护你的网络了吗?那就开始吧!

先决条件

本教程将进行实际演示。如果你想跟着操作,请确保你具备以下条件:

  • A Windows Server – This tutorial uses Window Server 2019 R2.
  • A client machine to test the VPN server – This demo uses Windows 10 64 bit.
  • 使用远程桌面(RDP)或你喜欢的桌面管理客户端连接到Windows服务器的桌面 – 本演示使用默认的RDP窗口客户端。

在Windows服务器上安装OpenVPN

OpenVPN适用于不同的操作系统,但它不随操作系统安装而附带。通过在服务器上安装OpenVPN开始本教程。

1. 打开您喜欢的浏览器,导航到OpenVPN 下载页面。下载Windows 64位MSI安装程序包到您的服务器并运行安装程序。

Downloading the Windows 64-bit MSI installer package

2. 接下来,在安装向导的初始页面上点击自定义,如下所示。 自定义选项允许您为VPN服务器安装额外的项目。

Customizing the OpenVPN installer

3. 在自定义安装页面上,点击OpenVPN服务下拉菜单 —> 将安装在本地硬盘上以将OpenVPN服务安装到您的系统。此选项还会在系统启动时启用OpenVPN服务。

Enabling the OpenVPN Service

4. 现在,向下滚动,并点击OpenSSL实用程序下拉菜单 —> 将安装在本地硬盘上选项。此选项使OpenSSL库和开发标头可用于OpenVPN服务,并为OpenVPN服务的某些加密功能所需。

点击立即安装以在您的服务器上安装OpenVPN。

Enabling the OpenSSL Utilities and installing OpenVPN

5. 最后,在安装完成时点击关闭

Closing the Customization Installation Wizard

为服务器和客户端生成证书和密钥

您现在已经在服务器上安装了OpenVPN,但是您将如何保护服务器与客户端之间的连接呢?您将为服务器和客户端生成证书和密钥。

证书和密钥用于在您的服务器和客户端之间提供加密连接。生成证书时,您会获得一个独特的公钥和私钥

1. 以管理员身份打开您的命令提示符。某些 OpenVPN 命令需要提升的特权才能运行。

Opening your Command Prompt as an administrator

2. 接下来,运行以下命令启动easy-rsa shell。easy-rsa shell 用于管理证书、密钥和配置。

EasyRSA 将是您在本教程中的主要命令行界面。

cd C:\Program Files\OpenVPN\easy-rsa
EasyRSA-Start.bat
Accessing the EasyRSA shell

3. 运行下面的./easyrsa clean-all命令以清除任何现有的密钥和配置。此命令确保您从干净的配置开始。

./easyrsa clean-all 
Clearing Existing Keys and Configurations

4. 现在,运行./easyrsa init-pki命令来初始化公钥基础设施(PKI)并为您的证书和密钥创建一个新的目录结构。

公钥基础设施(PKI)是一个框架,允许您为服务器和客户端创建和管理公钥和私钥。

./easyrsa init-pki 

键入是的并按Enter确认您想销毁任何现有密钥并创建新的PKI,如下所示。

Initializing the Public Key Infrastructure (PKI)

5. 运行以下命令以创建证书颁发机构(CA)(build-ca)。 CA负责向服务器和客户端颁发证书,签署这些证书,撤销证书等。

使用nopass选项,这样您就不必每次将证书和密钥复制到客户端时都输入密码。./easyrsa build-ca nopass

./easyrsa build-ca nopass

在配置VPN时,您需要为服务器和客户端生成由证书颁发机构(CA)签名的证书。

Creating the Certificate Authority (CA)

6. 运行以下命令以构建服务器证书和密钥(build-server-full)。 此命令创建OpenVPN服务器证书和密钥,并使用您的CA进行签名,并将文件放置在keys子目录中。

./easyrsa build-server-full server nopass
Building the Server Certificate and Key

7. 接下来,运行以下命令生成Diffie-Hellman参数gen-dh),然后关闭您的easyrsa shell。

Diffie-Hellman是一种允许两个用户在不安全连接上交换加密密钥的协议。 即使您的加密密钥被窃取,Diffie-Hellman也将需要确保您的VPN保持安全。

./easyrsa gen-dh
Generating the Diffie-Hellman Parameters

到目前为止,您在下表中列出的所有必需的SSL/TLS密钥文件都已准备就绪,可用于您的OpenVPN服务。

Folder Path Content
C:\Program Files\OpenVPN\easy-rsa\pki CA file, DH file, and other OpenSSL-related files like a config file.
C:\Program Files\OpenVPN\easy-rsa\pki\private Include the private key files of CA, Server, and Client certificates.
C:\Program Files\OpenVPN\easy-rsa\pki\issued Contains issued server and client certificates.

最后,打开您的文件浏览器,并将以下列出的文件复制到C:\Program Files\OpenVPN\config-autoC:\Program Files\OpenVPN\easy-rsa\pki\private文件夹中。

C:\Program Files\OpenVPN\easy-rsa\pki\ca.cert
C:\Program Files\OpenVPN\easy-rsa\pki\dh.pem
C:\Program Files\OpenVPN\easy-rsa\pki\issued\server.cert
C:\Program Files\OpenVPN\easy-rsa\pki\private\server.key

配置您的Windows防火墙规则

现在您已经配置了OpenVPN服务器,下一步是确保您可以访问该服务。您需要配置Windows防火墙以允许OpenVPN流量。

1. 运行下面的netsh命令来允许流量通过您的Windows防火墙,如下所示:

  • 通过在Windows防火墙中添加一个名为OpenVPN的规则(add rule name="OpenVPN")来配置(advfirewall)Windows防火墙(firewall)。
  • 允许(action=allow)所有本地IP地址(localip=any)和外部设备(remoteip=any)通过此规则进行通信。
  • 告诉服务器要打开哪个端口(localport=1194 remoteport=0-65535)以及要使用什么类型的协议(protocol=UDP)。
netsh advfirewall firewall add rule name="OpenVPN" dir=in localport=1194 remoteport=0-65535 protocol=UDP action=allow remoteip=any localip=any
Configuring your Windows Firewall Rules

2. 使用您喜欢的文本编辑器打开您的C:\Program Files\OpenVPN\config-auto\server.ovpn文件以预览其内容,如下所示。

一个.ovpn文件是一个OpenVPN配置文件。它包含了OpenVPN连接到VPN所需的所有信息,如加密和身份验证密钥。在本教程中,您将需要一个.ovpn文件来配置与您的VPN服务器的连接。

Edit your C:\Program Files\OpenVPN\config-auto\server.ovpn file.

最后,请运行以下命令以重新启动您的OpenVPN服务以应用更改。

net stop openvpnservice
net start openvpnservice
Restarting your OpenVPN service

配置您的客户端

除了配置服务器以允许OpenVPN流量之外,您还需要配置客户端。在OpenVPN中,客户端是连接到VPN的任何计算机。此演示使用Windows 10连接到服务器。

1. 在您的客户端上安装OpenVPN,就像在“在服务器上安装OpenVPN”****部分中所做的那样。

2. 从服务器复制以下列出的文件到客户端的C:\Program Files\OpenVPN\config文件夹。

C:\Program Files\OpenVPN\easy-rsa\pki\ca.cert
C:\Program Files\OpenVPN\easy-rsa\pki\issued\client.crt
C:\Program Files\OpenVPN\easy-rsa\pki\issued\client.key

3. 最后,打开C:\Program Files\OpenVPN\config\client.ovpn文件并使用下面的内容填充文件。将YOUR_OPENVPN_IP替换为您的实际Windows Server IP地址。

# 客户端是您的帐户名称,但您可以选择您喜欢的名称
client
# dev tun是您需要的VPN连接类型,使用以太网连接。
dev tun
# 此VPN连接使用的协议(UDP)
proto udp
# 设置您的OpenVPN服务器的IP地址。
# 1194是您的OpenVPN服务器的端口。
remote YOUR_OPENVPN_IP 1194
# 在找不到域名时解析域名,
# 以避免看到“域名未找到”错误。
resolv-retry infinite
# 将“nobind”的值更改为“sea”,以在VPN断开连接时断开您的互联网连接
# 当VPN ID断开连接时。
nobind
# 您的加密密钥将保存供下次连接到OpenVPN服务器时使用
# 将保存您的VPN连接供下次使用。
persist-key
# 您的VPN连接将保存供下次使用。
persist-tun
# 您的VPN服务器用于向您(客户端)标识自身的证书。
# 您可以从VPN服务器下载它。
ca ca.crt
# 您的证书的名称。
cert client01.crt
# 您的加密密钥的名称。
key client01.key
# LZO数据压缩将压缩您的数据块
# 在发送之前,因此数据应更小且更快。
comp-lzo
# 输出的详细程度将设置为最大。
# 以便您从连接中获得最多的信息。
# 在调试连接时,此功能非常有用。
verb 3

测试客户端VPN连接

现在,您已经安装并配置了服务器和客户端,是时候测试它们之间的连接是否正常工作了。

在您的Windows 10客户端上,运行OpenVPN GUI。

Running the OpenVPN GUI

右键单击通知区域中的OpenVPN状态图标(带有挂锁图标的监视器),然后选择Connect以连接客户端到您的VPN。

一旦客户端连接成功,OpenVPN状态图标变为绿色,您将收到vpn is now connected通知,如下所示。

Connecting to your VPN

为了双重检查,您可以使用分配的IP地址(10.8.0.2ping您的VPN服务器。

ping [10.8.0.2](<http://10.8.0.2/>)

下面的输出确认了您的VPN按预期工作。

pinging to your VPN server

结论

在本教程中,您已经学会了在Windows服务器上安装OpenVPN的正确步骤。您还学会了通过OpenVPN配置文件(.ovpn)配置OpenVPN服务器和客户端。此时,您现在拥有一个可以用于安全浏览网页的功能齐全的VPN服务。

现在,为什么不利用这些新发现的知识将您的 VPN连接扩展到Amazon AWS VPC,使用AWS VPC VPN网关服务呢?

Source:
https://adamtheautomator.com/openvpn-on-window/