OpenVPN With Windows as Server 和 IOS as Client
OpenVPN With Windows as Server 和 IOS as Client
介绍
找了很久相关教程,但是国内的都不对,因为版本原因,差异很大,在国外找到了这篇 詹姆斯 写的教程,翻译后转给大家,用于学习。
这是詹姆斯在
https://
palitechsociety.blogspot.com
/2019/08/openvpn-server-on-windows-10.html
的文章最新版本的优化和应用。Easy RSA 2已被Easy RSA 3取代,原始文章中的Windows客户端已被iOS设备取代。
场景是你正在旅行。当您离开时,您使用iOS设备(即iPhone或iPad)连接到互联网。但是,您不希望酒店或咖啡店员工能够监视您访问的网站。因此,您可以通过家用PC上的VPN服务器将iOS设备连接到互联网。你的家庭电脑运行 Windows。
这篇文章分为三个部分:
- 家用路由器上的端口转发
- 将您的Windows PC设置为OpenVPN服务器
- 将您的iOS设备配置为OpenVPN客户端
路由器
您可以更改OpenVPN使用的端口,但在这篇文章中,我们将使用默认值,即UDP端口1194。您需要在家用路由器上执行一些操作:
- 在 UDP 端口 1194 上打开路由器防火墙
- 将路由器配置为将 UDP 端口 1194 从外部世界(通常称为广域网或 WAN)转发到局域网或 LAN 上的 PC
要确定您的计算机在 LAN 上的地址,请打开 Windows 命令提示符并发出命令 。您的 LAN 地址将位于 10.0.0.0 到 10.255.255.255、172.16.0.0 到 172.31.255.255 或 192.168.0.0 到 192.168.255.255 的范围内。
ipconfig
打开防火墙和配置端口转发的过程因路由器而异,因此此处无法提供详细说明。请参阅有关路由器特定品牌和型号的文档。
Windows as OpenVPN Server
步骤 1: Windows 电源计划
您不希望计算机在尝试从外部世界连接时处于睡眠状态。因此,请配置其电源计划以防止PC进入睡眠状态。
右键单击“Windows 开始”按钮 ,然后选择
“设置”
应用。在“
系统
”部分下,选择“
电源和睡眠
”。您可以设置选项,使屏幕在几分钟后关闭,但要将计算机配置为
永不
进入睡眠状态。
步骤 2:动态 DNS 服务
您家里可能没有静态 IP 地址。在此步骤中,您将订阅动态 DNS 服务。这将为您的Windows计算机提供一个固定的DNS主机名,即使其IP地址不时更改也是如此。
- 打开浏览器并访问 https://www.noip.com 。
-
注册一个帐户。输入您的电子邮件、无 IP 密码以及您选择的 DNS 主机名。DNS 主机名的一个示例是 。选择
免费注册
。
alice5656.hopto.org
- 检查您的电子邮件,然后单击帐户确认电子邮件中的链接。
- 如果您尚未登录,请再次登录 No-IP。
- 单击“ 我的帐户 ”。添加用户名和安全问题以完成帐户配置。
- 转到 Dyanamic DNS, 然后 转到动态更新客户端 。下载无 IP 的动态更新客户端 (DUC)。将其安装在PC上,选中复选框以启动DUC并在后台将DUC作为系统服务运行。
- 启动 DUC 后,使用为无 IP 站点选择的用户名和密码登录。
- 选择您的主机名,然后单击 保存 。
- 关闭 DUC 窗口。DUC 继续在系统托盘中运行,系统托盘是 Windows 桌面右下角的区域。
步骤 3:具有高级安全性的 Windows Defender 防火墙
在此示例中,我们使用的是 UDP 端口 1194。您已经在路由器中打开了该端口,并将其转发到PC。现在在PC上打开该端口。
-
在“窗口搜索”框中,键入
firewall
- 选择 Windows Defender Firewall with Advanced Security
- 在左窗格中,单击“ 入站规则”
- 在右窗格中,单击“ 新建规则”
- 选择“ 端口 ”类型,然后单击“ 下一步”
-
选择
类型 UDP
和特定本地端口的选项,然后单击
下一步
1194
- 选择操作 “允许连接” ,然后单击“ 下一步”
- 选中所有三个网络位置,然后单击 下一步
-
键入名称,然后单击“
完成”
OpenVPN Inbound
- 关闭 Windows Defender Firewall with Advanced Security
步骤4:安装OpenVPN
打开浏览器,然后转到
https://
openvpn.net/community-d
ownloads
的OpenVPN社区下载页面。
- 下载适用于 Windows 10 的安装程序。它有一个名称,
-
例如 。
OpenVPN-2.5.4-I604-amd64.msi
- 下载完成后,运行安装程序。
- 当您看到“ 立即安装”和“自定义” 之间的选项时,请单击“ 自定义 ”。
自定义要安装的组件:
- 取消选择 OpenVPN GUI
- 选择OpenVPN服务
- 选择 OpenSSL 实用程序
- 选择 EasyRSA3 证书管理脚本
使用这些选项进行安装。
步骤 5:公钥基础结构
EasyRSA 脚本安装在 中。
C:\Program Files\OpenVPN\easy-rsa
要使用EasyTLS以及EasyRSA,请从
https://
github.com/TinCanTech/e
asy-tls/releases
下载。
easytlseasytls-openssl.cnf
将下载的 EasyTLS 文件复制并粘贴到 .这需要管理员权限。
C:\Program Files\OpenVPN\easy-rsa
在 Windows 搜索框中,键入 。右键单击“
命令提示符”
,
然后选择“
以管理员身份运行
”。
cmd
在以
管理员身份运行的
命令提示符窗口中,输入命令:
cd C:\Program Files\OpenVPN\easy-rsa
EasyRSA-Start.bat
这将调用符合 POSIX 的 EasyRSA Shell。您将看到一个命令提示符。
#
通过输入以下命令初始化文件夹:
C:/Program Files/OpenVPN/easy-rsa/pki
./easyrsa init-pki
通过输入以下命令来构建证书颁发机构:
./easyrsa build-ca nopass
该脚本为您的 CA 生成私钥。当系统要求您输入证书的公用名时,只需按
Enter 即可
接受默认值 。输出如下所示:
Easy-RSA CA
您将被要求输入将被合并的信息
进入您的证书申请。
您将要输入的是称为可分辨名称或DN的名称。
有很多字段,但可以保留一些空白
对于某些字段,将有一个默认值,
如果输入 '.'该字段将留空.
-----
Common Name (eg:您的用户、主机或服务器名称) [Easy-RSA CA]:
CA创建完成,您现在可以导入和签署证书请求。
您要发布的新CA证书文件位于:
C:/Program Files/OpenVPN/easy-rsa/pki/ca.crt
生成服务器证书的签名请求。我们将服务器命名为:
alicewin
./easyrsa gen-req alicewin
出现提示时,输入并确认密码。对于公用名,您可以接受 的默认建议。
alicewin
将证书请求签名为类型:
server
./easyrsa sign-req server alicewin
键入单词以确认详细信息。证书是在 中创建的。
yesC:/Program Files/OpenVPN/easy-rsa/pki/issued/alicewin.crt
为客户端证书生成签名请求。我们将为客户命名:
aliceios
./easyrsa gen-req aliceios
出现提示时,输入并确认密码。对于公用名,您可以接受 的默认建议。
aliceios
将请求签名为类型:
client
./easyrsa sign-req client aliceios
键入单词以确认详细信息。证书是在 中创建的。
yesC:/Program Files/OpenVPN/easy-rsa/pki/issued/aliceios.crt
生成 Diffie-Hellman 参数:
./easyrsa gen-dh
这可能需要很长时间。结果最终以 .
C:/Program Files/OpenVPN/easy-rsa/pki/dh.pem
初始化简易 TLS:
./easytls init-tls
该脚本将在 中为您创建一个新目录。
C:/Program Files/OpenVPN/easy-rsa/pki/easytls
创建 TLS 加密密钥:
./easytls build-tls-crypt
该脚本将在 中创建 TLS 加密版本 1 密钥。
C:/Program Files/OpenVPN/easy-rsa/pki/easytls/tls-crypt.key
退出 EasyRSA shell:
exit
从服务器的私钥中删除密码,否则服务将无法启动。
openssl rsa -in pki\private\alicewin.key -out pki\private\alicewinnopass.key
copy pki\private\alicewinnopass.key pki\private\alicewin.key /y
关闭命令提示符窗口。
步骤 6:服务器配置文件
打开 Windows 记事本。使用以下内容作为配置文件的模型。
将模板中的所有值替换为环境中应用的实际值:
dev tun
proto udp
port 1194
ca "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\issued\\alicewin.crt"
key "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\private\\alicewin.key"
dh "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\dh.pem"
tls-crypt "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\easytls\\tls-crypt.key"
cipher AES-256-GCM
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 1.1.1.1"
push "block-outside-dns"
keepalive 10 60
persist-key
persist-tun
explicit-exit-notify 1
verb 3
将文件另存为 。
alicewin.ovpn
将文件复制并粘贴到 中。这需要管理员权限。
C:\Program Files\OpenVPN\config-auto
步骤 7:启用转发
打开 Windows 控制面板应用。
转到
“网络和互联网
”部分,然后单击“
网络和共享中心
”。单击
链接更改适配器设置
。
您将看到安装已创建新的网络适配器。它将有一个名为
OpenVPN TAP-Windows6
。它被描述为
TAP-Windows Adapter V9
。
在 Windows 搜索框中,键入 。右键单击“
命令提示符”
,然后选择“
以管理员身份运行
”。
cmd
在以
管理员身份运行的
命令提示符窗口中,输入以下命令:
netsh int ipv4 show int
结果如下所示:
记下OpenVPN TAP-Windows6的索引号。例如,它可能是 接口索引 。(您的计算机上的号码不一定相同。
11
查看是否启用了转发:
netsh int ipv4 show int 11 | findstr "Forwarding"
如果禁用了“转发”,则通过发出以下命令来启用“转发”:
netsh int ipv4 set int 11 Forwarding="enabled"
仔细检查结果是否显示已启用“转发”:
netsh int ipv4 show int 11 | findstr "Forwarding"
关闭命令提示符窗口。
步骤 8:启用路由
在 Windows 搜索框中,键入 ,右键单击
“注册表编辑器
”,然后选择“
以管理员身份运行
”。
regedit
展开左窗格中的树。导航到 > > > > > 。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters
查找类型的键。
IPEnableRouterREG_DWORD
将其值设置为 。单击“
确定”。
1
关闭注册表编辑器。
步骤 9:启动服务
在 Windows 搜索框中,键入 ,右键单击“
服务
”应用,然后选择“
以管理员身份运行
”。
services
查找 的行。
Routing and Remote Access
- 右键单击它,然后选择 “属性”
- 将 “启动类型” 设置为 “自动”
- 点击 应用
- 单击“ 开始”
- 单击“ 确定”
查找 的行。
OpenVPN Interactive service
- 右键单击它,然后选择 “属性”
- 单击 “停止”
- 将其 启动类型 更改为 手动
- 点击 应用
- 单击“ 确定”
查找 的行。确保它是
“正在运行”
,
并且“启动类型”为“自动
”。单击按钮以
重新启动
服务。
OpenVPNService
关闭“服务”应用。
打开文件资源管理器并导航到 。检查文件中是否有消息。它应该看起来像这样,以 结尾。
C:\Program Files\OpenVPN\logalicewin.logInitialization Sequence Completed
WARNING: --topology net30 support for server configs with IPv4 pools will be removed in a future release. Please migrate to --topology subnet as soon as possible.
OpenVPN 2.5.4 Windows-MSVC [SSL (OpenSSL)] [LZO] [LZ4] [PKCS11] [AEAD] built on Oct 20 2021
Windows version 10.0 (Windows 10 or greater) 64bit
library versions: OpenSSL 1.1.1l 24 Aug 2021, LZO 2.10
Diffie-Hellman initialized with 2048 bit key
Outgoing Control Channel Encryption: Cipher 'AES-256-CTR' initialized with 256 bit key
Outgoing Control Channel Encryption: Using 256 bit message hash 'SHA256' for HMAC authentication
Incoming Control Channel Encryption: Cipher 'AES-256-CTR' initialized with 256 bit key
Incoming Control Channel Encryption: Using 256 bit message hash 'SHA256' for HMAC authentication
interactive service msg_channel=0
open_tun
tap-windows6 device [OpenVPN TAP-Windows6] opened
TAP-Windows Driver Version 9.24
Notified TAP-Windows driver to set a DHCP IP/netmask of 10.8.0.1/255.255.255.252 on interface {41C25560-522A-4053-B50A-9916AE58E987} [DHCP-serv: 10.8.0.2, lease-time: 31536000]
Sleeping for 10 seconds...
Successful ARP Flush on interface [6] {41C25560-522A-4053-B50A-9916AE58E987}
IPv4 MTU set to 1500 on interface 6 using SetIpInterfaceEntry()
C:\Windows\system32\route.exe ADD 10.8.0.0 MASK 255.255.255.0 10.8.0.2
ROUTE: CreateIpForwardEntry succeeded with dwForwardMetric1=25 and dwForwardType=4
Route addition via IPAPI succeeded [adaptive]
Could not determine IPv4/IPv6 protocol. Using AF_INET6
Socket Buffers: R=[65536->65536] S=[65536->65536]
setsockopt(IPV6_V6ONLY=0)