2023年11月27日发(作者:)

openvpn-install 2 3.4 I002-x86_64exe

我们打开命令提示符窗口,并转到 easyrsa 目录,然后依次执行如下命令完成初始化工作:

init-config

vars

clean-all

第一次执行 clean-all 时,提示"系统找不到指定的文件”是正常的,不用管它。该命令会删

除掉之前生成的所有证书和密钥文件,以避免与之后全新生成的证书和密钥发生冲突。

我们继续执行命令 buildca 来生成 CA 根证书密钥对。

如下图所示, 除了 build-ca 命令外, 其他输入主要用于设置根证书的签名信息, 包括国家、省、

市、组织名称、单位名称、通用名、名称、邮箱地址等,请根据个人需要自行输入。输入框

前面”[]”中的内容表示默认值,如果你不输入、直接按回车,则表示使用默认值;如果你输

"。”则表示该字段信息留空.其中 Common Name (通用名称)比较重要,相当于我们常说

"账号”(此处设为 vpn_ca).

此时,我们就可以在证书存放目录中看到生成的CA 证书和私钥文件了。双击该证书,我们

还可以看到刚才输入的相关信息。

接着, 我们使用命令 build-key-server server 来创建服务器端证书和私钥。 整个创建过程与前

面创建 CA 根证书的流程比较类似,我们只需要注意Comman Name 的参数值为"server”并

随后设置相应的密码(这里设为”server_pwd”,一般不会用到密码),最后输入两次"y"进行

确认即可。

Common Name 必须填,且不能与执行 builddh 时相同,否则会报:failedto update database

TXT_DB error number 2 找不到 C:Program FilesOpenVPNeasy-rsakeys*old

服务器端证书创建完毕后,我们就可以为所有的客户端分别创建证书了.创建命令为 build-key

clientName,例如 build-key client1build-key client2

创建客户端证书的流程和创建服务器端证书的流程完全一致, 只需要注意 Common Name

段即可,在这里就不再赘述了.

此外, 我们还需要为 OpenVPN 的服务器端创建迪菲 ·赫尔曼交换密钥,命令为 builddh。迪

·赫尔曼交换密钥是一种安全协议,用以对数据进行加密.

到这里我们的证书和密钥的创建操作就基本上完成了,如果你以后还想要创建新的客户端,

只需要先执行 vars 命令,再执行 build-key clientName 命令即可(每次打开新的命令提示符

窗口,都必须先执行 vars 命令,才能执行其他命令)

easy rsa/keys 目录中拷贝出服务器端和客户端所需的文件,分别将其放在自己的

OpenVPN 安装路径/config 目录中.

其中,服务器端需要用到的文件有:

ca crt

ca key

dh1024 pem (如果最初的变量 KEY_SIZE 设为 2048,这里就是 )

客户端 client1 需要用到的文件有:

(名称 client1 根据个人设置可能有所不同)

当然, 我们还需要在 config 目录中各自放置一个配置文件,服务器端的配置文件名为

,客户端的配置文件为 client ovpn.

这两个配置文件该如何编写呢? OpenVPN 已经在 sample-config 目录中为我们提供了相关的

示例文件 ,并且配置文件中的每个配置选项均有详细的英文说明

(配置文件中"#”或” ;"开头的均为注释内容)

在这里,我们先给出 的详细配置,并注明每项配置的作用。

local 1921681101 #指定监听的本机 IP (因为有些计算机具备多个 IP 地址),该命令是

可选的,默认监听所有 IP 地址。

port 1194

proto udp

dev tun

ca ca.crt

cert servercrt

key serverkey

dh dh1024.pem

#指定监听的本机端口号

#指定采用的传输协议,可以选择 tcp udp

#指定创建的通信隧道类型,可选 tun tap

#指定 CA 证书的文件路径

#指定服务器端的证书文件路径

#指定服务器端的私钥文件路径

#指定迪菲赫尔曼参数的文件路径

server 10.000

255.255255.0 #指定虚拟局域网占用的 IP 地址段和子网掩码,此处配置

的服务器自身占用 10

001

ifconfig-pool-persist ipptxt #服务器自动给客户端分配 IP 后,客户端下次连接时,仍然

采用上次的 IP 地址(第一次分配的 IP 保存在 ipptxt 中,下一次分配其中保存的 IP)

tls-auth ta.key 0 #开启 TLS-auth,使用 takey 防御攻击。服务器端的第二个参数值为 0

客户端的为 1.

keepalive 10 120

comp-lzo

clientto-client

# 10 ping 一次,连接超时时间设为 120 秒。

#开启 VPN 连接压缩,如果服务器端开启,客户端也必须开启

#允许客户端与客户端相连接,默认情况下客户端只能与服务器相连接

persistkey

persisttun #持久化选项可以尽量避免访问在重启时由于用户权限降低而无法访问的某

些资源。

status openvpn-statuslog #指定记录 OpenVPN 状态的日志文件路径

verb 3 #指定日志文件的记录详细级别,可选 0 9,等级越高日志内容越详细

接着是 .

client

dev tun

proto udp

#指定当前 VPN 是客户端

#必须与服务器端的保持一致

#必须与服务器端的保持一致

#断线自动重新连接,在网络不稳定的情况下(例如:笔记本电脑无线网

remote 192.168.1101

1194 #指定连接的远程服务器的实际 IP 地址和端口号

resolv-retry

infinite

)非常有用。

nobind

persist-key

persist-tun

ca cacrt

#指定 CA 证书的文件路径

#不绑定特定的本地端口号

cert client1crt #指定当前客户端的证书文件路径

key client1key #指定当前客户端的私钥文件路径

ns-certtype server #指定采用服务器校验方式

tls-auth takey 1 #如果服务器设置了防御 DoS 等攻击的 takey,则必须每个客户端开启;

如果未设置,则注释掉这一行;

comp-lzo

verb 3

#与服务器保持一致

#指定日志文件的记录详细级别,可选 0 9,等级越高日志内容越详细

实际上,将两个模板文件中与 IP 地址有关的配置修改一下,就可以直接拿来使用。

最后关闭防火墙,或者允许 tcp udp 1194 端口通行