0


Windows 10 搭建 开放虚拟专用网络实验(客户端与服务端)

说明:

本文只是学习研究,是用来对于国内公司员工出差远程连接公司进行办公的方法研究,并无翻墙之意,请读者遵守法律,科学上网。

本次实验是在windows 10(服务端)和windows server 2020(客户端)上分别搭建OpenVPN服务端和客户端,都是使用OpenVPN这个软件(因为这个软件即可做服务端也可做客户端),笔者也是刚开始接触的,慢慢再摸索了好久ヾ(≧▽≦*)o,希望这篇文章可以给困惑的你一些帮助,感谢。

一般的网络部署中,公司总部是经常用ikuai做服务端(L2TP、OpenVPN),出差办公员工通过远程连接到公司,可以使用windows(这里主要是windows系统)自带的VPN登录选项,也可以使用软件来远程连接(OpenVPN GUI)。

本实验适用于2.4.X版本,2.5.X和这个有点出入,但是大致思路是一样的。

实验环境

VMware Workstation Pro17:

windows 10(服务端):

windows server(客户端):

OpenVPN GUI(2.4.8)

下载

上面3个软件和镜像包在网上可以自行找寻;

OpenVPN

官网安装包下载地址(各系统版本):

第三方安装包下载地址(各系统版本):https://www.techspot.com/downloads/5182-openvpn.html

本次实验是OpenVPN 2.4.X版本(openvpn-install-2.4.8-I602-Win10.exe,下载地址:OpenVPN 2.4.8 (npackd.org)),2.4和2.5两个版本的操作是有以下不一样的,请注意仔细查看版本,以防最后出现问题。切记!!!

实验步骤

一、服务端安装

打开安装包进行安装,客户端跟服务器安装方式一样,都需要安装:

(Next)下一步:

I Agree下一步:

下面选项默认是不勾选的,我们需要勾选证书生成程序,不然安装完无法命令行制作证书操作:

选择安装目录:

如果默认安装C盘,后续操作会简单一些;

如果选择安装其他盘,需要记下此路径,后面需要调整HOME值;

(这里选择C盘,如果选择其他盘的话,到下面调整HOME值的时候有说明)

安装完成:

安装完成后系统会多出一张网卡 TAP的 本地连接:

PS:这里的网卡到后面通过服务端上网会用到

二、生成配置

OpenVPN支持基于加密证书的双向认证,如果是L2TP的话,是可以不需要证书,用密钥即可。

在 OpenVPN 中,服务器端生成所有的证书和私钥,并将加密证书和密钥分配给客户端。客户端只需要安装好软件,然后复制服务端生成的配置到客户端即可。

服务器端(windows 10)运行以下命令:

所以直接打开 cmd(以管理员的身份运行) ,进入 OpenVPN 的安装目录C:\Program Files\OpenVPN\easy-rsa

然后运行以下命令:

1、****环境初始化

下面的命令执行前,请先做一些操作:

打开资源管理器,找到C:\Program Files\OpenVPN\easy-rsa 下的vars.bat.sample

由于 init-config 会把 vars.bat.sample 复制为 var.bat,所以要根据自己需要先修改 vars.bat.sample 模板文件中的一些变量:

vars.bat.sample 部分默认值为:

set HOME=%ProgramFiles%\OpenVPN\easy-rsa

set KEY_COUNTRY=US

set KEY_PROVINCE=CA

set KEY_CITY=SanFrancisco

set KEY_ORG=FortFunston

set KEY_EMAIL=mail@domain.com

修改为:

set HOME=C:\Program Files\OpenVPN\easy-rsa #(此路径就是上面安装时,自己选择的安装路径)

set KEY_COUNTRY=CN #(国家)

set KEY_PROVINCE=ZJ #(省份)

set KEY_CITY=NB #(城市)

set KEY_ORG=Openvpn #(组织)

set KEY_EMAIL=test@vpn #(邮件地址)

// 国家是建议是CN,其他的随意,乱写也行。注意,#后面的内容不要拷贝进

vars.bat.sample, 要记得删掉。

// HOME一定要改,否则会出错

修改完后关闭文件,然后执行命令:

在cmd(管理员模式)界面输入下面命令

①:init-config #会执行当前目录下的 init-config.bat,将 vars.bat.sample 复制为 var.bat

②:vars #vars.bat 用来设置一些变量,主要就是配置文件中修改的那部分

③:clean-all

2、****创建CA根证书

生成CA证书主要是下面的命令,如果server使用TLS的话,就需要创建dh文件

build-ca # 生成根证书;

build-dh.bat # 生成 dh2048.pem 文件,Server 使用 TLS(OpenSSL) 必须要有的文件;

PS:下面创建CA证书的时候,需要在Common Name的时候设置名称为CA

C:\Program Files\OpenVPN\easy-rsa>build-ca.bat

Generating a RSA private key
................................................................................................................................................................................................................++++
...........................................++++
writing new private key to 'keys\ca.key'


You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.


