OpenVPN连接两个局域网(使用Windows主机)

1 前言

工作原因,又要在宿舍和公司间搭建VPN通道。这一次还是用OpenVPN,用两台Windows主机分别作服务器和客户端,下面是拓扑图。

openvpn-connect-two-lan-on-windows-hosts_01如果所示,服务端在A网络,客户端在B网络。不用去考虑路由器是如何连接到Internet的,只要路由器能上网,就能用OpenVPN通道把192.168.0.0/24和192.168.1.0/24两个局域网连接起来,让其中的主机能够互相访问对方。

如果路由器自带OpenVPN,那么上图中的电脑可以省掉。

如果电脑主机在网络中充当路由器的角色,那么这两台路由器也没有存在的必要。

软件版本:OpenVPN v2.3.7 64bit,安装在默认位置
服务端操作系统:Windows Server 2012 R2 64bit
客户端操作系统:Windows 8.1 Pro 64bit

2 生成证书

参考OpenVPN生成证书

3 服务端配置

3.1 配置文件

配置文件在“C:\Program Files\OpenVPN\config”里(若需要开机自动运行VPN服务端,配置文件不能放在这一目录的子目录中,必须放在此目录下),列表如下。

名称 作用
ccd 目录,存放客户端配置文件
ccd\client 客户端配置文件,其证书的CN是client
ca.crt CA证书
dh2048.pem Diffie Hellman参数
ta.key tls-auth密钥文件
server.ovpn 服务端配置文件
server.crt 服务端证书
server.key 服务端证书私钥

server.ovpn内容:

server 10.8.0.0 255.255.255.0
dev tun
proto udp
port 12345
float
cipher AES-256-CBC
comp-lzo adaptive
keepalive 15 60
verb 3
client-config-dir ccd
ccd-exclusive
route 192.168.1.0 255.255.255.0
tls-auth ta.key 0
ca ca.crt
dh dh2048.pem
cert server.crt
key server.key
status-version 2
status status
push "route 192.168.0.0 255.255.255.0"

ccd\client内容:

iroute 192.168.1.0 255.255.255.0

各个配置项的详细解释不再重复,可以参考OpenVPN连接两个局域网(使用华硕RT-AC87U)一文。

3.2 操作系统配置

为了在OpenVPN的虚拟网卡和物理网卡间转发网络数据包,需安装“远程访问”角色中的“路由”功能。

然后,在“控制面板->管理工具->路由和远程访问”中,启用“路由和远程访问”服务。选择“自定义配置”,启用“LAN路由”服务即可。

3.3 网关配置

如果OpenVPN没有运行在路由器上,需要在Windows主机的默认网关添加下面两条路由:

网络 掩码 下一跳地址
192.168.1.0 255.255.255.0 192.168.0.10
10.8.0.0 255.255.255.0 192.168.0.10

192.168.1.0/24是B网络内网的网络地址,10.8.0.0是服务端配置文件server语句中配置的网段,192.168.0.10是安装Windows 2012 R2主机的IP地址。

4 客户端配置

4.1 配置文件

配置文件在“C:\Program Files\OpenVPN\config”里(若需要连接多台VPN服务器,可以创建子目录单独存放对应每个服务器的配置文件),列表如下:

名称 作用
ca.crt CA证书
ta.key tls-auth密钥文件
client.ovpn 客户端配置文件
client.crt 客户端证书
client.key 客户端证书私钥

client.ovpn内容:

client
dev tun
proto udp
remote 1.1.1.1 12345
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo adaptive
cipher AES-256-CBC
verb 3
tls-auth ta.key 1
ca ca.crt
cert client.crt
key client.key
status-version 2
status status
ns-cert-type server

各个配置项的详细解释不再重复,可以参考OpenVPN连接两个局域网(使用华硕RT-AC87U)一文。

4.2 操作系统配置

为了在OpenVPN的虚拟网卡和物理网卡间转发网络数据包,需修改注册表,把IPEnableRouter的值设置为1(数据类型是REG_DWORD),启用路由功能。修改后重启电脑方可生效。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\IPEnableRouter

 4.3 网关配置

如果OpenVPN没有运行在路由器上,需要在Windows主机的默认网关(也就是路由器)上添加下面两条路由:

网络 掩码 下一跳地址
192.168.0.0 255.255.255.0 192.168.1.10
10.8.0.0 255.255.255.0 192.168.1.10

192.168.0.0/24是A网络内网的网络地址,10.8.0.0是服务端配置文件server语句中配置的网段,192.168.1.10是安装Windows 8.1 Pro主机的IP地址。

5 注意事项

5.1 配置文件中不能出现daemon这一设置项,否则OpenVPN会报错。

5.2 若需要OpenVPN开机后自动启动,把“OpenVPN Service”服务设置为自动即可(默认是手动)。

5.3 若需要服务端开机自启动,其配置文件必须放在config目录中,不能放在config的子目录中。如果要客户端开机自启动,估计也有这一要求,不过我没有测试。

6 参考文档

6.1 OpenVPN Howto

6.2 OpenVPN FAQ

6.3 TCP/IP Fundamentals for Microsoft Windows

Visits: 14344

此条目发表在网络分类目录,贴了标签。将固定链接加入收藏夹。

OpenVPN连接两个局域网(使用Windows主机)》有4条回应

  1. 谢先生说:

    您好,我想下载下列操作系统对应的openvpn的版本地址
    服务端操作系统:Windows Server 2012 R2 64bit 服务端openvpn 下载链接
    客户端操作系统:Windows 8.1 Pro 64bit 客户端下载链接

  2. 说:

    作者,你好!我找了好久才找到一篇写两个路由器组建一个局域网的文章,但是无奈,我基本没有编程的底子,所以也看不懂你的这些命令行。
    现在我就遇到一个问题,就是我有两个路由器,都刷了padavan的固件,里面有一个openvpn服务器和OpenVPN客户端的设置,我现在在路由器A的OpenVPN服务器已经设置好了,用生成的证书在手机客户端上可以连接,组建一个局域网,能够访问路由器A下挂载的硬盘。
    但是在路由器B里面设置OpenVPN客户端,却总是连接不了路由器A,不知道是哪里出问题了,希望能够得到你的帮助,麻烦你了!

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

4 × 1 =