1 前言
工作原因,又要在宿舍和公司间搭建VPN通道。这一次还是用OpenVPN,用两台Windows主机分别作服务器和客户端,下面是拓扑图。
如果所示,服务端在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: 14617
您好,我想下载下列操作系统对应的openvpn的版本地址
服务端操作系统:Windows Server 2012 R2 64bit 服务端openvpn 下载链接
客户端操作系统:Windows 8.1 Pro 64bit 客户端下载链接
https://openvpn.net/community-downloads/ 需要科学上网
作者,你好!我找了好久才找到一篇写两个路由器组建一个局域网的文章,但是无奈,我基本没有编程的底子,所以也看不懂你的这些命令行。
现在我就遇到一个问题,就是我有两个路由器,都刷了padavan的固件,里面有一个openvpn服务器和OpenVPN客户端的设置,我现在在路由器A的OpenVPN服务器已经设置好了,用生成的证书在手机客户端上可以连接,组建一个局域网,能够访问路由器A下挂载的硬盘。
但是在路由器B里面设置OpenVPN客户端,却总是连接不了路由器A,不知道是哪里出问题了,希望能够得到你的帮助,麻烦你了!
这些设置与编程没关系,可能是哪里没配好。