Synology RT2600AC作为OpenVPN服务器时,如何保留路由配置以实现访问OpenVPN客户端局域网?
Synology RT2600AC作为OpenVPN服务器时,如何保留路由配置以实现访问OpenVPN客户端局域网?
兄弟,我太懂你这种头疼的情况了——远端路由器因为LTE的CGNAT没法当OpenVPN服务器,只能反过来连群晖RT2600AC的服务器,结果加好的路由每次重启就没了,本地网根本访不到远端的设备。别慌,给你几个靠谱的解决办法,都是能让配置持久化的:
方法一:用群晖Web界面加静态路由(最省心,不用碰命令行)
这是最稳妥的方式,直接在路由器系统里把路由存成静态的,重启也不会丢:
- 登录群晖RT2600AC的管理后台(一般输
router.synology.com就能进) - 找到「网络中心」→「静态路由」,点「新增」
- 按实际情况填信息:
- 目标网络:就是远端路由器后面的设备所在的局域网网段,比如你的远端设备都是
192.168.3.0/24,就填这个 - 网关:填远端OpenVPN客户端连上来后分配的固定VPN IP(你可以在群晖「VPN服务器」→「OpenVPN」→「客户端」列表里看到,或者提前给客户端分配固定IP)
- 接口:选OpenVPN对应的接口,一般是
tun0,或者直接选「VPN」分类里的对应项
- 目标网络:就是远端路由器后面的设备所在的局域网网段,比如你的远端设备都是
- 保存之后,这个路由就会一直存在,不管重启路由器还是OpenVPN服务都不会丢。
方法二:修改群晖OpenVPN服务器的配置模板(让服务器自动推送路由)
如果你想让所有连上来的OpenVPN客户端都能拿到这个路由,或者让服务器本身自动加载路由,就改服务器的配置模板:
- 先开群晖的SSH功能:进「系统管理」→「终端机和SNMP」,勾选「启用SSH服务」,设个端口(比如默认22就行)
- 用SSH工具登录路由器,用管理员账号密码进去
- 先备份原配置文件,以防改错:
cp /usr/syno/etc/packages/VPNCenter/openvpn/ovpn_template.conf /usr/syno/etc/packages/VPNCenter/openvpn/ovpn_template.conf.bak - 编辑模板文件:
vi /usr/syno/etc/packages/VPNCenter/openvpn/ovpn_template.conf - 在文件里加一行(替换成你远端的局域网网段):
这行是让服务器把远端子网的路由推送给所有客户端,如果你还需要群晖本地网络能访问远端,还要在服务器端加静态路由(参考方法一),或者在模板里加服务器端的路由指令:push "route 192.168.3.0 255.255.255.0"route 192.168.3.0 255.255.255.0 <客户端固定VPN IP> - 保存退出后,重启OpenVPN服务生效:
之后不管服务器怎么重启,这个配置都会自动加载。synoservicecfg --restart pkgctl-VPNCenter
方法三:用开机脚本自动加路由(适合复杂场景)
如果上面两种方法都不适用,比如你需要更灵活的路由逻辑,可以整个开机脚本,让路由器每次启动都自动加路由:
- 先给远端OpenVPN客户端分配固定VPN IP:进群晖「VPN服务器」→「OpenVPN」→「设置」→「静态IP地址分配」,添加客户端的通用名称(CN)和对应的固定IP,比如
10.8.0.6 - SSH登录路由器,创建一个脚本文件:
vi /usr/local/etc/rc.d/add_vpn_route.sh - 写入脚本内容(替换成你的远端网段和客户端固定VPN IP):
#!/bin/sh sleep 60 # 等OpenVPN服务完全启动再执行 ip route add 192.168.3.0/24 via 10.8.0.6 dev tun0 - 给脚本加执行权限:
这样路由器每次开机,都会自动跑这个脚本把路由加上,再也不用手动操作了。chmod +x /usr/local/etc/rc.d/add_vpn_route.sh
为啥你之前加的路由会丢?大概率是你直接修改的是客户端临时生成的配置文件,或者客户端的配置会被系统自动重置,所以必须在服务器端做持久化配置,或者用系统级的静态路由/脚本才行。
备注:内容来源于stack exchange,提问作者MJA