Country Name (2 letter code) [CN]:
State or Province Name (full name) [ZJ]:
Locality Name (eg, city) [NB]:
Organization Name (eg, company) [vpn]:
Organizational Unit Name (eg, section) [changeme]:
Common Name (eg, your name or your server's hostname) [changeme]:CA
Name [changeme]:
Email Address [vpn@qq.com]:

C:\Program Files\OpenVPN\easy-rsa>build-dh.bat
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
...............................................................................+.................+....+..............................................................................................................................+...................+......+................................................................................................+..........................................................+...............................................................+....+.................................................................................................+..................................................................+............................................................................................................................+..............................................................+...........................................+.........................+................................................................................................................................................................................................+..+............................+........................................+................+........................+..............................................................+.......................................................................................................................................+...............................................+.........................................+..........................................................................+.........................................+....................................................................................................................................................................................................................+....+..........................+..................+....................................................................................................................................................................+.........................................................................+.................................................................+.............................................................................................................................................................................................................................+......................................+....................................+...............................................................................................................................................................................................................................................................+..................................................................................................................................+.........................................................+..........................................+....................................................................+...................+............................+............................................+..........................................+...............+...............+...........+......................................................................................+.......+.............................................+.................................................................................+......................+.................++++++++

build-ca 的时候需要输入一些注册信息。在输入信息的时候,如果你不输入任何信息,就表示采用默认值(前面[]中的内容就是默认值)

3、创建ta.key文件

在服务端cmd(管理员模式)输入:

cd C:\Program Files\OpenVPN\bin

openvpn --genkey --secret "C:\Program Files\OpenVPN\config\ta.key" #路径自定义

文件会在C:\Program Files\OpenVPN\config\生成。

4、****创建服务端证书

build-key-server server #生成服务端密钥和证书(server是服务端证书和密钥文件的名称)

注:

builid-key-server 后面指定的参数名 server 指的是生成的证书和密钥文件的名称(会生成 server.key、server.csr 和 server.crt这几个文件,保存在 keys 目录中)

如果需要生成多个服务端的密钥和证书则继续 build-key-server server01 … … ;

5、****创建客户端证书

build-key client #生成客户端密钥和证书(client是服务端证书和密钥文件的名称)

注:

client和build-key-server一样,也是需要输入相似的配置,但是 Common Name 不能与执行 build-key-server 时输入的一样;

如果需要生成其他的客户端密钥和证书,可以继续 build-key client01 … … ;

三、服务端的配置文件

首先,找到位置C:\Program Files\OpenVPN\sample-config,里面有客户端和服务端的模板,用记事本打开,以#开头的是注释,以;开头的是不生效命令,可以翻译一下,就知道大概是什么作用了。最好是使用软件自带的模板,这样兼容性好一点,只需要改一些参数就可以了,下面给出需要的命令(#省去了,;保留并解释作用)

; local 用于监听本机(作为服务器端)已安装网卡对应的IP地址,该命令是可选的,如果不设置,则默认监听本机的所有IP地址;
local 0.0.0.0

开放端口号

port 1194

使用TCP还是UDP(server和client要保持一致,建议都是UDP,TCP可能会连接失败)

;proto tcp
proto udp

win 必须使用tap,具体解释模板里有,翻译一下即可

dev tap
;dev tun

不使用

;dev-node MyTap

证书和DH

ca ca.crt
cert server.crt
key server.key

dh dh2048.pem

不使用

;topology subnet

设置分配给客户端的网段地址

server 10.8.0.0 255.255.255.0

记录客户端与分配给分配客户端IP的关系

ifconfig-pool-persist ipp.txt

针对以太网桥接模式

;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100

桥接模式,不使用

;server-bridge

推送路由信息到客户端,允许客户端能访问VPN服务器自身所在的其他网段,看个人情况选择是否开启,这里默认不使用

;push "route 192.168.10.0 255.255.255.0"
;push "route 192.168.20.0 255.255.255.0"

不使用

;client-config-dir ccd
;route 192.168.40.128 255.255.255.248

不使用

;client-config-dir ccd
;route 10.9.0.0 255.255.255.252

不使用

;learn-address ./script

不开启,这是将客户端的默认网关重定向到VPN

;push "redirect-gateway def1 bypass-dhcp"

推送DNS,开启使用

push "dhcp-option DNS 223.5.5.5"

默认不开启,允许客户端之间互访,默认不允许

;client-to-client

不使用

;duplicate-cn

每10sping一次,如果120s内没有收到对方的回复,则表示连接已关闭

keepalive 10 120

TLS,服务端是为0,客户端是为1

tls-auth ta.key 0

密码加密算法,两端要保持一致

cipher AES-256-CBC

默认不使用

;compress lz4-v2
;push "compress lz4-v2"

在VPN连接上启动压缩,两端要保持一致

;comp-lzo

最大客户端限制

;max-clients 100

默认不开启使用

;user nobody
;group nobody

开启使用

persist-key
persist-tun

开启使用

status openvpn-status.log

默认不开启

;log openvpn.log
;log-append openvpn.log

日志冗余级别。级别越高,输出越详细(数字越大级别越高)

verb 3

不开启

;mute 20

默认

explicit-exit-notify 1

PS:注意,如果要想让客户端通过自己上网,可以给客户端推送路由:

push "route 0.0.0.0 0.0.0.0"

这样的话客户端可以直接通过服务端上网,下面的五测试,客户端通过服务端上网就可以略过

将上面的文件复制到server.txt中,接着将文件类型改成server.ovpn,把在key文件中的所有文件都复制到目录:C:\Program Files\OpenVPN\config下,如下所示:

PS:这里的ta.key文件是从C:\Program Files\OpenVPN\config\复制而来的,一定不要忘了。

然后把客户端的需要的文件(ca.crt、ca,key、client.crt、client.csr、client.key、ta.key)复制给windows server.

四、客户端的配置文件

配置客户端文件:client.ovpn

现在记事本中把下面内容复制过去,然后保存,把文件名和类型改成:client.ovpn,接着把送服务端复制过来的文件和这个client.ovpn(一共7个文件,自己看一下是否少了)放在客户端的:C:\Program Files\OpenVPN\config目录下。客户端的安装和服务端一致,这里便不再讲述了。

client

dev tap
;dev tun

不使用

;dev-node MyTap

建议UDP

;proto tcp
proto udp

服务器地址和端口号

remote 192.168.188.129 1194
;remote my-server-2 1194

不使用

;remote-random

默认开始使用

resolv-retry infinite

默认开启

nobind

不使用

;user nobody
;group nobody

默认开启

persist-key
persist-tun

默认不使用

;http-proxy-retry # retry on connection failures
;http-proxy [proxy server] [proxy port #]

默认不使用

;mute-replay-warnings

ca等文件

ca ca.crt
cert client.crt
key client.key

开启使用

remote-cert-tls server

开启使用

tls-auth ta.key 1

要和服务端保持一致

cipher AES-256-CBC

和服务端保持一致

#comp-lzo

Set log file verbosity.

verb 3

Silence repeating messages

;mute 20

具体文件如下:

这7个文件是必须的,其他的便无所谓了。

五、测试

1、测试网络连通性

windows 10和windows server两台虚拟机,桥接到同一网卡上(192.168.188.0/24),网卡开启DHCP分配地址,如下所示:(windows是服务端,windows server是客户端)

Windows 10:

Windows server:

关闭防火墙,测试连通性:

通信正常。

2、导入配置文件

运行OpenVPN软件最好是以管理员的方式运行,不然的话有可能出错。

服务端(windows 10):

打开电脑右下角,找到一个电脑小图标,右键,点击导入文件:

找到文件并导入:

然后会显示成功导入文件:

再次点击电脑右下角,找到电脑小图标,右键点击连接,会显示连接中:

这时候客户端的操作和服务端一样,也是导入文件,点击连接:

等待一会,显示连接成功

测试一下连通性:

3、客户端通过服务端上网

在服务端安装的时候,会在网卡中显示多一张TAP网卡,现在来看两张网卡:

windows 10(server):

这时,TAP网卡已经有地址了:

再看windows server(client):

可以看到,两张网卡都有地址,我们现在来实现让客户端通过服务端来上网。

首先服务端需要至少两个网卡,一张是和客户端在同一个网段(192.168.188.0/24),另一张网卡则是NAT或者桥接都行,只要能正常上网(聪明的你肯定知道怎么做,如果不会的话,可以百度一下,总会用办法的q(≧▽≦q))。

服务端(windows 10):

在能正常上网的网卡上右键点击属性,找到共享,点击开启,下面的家庭网络连接选择TAP网卡,这里的本地连接就是TAP网卡,点击确定即可。

然后能上网的网卡上就可以看到有共享的,至此,服务端配置为完毕

PS:对于服务端给客户端下发的DNS在客户端的配置文件里有,如果不下发的话就需要在客户端的网卡上手动更改DNS地址。

客户端(windows server):

在客户端还剩最后一个问题,即路由,如果在服务端下发了网关重定向,那么应该是不会产生这个问题的,但是笔者没有搞定,所以只能在客户端上配置路由。o(^@^)o

打开cmd(以管理员模式运行)命令行:

先看一下路由表:(-4是查看IPv4路由,-6是IPv6路由)

可以看到,缺少一条静态路由,我们手动添加即可:

route add 0.0.0.0 mask 0.0.0.0 10.8.0.1 #添加路由

route delete 0.0.0.0 mask 0.0.0.0 10.8.0.1 #删除路由

如果不清楚后面跟什么参数,可以输入一下空格,再输入--help回车查看即可

添加路由后:

ping一下百度:

可以正常上网了。

注意:如果出现添加路由后还是不能上网,就需要重新连接一下server和client。

参考文章:

https://www.softool.cn/blog-91.htmlhttps://www.softool.cn/blog-91.html

https://blog.51cto.com/u_9829390/5190623https://blog.51cto.com/u_9829390/5190623

标签: windows

本文转载自: https://blog.csdn.net/wssfy/article/details/132078358
版权归原作者 是山风的呀 所有, 如有侵权,请联系我们删除。

“Windows 10 搭建 开放虚拟专用网络实验(客户端与服务端)”的评论:

还没有评论