在 iOS 和 macOS 上安装 OpenVPN 客户端
本文记录了如何在 iOS
和 macOS
上安装和配置 OpenVPN
客户端,主要介绍如何编写客户端配置文件 client.ovpn
并导入。
- 服务端的安装:在 Windows 10 上安装 OpenVPN 服务端
- 主要目的:使用 OpenVPN 访问家庭内网
安装 OpenVPN Connect
配置 OpenVPN Connect
客户端配置文件模板
client.ovpn
以及ca.crt
(ca
),client.crt
(cert
),client.key
(key
)等文件均在安装OpenVPN
服务端时获得。
客户端提供了两种方式导入配置文件:
- 通过
URL
,建议URL
仅限在私有网络内访问。 - 通过其他方式例如邮件(安全性降低),下载为本地文件再导入。本人使用
OneDrive
共享到iPhone
。
对于客户端配置而言,iOS
的困难点在于其文件系统封闭,ca.crt
(ca
),client.crt
(cert
),client.key
(key
)不能放置到指定位置。因此配置文件分为两种形式:
- 将
CA
根证书ca.crt
,客户端证书client.crt
,客户端密钥client.key
的内容复制粘贴到client.ovpn
中,形成一个联合配置文件。这种方式简单方便,推荐!。 - 使用
openssl
将CA
根证书ca.crt
,客户端证书client.crt
,客户端密钥client.key
转换为PKCS#12
文件,先导入client.ovpn12
再导入client.ovpn
。不推荐的原因在于本人导入失败,最终放弃。
单一 client.ovpn
- 从目录
C:\Program Files\OpenVPN\sample-config
复制客户端配置文件模板client.ovpn
,修改配置 - 将
remote your-server 1194
中的地址和端口替换成你的OpenVPN
服务端对外的地址和端口 - 将
ca ca.crt
,cert client.crt
,key client.key
,tls-auth ta.key 1
注释掉,再将各自文件中的内容以类XML
的形式粘贴到client.ovpn
中 - 将修改好的客户端配置文件导入到客户端中
1 | remote your-server 1194 |
client.ovpn + client.opvn12(失败)
- 使用
openssl
命令将客户端的证书和密钥文件转换为PKCS#12
形式的文件。该命令会提示Enter Export Password
,可以为空,但为了安全建议设置密码。1
openssl pkcs12 -export -in cert -inkey key -certfile ca -name MyClient -out client.ovpn12
- 由于在
iOS
中导入PKCS#12
文件到Keychain
中时只导入了客户端证书和密钥,CA
根证书并没有导入,client.ovpn
文件中必须要保留CA
根证书的配置。
既可以用传统的引用文件的方式:也可以用类 XML 的形式粘贴 ca.crt 内容到 client.ovpn 中:1
ca ca.crt
1
2
3<ca>
paste contents of ca.crt here
</ca> - 先导入
client.ovpn12
(需要输入转换时的密码),再导入client.ovpn
。
但是我失败了……导入
client.ovpn12
时密码一直错误,没有解决。推荐使用第一种方式。
NAT 和 DDNS
本人的设置如下,仅供参考:
OpenVPN
服务端配置的端口号为默认的1194
。- 在路由器管理后台的
NAT
设置中,配置一个自定义的高位端口号如49999
作为对外端口号映射到Windows 10
主机的1194
端口号。这既是为了安全,也是为了避免不必要的检测风险(有没有用我也不知道啊 =_= )。 - 由于公网
IP
是动态的,一旦IP
发生变化,就需要修改配置文件。因此使用ddns-go
配合Cloudflare
实现动态域名解析。