前言
会点进来的同学对老毛子固件(Padavan)应该不陌生。老毛子固件里有搭建OpenVPN的功能,正确配置可以实现从公网使用移动终端访问自家的局域网。
实现拓扑
本例中希望实现的拓扑如图。使用移动终端,通过OpenVPN从外网连接家用路由器的WAN口地址(需要是公网IP),进而访问内网192.168.10.0/24
中搭建的各种服务。
怎么做
1. 启动OpenVPN服务
登录路由器的WebUI管理页面,找到左边的[VPN服务器],将[启用VPN服务器]开启,并在[VPN协议]中选择“OpenVPN”。
2. 访问内网的相关设置
绝大部分设置保持默认即可。设置完成后点击页面最下方的[应用本页面设置]保存设置。需要注意的是这里:
分配子网
这个地方如果选择“是(使用路由选择)”,那么在通过VPN访问上文拓扑图中的家用服务器时,服务器看到的将是源IP为VPN网络10.8.0.x
的client在访问自己。
如果选择“是(NAT到LAN)”,那么服务器看到的将是源IP为路由器网关IP,一般情况下也就是192.168.10.1
的client在访问自己。
推荐使用路由选择的方式,因为NAT消耗系统资源较多,对家用路由器负担较大。不过此时需要注意服务器的防火墙,需要设置为放行10.8.0.0/16
访问。
客户端访问
各个选项基本就是字面意思。需要注意的是“完全访问权限”包含了路由器自己。如果不想让外部设备访问到路由器,请按图中所示设置为“内网及互联网”。
3. 生成证书
在[OpenVPN证书和密钥]页面,输入以下信息后点[生成]。
Server CN: 你家路由器的DDNS域名(如果没有就申请一个吧!)
Bits: 非对称加密算法。默认选项是“RSA 1024”,也可以选择“EC ED25519”(椭圆曲线密码),保持安全性的同时生成会比较快一些。
Days valid: 证书过期日。想省事的话可直接设置为3650。
生成结束后,下方的文本框会出现证书信息。
4. 添加客户端账号
打开[客户端账号]选择卡,输入用户名和静态IP(我的版本好像设置了不起作用,但不写又不行),点右边的[+],然后点页面下方的[应用本页面设置]。
5. 连接VPN
点击上图中[导出client.ovpen],将配置文件下载到本地。
移动端下载安装OpenVPN客户端,然后导入下载的ovpen文件就可以连接了。
进阶设置
为客户端指定DNS
在[设置]页面点击[👉 OpenVPN 扩展配置],在最后一行加入以下文本后点击[应用本页面设置]:
push "dhcp-option DNS 8.8.8.8"
本例中,客户端连接OpenVPN后,会使用8.8.8.8
作为DNS地址。