新冠时期,由于居家办公,需要从家里访问公司的erp服务器等内网数据。
同时,为了提升云服务的安全性,我还设置了企业邮箱和云服务器的3389端口只能从公司公网ip访问。
为了满足上述要求,我通过群晖nas和威联通nas在拥有固定公网ip的公司内网傻瓜式部署了openvpn。
连上openvpn便可以访问公司内网数据。
通过代理上网,便可以以公司公网ip访问企业邮箱和云服务器的3389端口。
但是由于许多人不习惯在nas上部署业务场景,今天来尝试一下在windows上部署openvpn
OpenVPN是一款开源软件套件,您几乎可以在所有可用的操作系统中部署 OpenVPN 的服务器部分,包括 Linux、Windows、MacOS 和 *BSD。
您可以在 Windows Server 2022/20119/2016/2012R2 甚至运行桌面 Windows 版本(Windows 10 或 11)的计算机上安装 OpenVPN 服务器。
在本文中,我们将展示如何在运行 Windows 10 的计算机上安装和配置 OpenVPN 服务器、在另一台 Windows 设备上设置 OpenVPN 客户端以及建立安全的 VPN 连接。
如何在 Windows 上安装 OpenVPN 服务器服务
从官方网站 ( https://openvpn.net/community-downloads/ ) 下载适用于您的 Windows 版本的 OpenVPN MSI 安装程序。
点击安装程序,点击customize,然后选择全部安装吧。
对于Drivers,安装 Wintun 驱动程序而不是 TAP-Windows6
因为OpenVPN 2.5(及更高版本)支持WireGuard 开发人员提供的WinTun驱动程序。该驱动程序比默认的 TAP OpenVPN 驱动程序更快。
点击install now 等待安装完成。
默认情况下,OpenVPN 安装到 C:\Program Files\OpenVPN。
安装完成后,您将看到一个新的网络适配器Wintun Userspace Tunnel。如果 OpenVPN 服务未运行,则该适配器将被禁用。
创建 OpenVPN 加密密钥和证书
打开命令提示符并转到 easy-rsa 目录:
cd "C:\Program Files\OpenVPN\easy-rsa"
创建文件的副本:
copy vars.example vars
在任何文本编辑器中打开vars文件。
请务必编辑 EASYRSA_TEMP_DIR 变量,如下所示:
set_var EASYRSA_TEMP_DIR "$EASYRSA_PKI/temp"
您可以填写证书字段(可选):
set_var EASYRSA_REQ_COUNTRY“中国”
set_var EASYRSA_REQ_PROVINCE "MY"
set_var EASYRSA_REQ_CITY“摸鱼协会”
set_var EASYRSA_REQ_ORG“MOYUXIEHUI”
set_var EASYRSA_REQ_EMAIL“ admin@lwcz.net ”
set_var EASYRSA_REQ_OU "IT 部门"
设置证书到期日期:
set_var EASYRSA_CA_EXPIRE 3650
set_var EASYRSA_CERT_EXPIRE 825
保存文件并运行命令:
EasyRSA-Start.bat
初始化 PKI:
./easyrsa init-pki
然后生成根CA:
./easyrsa build-ca
如果提示:
Error
-----
Temporary directory does not exist:
* /temp
那就执行命令
mkdir /temp
接下来输入两次CA密码,然后输入Common Name,就是起个名字,比如openvpn。
CA就创建完成。
上面的命令创建了:
证书颁发机构的根证书
证书颁发机构密钥
然后为您的 OpenVPN 服务器生成证书请求和密钥:
./easyrsa gen-req server nopass
使用您的 CA 签署请求以颁发服务器证书:
./easyrsa sign-req server server
然后输入根 CA 的 CA 密码。
server.crt 文件将出现在已发布的文件夹 ( C:\Program Files\OpenVPN\easy-rsa\pki\issued\server.crt) 中。
然后就可以生成 Diffie-Hellman 密钥(需要很长时间):
./easyrsa gen-dh
生成 tls-auth 密钥:
cd C:\Program Files\OpenVPN\bin
openvpn --genkey secret ta.key
该C:\Program Files\OpenVPN\bin\ta.key文件将会出现。将其移至C:\Program Files\OpenVPN\easy-rsa\pki文件夹。
然后您可以为 OpenVPN 客户端生成密钥。连接到 VPN 服务器的每个客户端都必须有自己的密钥对。
在下面的示例中,我们将在服务器上创建客户端密钥并使用密码(PEM 密码短语)对其进行保护:
./easyrsa gen-req testuser1
./easyrsa sign-req client testuser1
将密钥文件 ( C:\Program Files\OpenVPN\easy-rsa\pki\private\testuser1.key) 复制到客户端计算机,告诉用户密码.
您可以为 VPN 服务器上的用户创建任意数量的密钥和证书。以同样的方式为其他客户端生成密钥和证书。
您可以撤销受损的客户端证书:
cd C:\Program Files\OpenVPN\easy-rsa
EasyRSA-Start.bat
./easyrsa revoke testuser2
我们为 OpenVPN 服务器生成了一组密钥和证书。现在您可以配置并运行您的 VPN 服务。
复制 OpenVPN 服务器的配置文件模板:
copy "C:\Program Files\OpenVPN\sample-config\server.ovpn" "C:\Program Files\OpenVPN\config-auto\server.ovpn"
在任何文本编辑器中打开 server.ovpn 并进行设置。我正在使用以下 OpenVPN 配置:
# Specify a port, a protocol and a device type
port 1194
proto udp
dev tun
# Specify paths to server certificates
ca "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\issued\\server.crt"
key "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\private\\server.key"
dh "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\dh.pem"
# Specify the settings of the IP network your VPN clients will get their IP addresses from
server 10.24.1.0 255.255.255.0
# If you want to allow your clients to connect using the same key, enable the duplicate-cn option (not recommended)
# duplicate-cn
# TLS protection
tls-auth "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\ta.key" 0
cipher AES-256-GCM
# Other options
keepalive 20 60
persist-key
persist-tun
status "C:\\Program Files\\OpenVPN\\log\\status.log"
log "C:\\Program Files\\OpenVPN\\log\\openvpn.log"
verb 3
mute 20
windows-driver wintun
保存文件
我们使用UDP在 UDP 端口 1194 上运行 OpenVPN。
服务端和客户端防火墙放行1194
启动 OpenVPNService
net start OpenVPNService
打开网络连接对话框并确保 OpenVPN Wintun 虚拟适配器现已链接。
如果不是,请检查日志文件C:\Program Files\OpenVPN\log\server.log。
如果启动 OpenVPN 时在日志中看到以下错误:
选项错误:在 C:\Program Files\OpenVPN\config-auto\server.ovpn:1 中:超出最大选项行长度 (256),行以…开头
在 server.ovpn 中将换行符更改为Windows CRLF(在 Notepad++ 中,选择编辑 -> EOL Conversion -> Windows CR LF)。保存文件并重新启动 OpenVPNService。
此 OpenVPN 配置仅允许远程客户端访问服务器资源。服务器本地网络中的其他计算机和服务不可用于远程客户端。为了允许 OpenVPN 客户端访问内部 LAN,请在注册表中启用IPEnableRouter选项(在 Windows 中启用 IP 路由,包括Hyper-V 网络之间的路由,并允许您使用端口转发):
reg add "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v IPEnableRouter /t REG_DWORD /d 1 /f
在 Windows 上配置 OpenVPN 客户端
使用以下设置在服务器上创建 VPN 客户端的模板配置文件(基于 client.ovpn 模板)(文件名为testuser1.ovpn):
client
dev tun
proto udp
remote your_vpn_server_address 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert testuser1.crt
key testuser1.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-GCM
connect-retry-max 25
verb 3
然后将以下文件从服务器复制到安装了 OpenVPN 客户端的计算机:
ca.crt
testuser1.crt
testuser1.key
dh.pem
ta.key
testuser1.ovpn
导入配置文件,然后把上述文件全部复制到
“C:\Users\Administrator\OpenVPN\config\testuser1\”
尝试连接
至此,客户端可以连上了,server所在内网也能ping通了,但是不能通过server访问互联网。
在服务器上
控制面板\网络和 Internet\网络连接
选择以太网(使用中的本地链接)这个适配器,右击属性,共享
勾选允许其他网络用户通过此计算机的Internet的连接来连接
家庭网络连接选择 OpenVPN Wintun
勾选允许其他网络用户控制或禁用共享的Internet连接
点击确认
之后OpenVPN Wintun的ip地址会发生变化
把server.ovpn中
server 10.24.1.0 255.255.255.0
这条修改为与之相同网段
在客户端配置文件中添加
redirect-gateway def1
让所有数据通过代理。
如此配置,便也可以通过server访问互联网了。
参考:
https://woshub.com/install-configure-openvpn-server-windows/
推荐您阅读更多有关于“ OpenVPN ”的文章
以上内容如果对你有用,请收藏。
评论列表: